Files
StackLayoutManager/README_CN.md
2018-08-07 17:33:35 +08:00

123 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# StackLayoutManager
--------
一个实现了RecyclerView.LayoutManager的 Android 库,它能提供卡堆式展示效果。
![IMG](gif/sample1.gif)
![IMG](gif/sample2.gif)
Overview
--------
**StackLayoutManager** 有以下优点:
* **高性能**: 底层利用缓存机制循环利用滑出屏幕之外的视图提高视图渲染效率避免连续滑动后造成的OOM现象。
* **灵活性**: 支持向上、向下、向左、向右四个滑动方向的配置。
* **高自定义性**: 支持自定义动画、布局效果,只需要继承*StackAnimation*或*StackLayout*即可。
* **容易使用**: 只需要创建*StackLayoutManager*对象,赋值给*RecyclerView*对象即可。
Gradle integration
------------------
如果你使用 Gradle你可以在 gradle 文件中添加以下依赖:
```groovy
dependencies {
implementation 'com.littlemango:stacklayoutmanager:1.0.2'
}
```
基础使用
-----------
最简单的使用方法是直接调用*StackLayoutManager*的无参构造器实例化对象之后赋值给*RecyclerView*,默认的滑动方向是从右往左。
```java
StackLayoutManager manager = new StackLayoutManager();
recyclerView.setLayoutManager(manager);
```
高级使用
--------------
1. 你可以选择子控件滑出的方向:
```java
//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);
```
2. 你可以设置在静止时可以看到的子视图的最大数量:
```java
//在构造方法中指定可见数量
StackLayoutManager manager = new StackLayoutManager(ScrollOrientation.BOTTOM_TO_TOP, 3);
//或者在稍后的设置方法中修改
manager.setVisibleItemCount(3);
```
3. 你能修改子控件之间的间隔数值:
```java
manager.setItemOffset(50);
```
4. 你可以选择平滑还是立即滚动到指定位置,使用方法和其它 RecyclerView 一样,直接调用其相应方法:
```java
//平滑的滚动到指定位置
recyclerView.smoothScrollToPosition(3);
//立即滚动到指定位置,没有动画效果
recyclerView.scrollToPosition(3);
```
5. 你可以设置像 ViewPager 一样的翻页模式,或者是普通的连续滚动模式:
```java
manager.setPagerMode(true or false);
```
6. 当处于 ViewPager 翻页模式下,你可以设置触发翻页效果的最小滑动速度:
```java
manager.setPagerFlingVelocity(3000);
```
7. 为 StackLayoutManager 增加一个 item 位置变化时的回调:
```
mStackLayoutManager.setItemChangedListener(new StackLayoutManager.ItemChangedListener() {
@Override
public void onItemChanged(int position) {
mToast.setText("first visible item position is " + position);
mToast.show();
}
});
```
8. 如果你想自己实现动画效果,那么你可以继承自*StackAnimation*来定制动画效果,默认提供了[DefaultAnimation][DefaultAnimation]作为默认动画类:
```java
DefaultAnimation animation = new DefaultAnimation(ScrollOrientation.BOTTOM_TO_TOP, visibleCount);
manager.setAnimation(animation);
```
9. 如果你想自己实现布局效果,那么你可以继承自*StackLayout*来定制布局效果,默认提供了[DefaultLayout][DefaultLayout]作为默认布局类:
```java
StackLayoutManager manager = new StackLayoutManager(ScrollOrientation.BOTTOM_TO_TOP,
visibleCount,
DefaultAnimation.class,
DefaultLayout.class);
```
Sample
-------
你可以克隆或者下载该工程到电脑上,运行安装应用到手机上即可查看例子.
License
-------
MIT License
See [MIT License](LICENSE)
[DefaultLayout]: StackLayoutManager/src/main/java/com/littlemango/stacklayoutmanager/DefaultLayout.kt
[DefaultAnimation]: StackLayoutManager/src/main/java/com/littlemango/stacklayoutmanager/DefaultAnimation.kt