私は画像のGridViewを持っています。イメージはダウンロード時に表示され、イメージにビットマップが設定されるとフェードイン効果を持たせたいと考えました。 これを行うためのコードを追加しましたが、アニメーションはその時点で読み込まれている画像だけでなく、すべての画像に適用されます。つまり、次のビットマップが設定され、アニメーションが再開すると、すべての画像がわずかに消えて消えることを意味します。アニメーションは、グリッド内のすべての画像ビューに適用されますか?
アニメーションは、その時点でロードされているイメージにのみ適用されるようにするにはどうすればよいですか?
フェードインXML:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2500" android:repeatCount="0"/>
</set>
そして、ここではImageAdapterで画像をロードするためのコードです:
public View getView(int position, View convertView, ViewGroup parent) {
try {
BorderedImageView imageView;
imageView = new BorderedImageView(mContext, mPhotoId, position);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(this.mContext , R.anim.fadein);
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView.setLayoutParams(new GridView.LayoutParams(mSize, mSize));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(3,3,3,3);
} else {
imageView = (BorderedImageView) convertView;
}
Bitmap b = photoCollection.GetThumbnail(position);
imageView.startAnimation(myFadeInAnimation);
imageView.setImageBitmap(b);
return imageView;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
これがなぜ起こるかEDIT OKが実際にそれは明らかだ - 私はよサムネイルがダウンロードされるたびにnotifydatasetchanged()を呼び出すので、上記のコードはダウンロードするたびにすべての画像に対して実行されます。 まだそれを修正する方法がまだわからない!
コードを投稿してください。 – beholderrk