Sli*_*ind 2 animation android listview
我正在做一个基于ListView的小型Android应用程序.当用户选择列表中的一个或多个元素并随后从ActionBar中选择一个菜单项时,我想对列表中的选定元素执行一个小动画,这就是出错的地方.
什么都没有动画 - 也没有任何失败.以下代码片段是我正在做的简化版本:
private void animateListViewItem()
{
TranslateAnimation anim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f);
anim.setDuration(2000);
View v = fragment.getListAdapter().getView(fragment.getListView().getFirstVisiblePosition(), null, null);
v.startAnimation(anim);
}
Run Code Online (Sandbox Code Playgroud)
当我搞砸了它,试图弄清楚什么是错的时候,我在某一点上用整个ListView替换了项目以排除动画作为问题的根源 - 就像这样.
private void animateListViewItem()
{
TranslateAnimation anim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f);
anim.setDuration(2000);
fragment.getListView().startAnimation(anim);
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,这完美无缺!
所以我的问题是 - 为什么我不能动画ListView中的各个元素?或者我做错了什么?
谢谢!
PS为了记录,ListView填充了自定义视图(LinearLayouts),我已经检查过我在动画制作之前得到了正确的项目.
我发现了问题所在:
View v = fragment.getListAdapter().getView(fragment.getListView().getFirstVisiblePosition(), null, null);
Run Code Online (Sandbox Code Playgroud)
这条线就是问题所在.它返回一个新的, View以显示列表中指定位置的基础数据而不是现有数据 View.所以返回View与列表无关.
而是这样做:
View v = fragment.getListView().getChildAt(fragment.getListView().getFirstVisiblePosition());
Run Code Online (Sandbox Code Playgroud)
找到我View正在使用的列表,动画按预期工作.