Files
StackLayoutManager/README_CN.md
2018-11-04 20:31:56 +08:00

3.9 KiB
Raw Permalink Blame History

StackLayoutManager


一个实现了RecyclerView.LayoutManager的 Android 库,它能提供卡堆式展示效果。

IMG IMG

Overview

StackLayoutManager 有以下优点:

  • 高性能: 底层利用缓存机制循环利用滑出屏幕之外的视图提高视图渲染效率避免连续滑动后造成的OOM现象。
  • 灵活性: 支持向上、向下、向左、向右四个滑动方向的配置。
  • 高自定义性: 支持自定义动画、布局效果,只需要继承StackAnimationStackLayout即可。
  • 容易使用: 只需要创建StackLayoutManager对象,赋值给RecyclerView对象即可。

Gradle integration

如果你使用 Gradle你可以在 gradle 文件中添加以下依赖:

dependencies {
    implementation 'com.littlemango:stacklayoutmanager:1.0.5'
}

基础使用

最简单的使用方法是直接调用StackLayoutManager的无参构造器实例化对象之后赋值给RecyclerView,默认的滑动方向是从右往左。

StackLayoutManager manager = new StackLayoutManager();

recyclerView.setLayoutManager(manager);

高级使用

  1. 你可以选择子控件滑出的方向:
//orientation can be one of ScrollOrientation.BOTTOM_TO_TOP or TOP_TO_BOTTOM or RIGHT_TO_LEFT or LEFT_TO_RIGHT
ScrollOrientation orientation = ScrollOrientation.BOTTOM_TO_TOP

StackLayoutManager manager = new StackLayoutManager(orientation);

recyclerView.setLayoutManager(manager);
  1. 你可以设置在静止时可以看到的子视图的最大数量:
//在构造方法中指定可见数量
StackLayoutManager manager = new StackLayoutManager(ScrollOrientation.BOTTOM_TO_TOP, 3);

//或者在稍后的设置方法中修改
manager.setVisibleItemCount(3);
  1. 你能修改子控件之间的间隔数值:
manager.setItemOffset(50);
  1. 你可以选择平滑还是立即滚动到指定位置,使用方法和其它 RecyclerView 一样,直接调用其相应方法:
//平滑的滚动到指定位置
recyclerView.smoothScrollToPosition(3);

//立即滚动到指定位置,没有动画效果
recyclerView.scrollToPosition(3);
  1. 你可以设置像 ViewPager 一样的翻页模式,或者是普通的连续滚动模式:
manager.setPagerMode(true or false);
  1. 当处于 ViewPager 翻页模式下,你可以设置触发翻页效果的最小滑动速度:
manager.setPagerFlingVelocity(3000);
  1. 为 StackLayoutManager 增加一个 item 位置变化时的回调:
mStackLayoutManager.setItemChangedListener(new StackLayoutManager.ItemChangedListener() {
    @Override
    public void onItemChanged(int position) {
        mToast.setText("first visible item position is " + position);
        mToast.show();
    }
});
  1. 如果你想自己实现动画效果,那么你可以继承自StackAnimation来定制动画效果,默认提供了DefaultAnimation作为默认动画类:
DefaultAnimation animation = new DefaultAnimation(ScrollOrientation.BOTTOM_TO_TOP, visibleCount);
manager.setAnimation(animation);
  1. 如果你想自己实现布局效果,那么你可以继承自StackLayout来定制布局效果,默认提供了DefaultLayout作为默认布局类:
StackLayoutManager manager = new StackLayoutManager(ScrollOrientation.BOTTOM_TO_TOP, 
                visibleCount,
                DefaultAnimation.class,
                DefaultLayout.class);

Sample

你可以克隆或者下载该工程到电脑上,运行安装应用到手机上即可查看例子.

或者你可以扫码安装示例APK

IMG

License

MIT License See MIT License