gpt4 book ai didi

android - 在 ListView 项目中启动 AnimationDrawable。什么时候附上元素?

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:52 25 4
gpt4 key购买 nike

因此,过去几个小时我一直在阅读一些资料,我了解到在完全附加 Drawable/ImageView 之前在 AnimationDrawable 上调用 start() 不会启动动画。这似乎与通常的 UI 初始化过程非常一致(比如 View 的尺寸在添加 View 后立即返回为 0)。

我想当我尝试从适配器的 getView() 方法启动动画时,同样的问题也有问题。使用执行 start() 调用的延迟 Runnable 可以解决此问题,但显然不是理想的解决方案。

一旦 ListView 的项目“完全附加”,是否有任何方法可以接收回调?

最佳答案

根据documentation ,您必须等到 View 附加到窗口后才能开始动画。因此,您应该将 OnAttachStateChangeListener 添加到将在附加时执行的 View ,并从那里开始动画。

ImageView loadingImg = (ImageView)v.findViewById(R.id.image);
loadingImg.setBackgroundResource(R.drawable.progressdialog);
loadingImg.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
AnimationDrawable loadingAnimation = (AnimationDrawable) v.getBackground();
loadingAnimation.start();
}

@Override
public void onViewDetachedFromWindow(View v) {
}
});

我试过在 Viewpost() 方法中的 Runnable 中启动动画,但没有成功.上述方法是我在 ListView 中可靠地启动动画的唯一方法。

关于android - 在 ListView 项目中启动 AnimationDrawable。什么时候附上元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com