android - 动画不会在当前可见的 ListView 项目中启动

标签 android animation

我被卡住了,而且我无法在任何地方找到解决方案。 :(

我的 ListView ( GridView ) 的每个项目的布局中都有一个 ImageView,由 BaseAdapter 提供。 加载图像后,我使用

将加载的 BitmapDrawable 分配给 ImageView
imageView.setImageDrawable( newImage );

项目弹出没有任何问题。

但是如果我通过使用 TransitionDrawable 或通过分配一个简单的动画来分配新的 BitmapDrawable:

//this is inoperative - animation will not start for currently displayed items! No solution found :(
Animation a = LibResource.getResourceAnimation( activity, R.anim.fade_in );
imageView.setImageDrawable( newImage );
imageView.startAnimation( a );

我的 GridView 的当前显示项的动画不会启动。 如果我向下滚动 GridView 并将其滚动回提到的项目,则会显示图像并执行动画!

我已经尝试过以下修复:

imageView.invalidateDrawable( newImage );
imageView.invalidate();

在分配动画后我也尝试了以下语句 - 当然,我在 UI 线程上调用它们,在 UI 线程上分配和启动动画之后:

myGridView.invalidate();
myGridView.invalidateViews();
myGridView.getAdapter().notifyDataSetChanged();

如前所述,此问题仅发生在我的 ListView 中的可见项上。

为什么 Animation 或 TransitionDrawable 不启动,即使在对所有相关 View 调用 invalidate() 等之后也是如此?

问题出现在我的 XPeria-Arc-S(API 级别 10)和 Android 模拟器 API 级别 8、9、10 中。这是 Android 系统中的错误吗?

如有任何帮助,我们将不胜感激!

提前致谢

克里斯托弗


好的 - 感谢您的快速回复。

我遇到了问题,经过大量时间重新组织我的代码结构以使其正常工作, 我发现这并没有解决我的问题:(。

除此之外,在创建 View 时更改内容对我来说不适用或非常实用。也许您对这个问题有任何其他解决方案?

真诚的

克里斯托弗

最佳答案

  1. 告诉适配器在下次请求 View 时为 View 设置动画。
  2. 调用invalidateViews()
  3. 当在适配器上调用 getView 时创建 View 并为其设置动画。

关于android - 动画不会在当前可见的 ListView 项目中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362487/

相关文章:

android - 无法启动服务 com.android.vending.billing.IMarketBillingService

c++ - 无法更新控制台应用程序中的窗口

ios - 动画 block 在更新文本后重置为原始位置

Android 的媒体播放器 : Why is an audio loop not staying synced with metronome playing at the same BPM?

java - 单击按钮停止动画

java - 如何使用内容uri检查文件是否存在

ios 键盘上方的动画栏

android - 可以双向使用 Otto 事件总线吗?

javascript - 当 opacity=false 时,图像流动画在 IE 上看起来很糟糕

javascript - 用元素之间的动画对拖放和连接箭头(或其他任何东西)使用react