android– 是否有支持TransitionAnimation的CircleImageView替代方案?

android– 是否有支持TransitionAnimation的CircleImageView替代方案?,第1张

概述我有ImageView.在onPostExecute中加载位图后,我调用setImageDrawable来填充带有图像的imageView(我使用CircleImageView).但TransitionDrawable仅显示第一个图像,并且没有执行任何事务.我该如何工作?提前致谢.privatevoidsetImageDrawable(ImageViewimageView,Bitmapbitmap)

我有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文档中对我不起作用:“使用带有circleimageVIEw的TransitionDrawable无法正常工作并导致图像混乱.”(https://github.com/hdodenhof/CircleImageView).

那么有人可以建议我通过淡入淡出的动画正常工作来获得圆形图像吗?

更新2:
我发现在两个圆形图像之间平滑过渡的解决方法是淡出第一个,然后用动画淡化第二个并发布延迟的runnable.这是代码示例.

fade_out.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);

希望它会有所帮助.

解决方法:

我自己尝试过以下代码,可以说它有效并且转换非常明显:

private voID setimageDrawable(ImageVIEw imageVIEw) {    Bitmap bitmap1 = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);    Bitmap bitmap2 = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);    new Canvas(bitmap1).drawRect(0, 0, 100, 100, mWhitePaint);    new Canvas(bitmap2).drawRect(0, 0, 100, 100, mBlackPaint);    BitmapDrawable drawable1 = new BitmapDrawable(getResources(), bitmap1);    BitmapDrawable drawable2 = new BitmapDrawable(getResources(), bitmap2);    TransitionDrawable TransitionDrawable = new TransitionDrawable(new Drawable[] {drawable1, drawable2});    imageVIEw.setimageDrawable(TransitionDrawable);    TransitionDrawable.startTransition(3000);}

请检查您的位图是否为空,它与mPlaceHolderBitmap(也不应为null)不同.另外,尝试将转换持续时间设置为3秒,因为可能200毫秒太快而无法看到转换本身.

总结

以上是内存溢出为你收集整理的android – 是否有支持TransitionAnimation的CircleImageView替代方案?全部内容,希望文章能够帮你解决android – 是否有支持TransitionAnimation的CircleImageView替代方案?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1118129.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存