# recyclerview-animators **Repository Path**: hihopeorg/recyclerview-animators ## Basic Information - **Project Name**: recyclerview-animators - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-27 - **Last Updated**: 2021-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # recyclerview-animators **本项目是基于开源项目recyclerview-animators进行ohos化的移植和开发的,可以通过项目标签以及github地址(https://github.com/wasabeef/recyclerview-animators )追踪到原项目版本** #### 项目介绍 - 项目名称:RecyclerView 的Item删除、增加动画。 - 所属系列:ohos的第三方组件适配移植 - 功能:支持20中Item删除和增加的动画,以及物种列表滚动动画。 - 项目移植状态:完成 - 调用差异:有 - 项目作者和维护人:hihope - 联系方式:hihope@hoperun.com - 原项目Doc地址:https://github.com/wasabeef/recyclerview-animators - 编程语言:Java - 外部库依赖:无 - 原项目基线版本:v4.0.1 , sha1:d0a66d26e94bda917354b2ff9cd4126fe45cb93d #### 演示效果 #### 安装教程 方法1. 1. 编译依赖库har包recyclerview-animators.har。 2. 启动 DevEco Studio,将编译的har包,导入工程目录“entry->libs”下。 3. 在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下har包的引用。 4. 在导入的har包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,并点击“OK”即引用成功。 ```java dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) } ``` 方法2. 1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址 ```java repositories { maven { url 'http://106.15.92.248:8081/repository/Releases/' } } ``` 2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码: ```java dependencies { implementation 'jp.wasabeef.ohos:recyclerview-animators:1.0.1' } ``` 方法2. 1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址 ``` repositories { maven { url 'http://106.15.92.248:8081/repository/Releases/' } } ``` 2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码: ``` dependencies { implementation 'jp.wasabeef.ohos:recyclerview-animators:1.0.0' } ``` #### 使用说明 1. 为自己的ListContainer创建Provider的时候要继承BaseProvider类 ``` public class MyItemProvider extends BaseProvider { public MyItemProvider(List data, Context context) { super(data, context); } @Override protected int getLayoutResId() { return ResourceTable.Layout_item_sample; } @Override protected int[] bindView() { return new int[]{ResourceTable.Id_text}; } @Override protected void initData(BaseProvider.ViewHolder holder, PictureEntity entity, int position) { Text text = (Text) holder.getViewById(ResourceTable.Id_text); text.setText(entity.getUrl()); } } ``` 2. 配置你想要的动画效果。 ```java MyItemProvider mProvider = new MyItemProvider(getData(), this); //配置动画 mProvider.setAnimator(new FadeInAnimator().createAnimator()); //也可自己设置动画时长 不设置默认500毫秒 FadeInAnimator animator= new FadeInAnimator().createAnimator().setDuration(5000); listContainer.setItemProvider(mProvider); //如果需要ListContainer列表滚动时有动画效果,否则可不进行一下步骤 private int lastVisibleItemPosition; //设置ListContainer的滚动监听 listContainer.setScrolledListener(this); @Override public void onContentScrolled(Component component, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { if (lastVisibleItemPosition < listContainer.getLastVisibleItemPosition()) { //当判断列表向下滑动的时候,开启Item的动画 mProvider.scrollAnimator(listContainer.getLastVisibleItemPosition()); } lastVisibleItemPosition = listContainer.getLastVisibleItemPosition(); int itemPosByVisibleIndex = listContainer.getItemPosByVisibleIndex(0); int visibleItemCount = listContainer.getVisibleIndexCount(); //刷新可见区域Item索引的范围 mProvider.refreshVisibleItem(itemPosByVisibleIndex + visibleItemCount - 1); } ``` 3. 新增Item,position是列表新增Item的索引 ```java mProvider.setAnimator(true); mProvider.addData(int position); ``` 其中通过baseDanmakuParser.load(dataSource)将数据源放入解析,`DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI)`为xml解析,`DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_ACFUN)`为json解析。 4. 删除Item,position是删除的Item数据的索引 ```java mProvider.setAnimator(true); mProvider.removeData(nt position); ``` #### 版本迭代 - v1.0.1 #### 版权和许可信息 - Apache Licence