Android 动画 - 将对象移近
Android Animations - Moving objects closer
我一直在尝试在 scenario 之后制作动画。基本上我想从一些开始
ImageViews 垂直排列并在屏幕上展开,在执行特定操作(按下按钮等)后,它们应该 靠近 。值得一提的是,ImageView 的数量 可能会因情况而异(并不像图片中那样总是 3 个),因此最好使用通用解决方案。
我的第一个方法是在 Recyclerview and spread the images with a custom ItemDecoration 中列出图像,如下所示:
class CustomItemDecorator(private val spaceHeight: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
with(outRect) {
if (parent.getChildAdapterPosition(view) == 0) {
top = spaceHeight
}
bottom = spaceHeight
}
}
}
通过删除 ItemDecorator ( myRecyclerView.removeItemDecoration(my_decorator)
)
我能够将图像 拉近 。
尽管为了改善用户体验,这对任意数量的图像都可以正常工作,但我想 动画化 这种过渡。我尝试将一些更复杂的动画应用到我的 RecyclerView,但直到现在都没有任何效果。
我很乐意提出任何建议:-)
对于设备运行 Android 5+(API级别21+),您可以使用TransitionManager
实现流畅的动画:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
TransitionManager.beginDelayedTransition(sceneRoot as ViewGroup, Slide())
}
recyclerView.removeItemDecoration(itemDecorator)
这里,itemDecorator 是要删除的 CustomItemDecorator
实例,sceneRoot 是 ViewGroup
是所有 View
的(直接或间接)父级,属性(可见性、位置、大小)的更改应为其设置动画。
阅读更多关于 Transition
s 的动画:
我一直在尝试在 scenario 之后制作动画。基本上我想从一些开始 ImageViews 垂直排列并在屏幕上展开,在执行特定操作(按下按钮等)后,它们应该 靠近 。值得一提的是,ImageView 的数量 可能会因情况而异(并不像图片中那样总是 3 个),因此最好使用通用解决方案。
我的第一个方法是在 Recyclerview and spread the images with a custom ItemDecoration 中列出图像,如下所示:
class CustomItemDecorator(private val spaceHeight: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
with(outRect) {
if (parent.getChildAdapterPosition(view) == 0) {
top = spaceHeight
}
bottom = spaceHeight
}
}
}
通过删除 ItemDecorator ( myRecyclerView.removeItemDecoration(my_decorator)
)
我能够将图像 拉近 。
尽管为了改善用户体验,这对任意数量的图像都可以正常工作,但我想 动画化 这种过渡。我尝试将一些更复杂的动画应用到我的 RecyclerView,但直到现在都没有任何效果。
我很乐意提出任何建议:-)
对于设备运行 Android 5+(API级别21+),您可以使用TransitionManager
实现流畅的动画:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
TransitionManager.beginDelayedTransition(sceneRoot as ViewGroup, Slide())
}
recyclerView.removeItemDecoration(itemDecorator)
这里,itemDecorator 是要删除的 CustomItemDecorator
实例,sceneRoot 是 ViewGroup
是所有 View
的(直接或间接)父级,属性(可见性、位置、大小)的更改应为其设置动画。
阅读更多关于 Transition
s 的动画: