如何在自定义视图中优化画布上的动画?

时间:2015-10-24 10:01:20

标签: android android-layout android-custom-view

我正在制作一个自定义视图,我希望在自定义视图中显示来自Facebook的单个帖子,它将包括发布帖子的人的姓名,更新时间,邮件本身或帖子内容以及一个让一个人用“阅读更多”文章展开或折叠帖子的句柄。或者'少阅读'取决于帖子有多大。 我的自定义视图的代码如下http://pastebin.com/VkxpfLnj,我的动画类看起来像这样http://pastebin.com/HsEadatY 消息部分的问题是它可能非常大,因此我需要一个扩展或折叠句柄。每次文本更改时,我都会创建一个新的StaticLayout对象。

我采用了3种动画方法

  1. 基于像素数量的差异,假设我的帖子在扩展之前是300像素高,并且在扩展后是700像素高,我只是在这两者之间动画,问题是我每次都要调用requestLayout并且每次扩张或收缩会产生40个电话
  2. 我尝试过的另一种方法是根据行数进行动画处理,如果扩展前有4行,扩展后有8行,我只需按行高*增加postview的高度(最终行数) - 初始行数)*插值时间,这种方法给了我一个只有10个req​​uestLayout()调用但是滞后动画。
  3. 根据我的ViewUtils动画方法,我当前的方法仅在动画的开头,中心和结尾调用requestLayout,每次展开或折叠时会产生大约12个requestLayout()调用。

    我如何使用静态布局或者在画布上绘制多条线,这样我可以在展开或折叠时淡入文本,同时将requestLayout()调用的数量保持在最低限度。如果可能的话,我还想让这个Canvas支持LTR和RTL。有什么建议吗?

0 个答案:

没有答案