首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TransitionDrawable设置ImageView ScaleType

用TransitionDrawable设置ImageView ScaleType
EN

Stack Overflow用户
提问于 2015-05-16 01:44:48
回答 1查看 1.2K关注 0票数 5

我有这样的代码来交叉淡出ImageView的背景:

代码语言:javascript
复制
private void setWithCrossfade(Bitmap bitmap) {
    //create drawable vector
    Drawable backgrounds[] = new Drawable[2];
    //getting first image
    backgrounds[0] = mImageView.getDrawable();
    backgrounds[1] = new BitmapDrawable(mImageView.getResources(), bitmap);

    TransitionDrawable transitionDrawable = new TransitionDrawable(backgrounds);
    transitionDrawable.setCrossFadeEnabled(true);

    mImageView.setAdjustViewBounds(false);
    mImageView.setImageDrawable(transitionDrawable);
    //it is needed to reset scale type
    mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    //start crossfading
    transitionDrawable.startTransition(250);
}

在XML布局中,ImageView scaleType设置为centerCrop。但是,当交叉渐变结束时,新的位图将设置为fitXY。在其他线程中,他们说可以通过重置scaleType来解决这个问题,但是它也不起作用。在内存方面,调整位图的大小并不是一个合适的解决方案。有什么解决办法来实现这一点吗?非常感谢。

请不要建议交叉衰落2 ImageViews,或使用ViewSwitcher谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 09:19:58

我也有同样的问题。问题是,TransitionDrawable需要两个大小相同的绘图。如果它不是相同的大小,它延伸到第一个图像的大小。毕加索已经处理好了。因此,我从毕加索获取PicassoDrawable,首先设置占位符,然后设置位图。

代码语言:javascript
复制
PicassoDrawable.setPlaceholder(imageView, placeholderDrawable);
PicassoDrawable.setBitmap(imageView, context, bitmap);

您可能需要将类和那些方法设置为public。另外,我还删除了一些仅与毕加索相关的方法。现在,它应该正确地淡出不同的图像大小。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30270997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档