package com.beloo.widget.chipslayoutmanager.layouter;
|
|
import android.graphics.Rect;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import com.beloo.widget.chipslayoutmanager.ChipsLayoutManager;
|
import com.beloo.widget.chipslayoutmanager.anchor.AnchorViewState;
|
import com.beloo.widget.chipslayoutmanager.gravity.IGravityModifiersFactory;
|
import com.beloo.widget.chipslayoutmanager.gravity.IRowStrategy;
|
import com.beloo.widget.chipslayoutmanager.layouter.breaker.IBreakerFactory;
|
import com.beloo.widget.chipslayoutmanager.cache.IViewCacheStorage;
|
import com.beloo.widget.chipslayoutmanager.layouter.criteria.ICriteriaFactory;
|
import com.beloo.widget.chipslayoutmanager.layouter.placer.IPlacerFactory;
|
|
class RTLRowsCreator implements ILayouterCreator {
|
|
private RecyclerView.LayoutManager layoutManager;
|
|
RTLRowsCreator(RecyclerView.LayoutManager layoutManager) {
|
this.layoutManager = layoutManager;
|
}
|
|
//---- up layouter below
|
@Override
|
public Rect createOffsetRectForBackwardLayouter(AnchorViewState anchor) {
|
Rect anchorRect = anchor.getAnchorViewRect();
|
|
return new Rect(
|
//we shouldn't include anchor view here, so anchorLeft is a rightOffset
|
anchorRect == null ? 0 : anchorRect.right,
|
anchorRect == null ? 0 : anchorRect.top,
|
0,
|
anchorRect == null ? 0 : anchorRect.bottom);
|
}
|
|
@Override
|
public AbstractLayouter.Builder createBackwardBuilder() {
|
return RTLUpLayouter.newBuilder();
|
}
|
|
//---- down layouter below
|
|
@Override
|
public AbstractLayouter.Builder createForwardBuilder() {
|
return RTLDownLayouter.newBuilder();
|
}
|
|
@Override
|
public Rect createOffsetRectForForwardLayouter(AnchorViewState anchor) {
|
Rect anchorRect = anchor.getAnchorViewRect();
|
|
return new Rect(
|
0,
|
anchorRect == null ? anchor.getPosition() == 0 ? layoutManager.getPaddingTop() : 0 : anchorRect.top,
|
anchorRect == null ? layoutManager.getPaddingRight() : anchorRect.right,
|
anchorRect == null ? anchor.getPosition() == 0 ? layoutManager.getPaddingBottom() : 0 : anchorRect.bottom);
|
}
|
}
|