android - Android:创建自定义recyclerview进入动画
问题描述
我正在尝试在 Android 的 RecyclerView 中重新创建我在网上找到的用于加载图片网格的动画。特别是,我正在尝试重新创建“Seker”运行效果。这是右侧底部的第三个选项:
https://tympanus.net/Development/GridLoadingAnimations/
我的应用程序中有一个回收站视图,显示了一个 2 列、3 行的图像网格,每当我第一次加载回收站视图项时,我希望以相同的“显示”效果显示这些图像。
我的第一个想法是创建一个项目动画 XML 和一个布局动画 XML,它将项目动画应用于布局中的每个子项:
项目动画 XML:
<alpha
android:duration="400"
android:fromAlpha="0"
android:interpolator="@android:anim/linear_interpolator"
android:toAlpha="1" />
<translate
android:fromYDelta="100"
android:toYDelta="0" />
<scale
android:fromXScale="80%"
android:fromYScale="80%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="100%"
android:toYScale="100%" />
布局动画 XML:
<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/item_animation_fall_down"
android:animationOrder="normal"
android:columnDelay="10%"
android:direction="top_to_bottom|left_to_right"
android:rowDelay="10%" />
然后我可以以编程方式触发布局动画:
private fun runLayoutAnimation() {
val context = recyclerView.context
val controller = AnimationUtils.loadLayoutAnimation(context, R.anim.layout_animation_xml)
recyclerView.layoutAnimation = controller
recyclerView.adapter?.notifyDataSetChanged()
recyclerView.scheduleLayoutAnimation()
}
至少可以说,它看起来不一样。当我查看我试图模仿的网络版本背后的代码时(耶开源!),它看起来是两个串联运行的动画:
'Seker': {
revealer: true,
revealerOrigin: '50% 100%',
animeRevealerOpts: {
duration: 500,
delay: function(t,i) {
return i*50;
},
easing: [0.7,0,0.3,1],
translateY: [100,0],
scaleY: [1,0]
},
animeOpts: {
duration: 500,
easing: [0.7,0,0.3,1],
delay: function(t,i) {
return i*50;
},
opacity: {
value: [0,1],
duration: 400,
easing: 'linear'
},
translateY: [100,0],
scale: [0.8,1]
}
}
https://github.com/codrops/GridLoadingAnimations/blob/master/js/main.js
动画不是我的强项,所以任何关于如何解决这个问题的建议都将不胜感激。
我的问题是:如何重新创建这些动画以加载回收站视图,尤其是因为它们似乎是两个动画?
解决方案
推荐阅读
- docker - Docker 多阶段构建不保留 RUN 命令的结果
- node.js - 如何解析微服务世界中书籍的作者姓名?
- r - 如何将多行excel单元格读入R
- elasticsearch - 使用 docker-compose 为 ELK 推荐的 RAM 比率
- node.js - 如何在 expressJS 中使用 chartjs 渲染数据
- python - 在 Azure ML Studio 中更新 pandas 会导致错误
- python-3.x - 当对象很大时 pool.map 冻结
- python - 使用 pandas 将列附加到列
- c# - 控制请求对象解构的选项
- swift - 具有类绑定约束的泛型类不能通过类绑定协议参数化