我有图像视图。在 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 文档中找到了为什么它对我不起作用的解决方案:“使用带有 CircleImageView 的 TransitionDrawable 不能正常工作并导致图像混乱。”(https://github.com/hdodenhof/CircleImageView)。
那么有人可以建议我如何让动画淡入淡出的圆形图像正常工作吗?
更新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);
希望它会有所帮助。