use of android.support.v7.widget.helper.ItemTouchHelper.RIGHT in project android-parallax-recyclerview by kanytu.
the class HeaderLayoutManagerFixed method fill.
/**
* The magic functions :). Fills the given layout, defined by the renderState. This is fairly
* independent from the rest of the {@link android.support.v7.widget.LinearLayoutManager}
* and with little change, can be made publicly available as a helper class.
*
* @param recycler Current recycler that is attached to RecyclerView
* @param renderState Configuration on how we should fill out the available space.
* @param state Context passed by the RecyclerView to control scroll steps.
* @param stopOnFocusable If true, filling stops in the first focusable new child
* @return Number of pixels that it added. Useful for scoll functions.
*/
private int fill(RecyclerView.Recycler recycler, RenderState renderState, RecyclerView.State state, boolean stopOnFocusable) {
// max offset we should set is mFastScroll + available
final int start = renderState.mAvailable;
if (renderState.mScrollingOffset != RenderState.SCOLLING_OFFSET_NaN) {
// TODO ugly bug fix. should not happen
if (renderState.mAvailable < 0) {
renderState.mScrollingOffset += renderState.mAvailable;
}
recycleByRenderState(recycler, renderState);
}
int remainingSpace = renderState.mAvailable + renderState.mExtra + mHeaderIncrementFixer;
while (remainingSpace > 0 && renderState.hasMore(state)) {
View view = renderState.next(recycler);
if (view == null) {
if (DEBUG && renderState.mScrapList == null) {
throw new RuntimeException("received null view when unexpected");
}
// no more items to layout.
break;
}
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) view.getLayoutParams();
if (!params.isItemRemoved() && mRenderState.mScrapList == null) {
if (mShouldReverseLayout == (renderState.mLayoutDirection == RenderState.LAYOUT_START)) {
addView(view);
} else {
addView(view, 0);
}
}
measureChildWithMargins(view, 0, 0);
int consumed = mOrientationHelper.getDecoratedMeasurement(view);
int left, top, right, bottom;
if (mOrientation == VERTICAL) {
if (isLayoutRTL()) {
right = getWidth() - getPaddingRight();
left = right - mOrientationHelper.getDecoratedMeasurementInOther(view);
} else {
left = getPaddingLeft();
right = left + mOrientationHelper.getDecoratedMeasurementInOther(view);
}
if (renderState.mLayoutDirection == RenderState.LAYOUT_START) {
bottom = renderState.mOffset;
top = renderState.mOffset - consumed;
} else {
top = renderState.mOffset;
bottom = renderState.mOffset + consumed;
}
} else {
top = getPaddingTop();
bottom = top + mOrientationHelper.getDecoratedMeasurementInOther(view);
if (renderState.mLayoutDirection == RenderState.LAYOUT_START) {
right = renderState.mOffset;
left = renderState.mOffset - consumed;
} else {
left = renderState.mOffset;
right = renderState.mOffset + consumed;
}
}
// We calculate everything with View's bounding box (which includes decor and margins)
// To calculate correct layout position, we subtract margins.
layoutDecorated(view, left + params.leftMargin, top + params.topMargin, right - params.rightMargin, bottom - params.bottomMargin);
if (DEBUG) {
Log.d(TAG, "laid out child at position " + getPosition(view) + ", with l:" + (left + params.leftMargin) + ", t:" + (top + params.topMargin) + ", r:" + (right - params.rightMargin) + ", b:" + (bottom - params.bottomMargin));
}
renderState.mOffset += consumed * renderState.mLayoutDirection;
if (!params.isItemRemoved()) {
renderState.mAvailable -= consumed;
// we keep a separate remaining space because mAvailable is important for recycling
remainingSpace -= consumed;
}
if (renderState.mScrollingOffset != RenderState.SCOLLING_OFFSET_NaN) {
renderState.mScrollingOffset += consumed;
if (renderState.mAvailable < 0) {
renderState.mScrollingOffset += renderState.mAvailable;
}
recycleByRenderState(recycler, renderState);
}
if (stopOnFocusable && view.isFocusable()) {
break;
}
if (state != null && state.getTargetScrollPosition() == getPosition(view)) {
break;
}
}
if (DEBUG) {
validateChildOrder();
}
return start - renderState.mAvailable;
}
use of android.support.v7.widget.helper.ItemTouchHelper.RIGHT in project platform_packages_apps_Settings by BlissRoms.
the class InputMethodAndSubtypeEnabler method onCreate.
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
// Input method id should be available from an Intent when this preference is launched as a
// single Activity (see InputMethodAndSubtypeEnablerActivity). It should be available
// from a preference argument when the preference is launched as a part of the other
// Activity (like a right pane of 2-pane Settings app)
final String targetImi = getStringExtraFromIntentOrArguments(android.provider.Settings.EXTRA_INPUT_METHOD_ID);
final PreferenceScreen root = getPreferenceManager().createPreferenceScreen(getPrefContext());
mManager = new InputMethodAndSubtypeEnablerManager(this);
mManager.init(this, targetImi, root);
setPreferenceScreen(root);
}
use of android.support.v7.widget.helper.ItemTouchHelper.RIGHT in project DragListView by woxblom.
the class BoardView method getClosestSnapColumn.
private int getClosestSnapColumn() {
int column = 0;
int minDiffX = Integer.MAX_VALUE;
for (int i = 0; i < mLists.size(); i++) {
View listParent = (View) mLists.get(i).getParent();
int diffX = 0;
switch(mSnapPosition) {
case LEFT:
int leftPosX = getScrollX();
diffX = Math.abs(listParent.getLeft() - leftPosX);
break;
case CENTER:
int middlePosX = getScrollX() + getMeasuredWidth() / 2;
diffX = Math.abs(listParent.getLeft() + mColumnWidth / 2 - middlePosX);
break;
case RIGHT:
int rightPosX = getScrollX() + getMeasuredWidth();
diffX = Math.abs(listParent.getRight() - rightPosX);
break;
}
if (diffX < minDiffX) {
minDiffX = diffX;
column = i;
}
}
return column;
}
use of android.support.v7.widget.helper.ItemTouchHelper.RIGHT in project DragListView by woxblom.
the class BoardView method moveColumn.
private void moveColumn(final int fromIndex, final int toIndex) {
DragItemRecyclerView list = mLists.remove(fromIndex);
mLists.add(toIndex, list);
View header = mHeaders.remove(fromIndex);
mHeaders.add(toIndex, header);
final View column1 = mColumnLayout.getChildAt(fromIndex);
final View column2 = mColumnLayout.getChildAt(toIndex);
mColumnLayout.removeViewAt(fromIndex);
mColumnLayout.addView(column1, toIndex);
mColumnLayout.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
mColumnLayout.removeOnLayoutChangeListener(this);
column2.setTranslationX(column2.getTranslationX() + column1.getLeft() - column2.getLeft());
column2.animate().translationX(0).setDuration(350).start();
}
});
if (mBoardListener != null) {
mBoardListener.onColumnDragChangedPosition(fromIndex, toIndex);
}
}
use of android.support.v7.widget.helper.ItemTouchHelper.RIGHT in project DragListView by woxblom.
the class BoardView method scrollToColumn.
public void scrollToColumn(int column, boolean animate) {
if (mLists.size() <= column) {
return;
}
View parent = (View) mLists.get(column).getParent();
int newX = 0;
switch(mSnapPosition) {
case LEFT:
newX = parent.getLeft();
break;
case CENTER:
newX = parent.getLeft() - (getMeasuredWidth() - parent.getMeasuredWidth()) / 2;
break;
case RIGHT:
newX = parent.getRight() - getMeasuredWidth();
break;
}
int maxScroll = mRootLayout.getMeasuredWidth() - getMeasuredWidth();
newX = newX < 0 ? 0 : newX;
newX = newX > maxScroll ? maxScroll : newX;
if (getScrollX() != newX) {
mScroller.forceFinished(true);
if (animate) {
mScroller.startScroll(getScrollX(), getScrollY(), newX - getScrollX(), 0, SCROLL_ANIMATION_DURATION);
ViewCompat.postInvalidateOnAnimation(this);
} else {
scrollTo(newX, getScrollY());
}
}
int oldColumn = mCurrentColumn;
mCurrentColumn = column;
if (mBoardListener != null && oldColumn != mCurrentColumn) {
mBoardListener.onFocusedColumnChanged(oldColumn, mCurrentColumn);
}
}
Aggregations