Android 设置回收视图高度的动画
是否可以设置RecyclerView高度的动画,或者以编程方式对其进行更改?例如,如果我有一个大标题视图,有时可见,有时不可见,我希望在标题设置动画时设置RecyclerView高度的动画以填充屏幕 更改LayoutParams.height似乎不起作用。LinearLayout动画更改会导致崩溃Android 设置回收视图高度的动画,android,animation,android-recyclerview,Android,Animation,Android Recyclerview,是否可以设置RecyclerView高度的动画,或者以编程方式对其进行更改?例如,如果我有一个大标题视图,有时可见,有时不可见,我希望在标题设置动画时设置RecyclerView高度的动画以填充屏幕 更改LayoutParams.height似乎不起作用。LinearLayout动画更改会导致崩溃 <LinearLayout> <RelativeLayout (header)> <RecyclerView> </LinearLayout>
<LinearLayout>
<RelativeLayout (header)>
<RecyclerView>
</LinearLayout>
我想让RelativeLayout动画化顶部(translationY),同时让recyclerview动画化,使其更高以适合自己。有可能解决此问题的选项:
setLayoutParams
将触发RecycleView+所有子帧的布局和测量过程,这意味着在每一个帧上,您将执行非常昂贵的工作,这很可能会导致帧丢失和糟糕的用户体验onMeasure
&layout
方法(实际上需要扩展RecyclerView类来实现这一点)
- 您可以在recyclerView中引入一些标志来测量自身是否比正常值高一点(多高-标题视图的确切高度)
- 当您需要为标题设置动画时-将您的标志设置为
并请求新布局。这将重新布局recyclerView,底部有一些不可见的部分true
- 现在,您可以对RecyclerView和Header的y平移设置动画,这样Header将移出屏幕,而RecyclerView将变高。这会让用户感觉到recyclerview“扩展”
- 动画完成后-将自定义标志设置为
,并将标题的可见性更改为false
,因为它现在已离开屏幕GONE
onMeasure
逻辑的一些信息:
选项2就是我最后要做的。自定义布局,可在测量前移动其子对象-允许我根据需要更改高度。真糟糕,这么难!是 啊在Android上,“成长”动画一直是个麻烦:(你能发布一些你用来解决问题的代码吗?当内容改变时,我需要改变RecyclerView的高度,但我不知道从哪里开始动画。