package com.beloo.widget.chipslayoutmanager.layouter; import android.graphics.Rect; import android.support.v7.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 LTRRowsCreator implements ILayouterCreator { private RecyclerView.LayoutManager layoutManager; LTRRowsCreator(RecyclerView.LayoutManager layoutManager) { this.layoutManager = layoutManager; } @Override public Rect createOffsetRectForBackwardLayouter(AnchorViewState anchor) { Rect anchorRect = anchor.getAnchorViewRect(); return new Rect( 0, anchorRect == null ? 0 : anchorRect.top, //we shouldn't include anchor view here, so anchorLeft is a rightOffset anchorRect == null ? 0 : anchorRect.left, anchorRect == null ? 0 : anchorRect.bottom); } @Override public Rect createOffsetRectForForwardLayouter(AnchorViewState anchor) { Rect anchorRect = anchor.getAnchorViewRect(); return new Rect( //we should include anchor view here, so anchorLeft is a leftOffset anchorRect == null ? layoutManager.getPaddingLeft() : anchorRect.left, anchorRect == null ? anchor.getPosition() == 0 ? layoutManager.getPaddingTop() : 0 : anchorRect.top, 0, anchorRect == null ? anchor.getPosition() == 0 ? layoutManager.getPaddingBottom() : 0 : anchorRect.bottom); } @Override public AbstractLayouter.Builder createBackwardBuilder() { return LTRUpLayouter.newBuilder(); } @Override public AbstractLayouter.Builder createForwardBuilder() { return LTRDownLayouter.newBuilder(); } }