View高度动画

有一个需求给View的高度做动画,参考了一个人的帖子,在实际使用中测试出了同源的另一个方法
原方法的核心是

rView.getLayoutParams().height = height
rView.requestLayout()

我测试的方法是

layoutParams.height = height;
rView.setLayoutParams(layoutParams);
rView.setBottom(rView.getTop() + height); //必须设置,否则getBottom还是原来的值,因为没有重新测量

然后问题来了requestLayout干啥用的?
当我们动态移动一个View的位置,或者View的大小、形状发生了变化的时候,我们可以在view中调用这个方法
从源码来看mMeasureCache.clear(),
从实际情况来看,子View调用了这个方法,其实会从View树重新进行一次测量、布局、绘制这三个流程,最终就会显示子View的最终情况
需要注意:如果当前View在请求布局的时候,View树正在进行布局流程的话,该请求会延迟到布局流程完成后或者绘制流程完成且下一次布局发现的时候再执行。

简而言之:
组件的尺寸变化了requestLayout
View确定自身不再适合当前区域,如LayoutParams发生了改变,需要父布局对其进行重新测量、布局、绘制这三个流程
组建的内容变化了invalidate
当前View进行重绘,不会进行测量、布局流程,因此如果View只需要重绘而不需要测量

你可能感兴趣的:(android前端笔记,android)