# 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