【问题标题】:Strange effect with ImageView startAnimation in ListViewListView中ImageView startAnimation的奇怪效果
【发布时间】:2011-12-16 05:15:42
【问题描述】:

时不时来这里几个月后,终于轮到我提交我的问题了:

我有一个带有自定义 ArrayAdapter 的 ListView,它从 Internet 加载图像(每行一个图像)。我创建了一个 ImageCache 类,它在我的 ArrayAdapter 上调用 onImageLoaded 方法:

public void onImageLoaded(Bitmap image, ImageView view){
    view.setImageBitmap(image);
    Utils.log("start animation : " + view.toString());
    view.startAnimation(mAnim);
} 

问题是每次在一个 ImageView 上调用 startAnimation(假设是一个淡入)时,动画似乎从当前正在动画的所有 ImageView-s 上重新运行,导致几个(或所有)图像出现一些奇怪的闪烁滚动时。

Utils.log 说 startAnimation 是正常调用的(即 ListView 中出现的每个新 ImageView 只调用一次)。

我的动画 XML 的内容是这样的:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:shareInterpolator="true">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" android:duration="400"/>
</set>  

有人遇到过这种情况吗? 你能看出我做错了什么吗?

谢谢!

【问题讨论】:

    标签: android android-widget android-animation


    【解决方案1】:

    问题是加载动画并存储它而不是每次都创建一个新动画引起的。

    解决方案示例:

    public void onImageLoaded(位图图像​​,ImageView 视图){ view.setImageBitmap(图像); 动画fadeInAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in); view.startAnimation(fadeInAnimation); }

    注意这行代码对上面方法的依赖:

    动画fadeInAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in);

    【讨论】:

    • 是的,谢谢。我前段时间发现了它,应该把解决方案发回来,我的错。无论如何,谢谢,这可能对其他人有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 2019-06-11
    • 2011-11-01
    相关资源
    最近更新 更多