当前位置: 首页>>代码示例>>Java>>正文


Java RecyclerView.SmoothScroller方法代码示例

本文整理汇总了Java中android.support.v7.widget.RecyclerView.SmoothScroller方法的典型用法代码示例。如果您正苦于以下问题:Java RecyclerView.SmoothScroller方法的具体用法?Java RecyclerView.SmoothScroller怎么用?Java RecyclerView.SmoothScroller使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在android.support.v7.widget.RecyclerView的用法示例。


在下文中一共展示了RecyclerView.SmoothScroller方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: snapFromFling

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
/**
 * 快速滚动的具体处理方案
 *
 * @param layoutManager 布局管理器
 * @param velocityX     X 轴滚动速率
 * @param velocityY     Y 轴滚动速率
 * @return 是否消费该事件
 */
private boolean snapFromFling(@NonNull RecyclerView.LayoutManager layoutManager, int velocityX,
                              int velocityY) {
    if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider)) {
        return false;
    }

    RecyclerView.SmoothScroller smoothScroller = createSnapScroller(layoutManager);
    if (smoothScroller == null) {
        return false;
    }

    int targetPosition = findTargetSnapPosition(layoutManager, velocityX, velocityY);
    if (targetPosition == RecyclerView.NO_POSITION) {
        return false;
    }

    smoothScroller.setTargetPosition(targetPosition);
    layoutManager.startSmoothScroll(smoothScroller);
    return true;
}
 
开发者ID:GcsSloop,项目名称:pager-layoutmanager,代码行数:29,代码来源:PagerGridSnapHelper.java

示例2: snapFromFling

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
/**
 * Helper method to facilitate for snapping triggered by a fling.
 *
 * @param layoutManager The {@link RecyclerView.LayoutManager} associated with the attached
 *                      {@link RecyclerView}.
 * @param velocityX     Fling velocity on the horizontal axis.
 * @param velocityY     Fling velocity on the vertical axis.
 * @return true if it is handled, false otherwise.
 */
private boolean snapFromFling(@NonNull RecyclerView.LayoutManager layoutManager, int velocityX,
                              int velocityY) {
    if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider)) {
        return false;
    }

    RecyclerView.SmoothScroller smoothScroller = createSnapScroller(layoutManager);
    if (smoothScroller == null) {
        return false;
    }

    int targetPosition = findTargetSnapPosition(layoutManager, velocityX, velocityY);
    if (targetPosition == RecyclerView.NO_POSITION) {
        return false;
    }

    smoothScroller.setTargetPosition(targetPosition);
    layoutManager.startSmoothScroll(smoothScroller);
    return true;
}
 
开发者ID:hanhailong,项目名称:GridPagerSnapHelper,代码行数:30,代码来源:SnapHelper.java

示例3: smoothScrollToPosition

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
public void smoothScrollToPosition(int position, final ScrollOptions options) {
    final RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(this.getContext()) {
        @Override
        protected int getVerticalSnapPreference() {
            return LinearSmoothScroller.SNAP_TO_START;
        }

        @Override
        public PointF computeScrollVectorForPosition(int targetPosition) {
            return ((LinearLayoutManager) this.getLayoutManager()).computeScrollVectorForPosition(targetPosition);
        }

        @Override
        protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
            if (options.millisecondsPerInch != null) {
                return options.millisecondsPerInch / displayMetrics.densityDpi;
            } else {
                return super.calculateSpeedPerPixel(displayMetrics);
            }
        }

        @Override
        public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) {
            int calc = super.calculateDtToFit(viewStart, viewEnd, boxStart, boxEnd, snapPreference);
            if (options.viewPosition != null) {
                int viewHeight = viewEnd - viewStart;
                int boxHeight = boxEnd - boxStart;
                float viewOffset = options.viewOffset != null ? PixelUtil.toPixelFromDIP(options.viewOffset) : 0;
                float target = boxStart + (boxHeight - viewHeight) * options.viewPosition + viewOffset;
                return (int) (target - viewStart);
            } else {
                return super.calculateDtToFit(viewStart, viewEnd, boxStart, boxEnd, snapPreference);
            }
        }
    };

    smoothScroller.setTargetPosition(position);
    this.getLayoutManager().startSmoothScroll(smoothScroller);
}
 
