私はImageViewを持っています。onPostExecute でビットマップをロードした後、setImageDrawable を呼び出して imageView (CircleImageView を使用) を画像で埋めます。ただし、 TransitionDrawable は最初の画像のみを表示し、トランザクションは実行されません。これを機能させるにはどうすればよいですか?前もって感謝します。
private void setImageDrawable(ImageView imageView, Bitmap bitmap) {
if (mFadeInBitmap) {
BitmapDrawable drawable = null, placeholder = null;
if (bitmap != null) {
drawable = new BitmapDrawable(mResources, bitmap);
placeholder = new BitmapDrawable(mResources, mPlaceHolderBitmap);
}
final TransitionDrawable td =
new TransitionDrawable(new Drawable[] {
placeholder,
drawable,
});
imageView.setImageDrawable(td);
td.startTransition(200);
} else {
imageView.setImageBitmap(bitmap);
}
}
更新: CircleImageView のドキュメントで、それがうまくいかない理由を見つけました。)。
それで、フェードインアニメーションが適切に機能する円の画像を取得する方法を教えてもらえますか?
更新 2: 2 つの円の画像間のスムーズな移行を得るために私が見つけた回避策は、最初の画像をフェードアウトしてから、2 番目の画像をアニメーションでフェードインし、遅延ランナブルを投稿することです。コード例を次に示します。
フェードアウト.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="100"
android:interpolator="@android:anim/accelerate_interpolator"
/>
</set>
fade_in.xmlは、fromAlpha と toAlpha を場所ごとに変更する以外はほとんど同じです。その後、次のように、これらのアニメーションを円の画像ビューに適用します。
Animation anim = AnimationUtils.loadAnimation(mContext, R.anim.fade_out);
imageView.startAnimation(anim);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(value);//changing to different image ,here you will set image that you have loaded
Animation anim = AnimationUtils.loadAnimation(mContext, R.anim.fade_in);
imageView.startAnimation(anim);
}
}, 100);
それが役立つことを願っています。