android expandablelistview 动画,的Android ExpandableListView使用动画

最后更新

它已经相当一段时间,因为我写了这个答案。从那以后很多变了。最大的变化是引入了RecyclerView,这使得动画列表或网格变得容易。如果可以,我强烈建议切换到RecyclerView。对于那些不能,我会看到我可以做什么来修复我的图书馆的错误。

原来的答复

我其实不喜欢流行的实现,仅仅使用一个ListView与扩大动画的动画ExpandableListView的,因为在我的使用情况下,我的每一个组有很多的孩子,因此使用正常的ListView是不可行的,因为子视图不会被回收,并且内存使用量会很大,而且性能较差。相反,我采用了更加困难但更具可扩展性和灵活性的方法。

我扩展了ExpandableListView类并覆盖了onCollapse和onExpand函数,我还创建了名为AnimatedExpandableListAdapter的BaseExpandableListAdapter的子类。在适配器内部,我重写了getChildView函数并使函数最终成功,以便函数不会再次被覆盖。相反,我提供了另一个称为getRealChildView的函数,用于子类重写以提供真实的子视图。然后我给该类添加了一个动画标志,并且如果设置了动画标志,getChildView将返回一个虚拟视图,如果该标志未设置,则返回真实视图。现在,随着舞台布景我做onExpand如下:

设置在适配器动画标志,告诉哪个组正在扩大适配器。

致电notifyDataSetChanged()(强制适配器在屏幕上为所有视图调用getChildView())。

适配器(动画模式下)将为初始高度为0的展开组创建一个虚拟视图。适配器将获得真实的子视图并将这些视图传递给虚拟视图。

虚拟视图将开始在其自己的onDraw()函数中绘制真实的子视图。

适配器将启动一个动画循环,该动画循环将展开虚拟视图,直到其尺寸合适。它还将设置一个动画侦听器,以便它可以在动画完成后清除动画标志,并且还会调用notifyDataSetChanged()。

最后有了这一切完成后,我不仅能够得到想要的动画效果也有理想表现,此方法将工作组拥有超过100名儿童。

对于折叠动画,需要做更多的工作才能完成所有设置和运行。特别是,当您覆盖onCollapse时,您不想调用父项的功能,因为它会立即折叠该组,从而无法播放动画。相反,您想要在折叠动画结束时调用super.onCollapse。

UPDATE:

我花了一些时间在本周末重写我实现这个AnimatedExpandableListView和我解除与这里的用法示例源: https://github.com/idunnololz/AnimatedExpandableListView/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值