开发者ID:godness84,项目名称:react-native-recyclerview-list,代码行数:40,代码来源:RecyclerViewBackedScrollView.java

示例4: createSmoothScroller

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
@Override
public RecyclerView.SmoothScroller createSmoothScroller(@NonNull Context context, final int position, final int timeMs, final AnchorViewState anchor) {
    return new LinearSmoothScroller(context) {
        /*
         * LinearSmoothScroller, at a minimum, just need to know the vector
         * (x/y distance) to travel in order to get from the current positioning
         * to the target.
         */
        @Override
        public PointF computeScrollVectorForPosition(int targetPosition) {
            int visiblePosition = anchor.getPosition();
            //determine scroll up or scroll down needed
            return new PointF(position > visiblePosition ? 1 : -1, 0);
        }

        @Override
        protected void onTargetFound(View targetView, RecyclerView.State state, Action action) {
            super.onTargetFound(targetView, state, action);
            int currentLeft = layoutManager.getPaddingLeft();
            int desiredLeft = layoutManager.getDecoratedLeft(targetView);

            int dx = desiredLeft - currentLeft;

            //perform fit animation to move target view at top of layoutX
            action.update(dx, 0, timeMs, new LinearInterpolator());
        }
    };
}
 
开发者ID:sathishmscict,项目名称:ChipsLayoutManager,代码行数:29,代码来源:HorizontalScrollingController.java

示例5: smoothScrollToPosition

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
/**
 * {@inheritDoc}
 */
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, final int position) {
    if (position >= getItemCount() || position < 0) {
        Log.e("span layout manager", "Cannot scroll to " + position + ", item count " + getItemCount());
        return;
    }

    RecyclerView.SmoothScroller scroller = scrollingController.createSmoothScroller(recyclerView.getContext(), position, 150, anchorView);
    scroller.setTargetPosition(position);
    startSmoothScroll(scroller);
}
 
开发者ID:sathishmscict,项目名称:ChipsLayoutManager,代码行数:15,代码来源:ChipsLayoutManager.java

示例6: createSmoothScroller

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
@Override
public RecyclerView.SmoothScroller createSmoothScroller(@NonNull Context context, final int position, final int timeMs, final AnchorViewState anchor) {
    return new LinearSmoothScroller(context) {
        /*
         * LinearSmoothScroller, at a minimum, just need to know the vector
         * (x/y distance) to travel in order to get from the current positioning
         * to the target.
         */
        @Override
        public PointF computeScrollVectorForPosition(int targetPosition) {
            int visiblePosition = anchor.getPosition();
            //determine scroll up or scroll down needed
            return new PointF(0, position > visiblePosition ? 1 : -1);
        }

        @Override
        protected void onTargetFound(View targetView, RecyclerView.State state, Action action) {
            super.onTargetFound(targetView, state, action);
            int desiredTop = lm.getPaddingTop();
            int currentTop = lm.getDecoratedTop(targetView);

            int dy = currentTop - desiredTop;

            //perform fit animation to move target view at top of layout
            action.update(0, dy, timeMs, new LinearInterpolator());
        }
    };
}
 
开发者ID:sathishmscict,项目名称:ChipsLayoutManager,代码行数:29,代码来源:VerticalScrollingController.java

示例7: smoothScrollToPosition

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
@Override
public void smoothScrollToPosition(final RecyclerView recyclerView,
                                   final RecyclerView.State state,
                                   final int position) {
    RecyclerView.SmoothScroller smoothScroller =
            new CenterSmoothScroller(recyclerView.getContext());
    smoothScroller.setTargetPosition(position);
    startSmoothScroll(smoothScroller);
}
 
开发者ID:Applications-Development,项目名称:SimpleRssReader,代码行数:10,代码来源:CenterLayoutManager.java

示例8: createSmoothScroller

import android.support.v7.widget.RecyclerView; //导入方法依赖的package包/类
RecyclerView.SmoothScroller createSmoothScroller(@NonNull Context context, int position, int timeMs, AnchorViewState anchor); 
开发者ID:sathishmscict,项目名称:ChipsLayoutManager,代码行数:2,代码来源:IScrollingController.java


注:本文中的android.support.v7.widget.RecyclerView.SmoothScroller方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。