是否可以为expandableListView应用展开或折叠动画?animation for expandableListView
回答
可以使用包含最初隐藏视图的简单ListView和扩展Animation的自定义类来完成。 基本思路是从View.GONE
开始,然后逐渐将边距从负值重新调整为所需的大小,同时将可见性设置为View.VISIBLE
。
参见:
- https://github.com/tjerkw/Android-SlideExpandableListView
- Android Animation: Hide/Show Menu
- How do I animate View.setVisibility(GONE)
..和最后
最后一个例子包含您需要的所有代码。它对我来说看起来有些ha especially,特别是你必须首先设置view.bottomMargin = -50
或更多,否则动画第一次不能正常工作,但到目前为止我没有找到任何可行的替代方法(除了使用自己的ScrollView容器项而不是ListView)。
最后,这个程序包括上面的例子中,很多的链接其他有用的例子源之间:
更新:谷歌删除从Play商店应用据称智力财产违规(虽然它只包含演示和链接到开源项目),作者现在提供apk可直接从http://goo.gl/ihcgs 下载欲了解更多详情,请参阅https://plus.google.com/108176685096570584154/posts。注意:我不属于作者。
感谢您的UI模式应用程序链接。 – howettl 2012-05-01 21:30:46
但是这会失去使用listView的全部观点,因为组中的所有项目(您展开的)都必须位于其中。如果你有很多项目,你也需要在那里创建很多视图... – 2013-12-31 15:31:47
@android developer:你可能会更好使用ScrollView,使用视图填充它并将动画应用到它们上需要。 ListView是一个为大型列表优化的复杂组件;如果您只有多达12个项目,那么滚动视图可能更容易生成动画 - 根据需要制作自己的块组件并为其中的视图制作动画。与ListView相比,主要的缺点是android不会创建/销毁您的项目,因为它们滚动进出视图区域,并且容器不会被重用,但是如果您有几件物品,这不是什么大问题。 – ccpizza 2014-01-01 22:46:51
我为一个简单的列表视图做了类似的工作。为此,我重写了getView方法并在每个列表项上应用了向上(或向下)的动画翻译。翻译的程度取决于列表的位置项目。
https://github.com/idunnololz/AnimatedExpandableListView/ – 2015-06-29 11:00:59
我发现了一个可能的(部分)解决此问题的解决方法。
首先你需要存储的ExpnadableListView的滚动状态:
@Override
public void onScrollStateChanged(final AbsListView view, final int scrollState) {
this.mScrollState = scrollState;
}
public int getScrollState() {
return this.mScrollState;
}
为ListView本身,你需要存储被点击了哪个组,以便只有它的孩子会得到动画:
mListView.setOnGroupClickListener(...
@Override
public boolean onGroupClick(...){
mGroupPosition=groupPosition;
现在,在getChildView()方法,你检查的滚动的状态,如果是闲置时,启动动画,例如:
public View getChildView(...) {
// <=prepare rootView and return it later
if (groupPosition==mGroupPosition&&getScrollState() == OnScrollListener.SCROLL_STATE_IDLE)
rootView.setAnimation(...)
这将在您每次展开组时为子视图设置一个动画。
的这个缺点是:只为扩大孩子的意见
- 。您需要考虑额外的逻辑来在折叠组时对其进行动画处理。
- 所有动画立即开始。如果您希望它可以起作用,您将需要一个接一个地添加多个动画。
- 1. Fly In Animation for GridView
- 2. SimpleCursorTreeAdapter for ExpandableListView
- 3. ExpandableListView Mono for Android,ClickEvents
- 4. CustomAdapter for ExpandableListView使用CompoundDrawable
- 5. Android ExpandableListView onClickListener for Group行
- 6. ApplicationBar Animation
- 7. JQuery Animation
- 8. Uipagecontrol animation
- 9. SurfaceView Animation
- 10. jQuery Animation
- 11. ExpandableListView
- 12. Java Swing Animation without Thread.sleep
- 13. Animation in viewDidAppear
- 14. deleteRowsAtIndexPaths without animation
- 15. android resize animation
- 16. Raphael Sequential Animation
- 17. Word by word animation
- 18. Angular Disable Animation
- 19. TextBox TranslateTransform Animation
- 20. Angular Animation Directive
- 21. AS3 tweener animation jerking
- 22. Arc Animation Loading
- 23. Animation SVG or Canvas?
- 24. XNA spritesheet animation
- 25. Seamless SVG Animation
- 26. CABasic Animation Rotation
- 27. PAGECURL ANIMATION SUBTYPE
- 28. Core Animation和drawRect:
- 29. Irrlicht Human Mesh Animation
- 30. WPF Choppy/Jerky Animation
我不认为有可能使行之间的间隙设置为动画,但我将幻灯片左/右动画放在作为孩子显示的视图上。这只有真正的作用,因为只有一个孩子。 – skorulis 2011-03-04 05:59:46