我有这样的代码来交叉淡出ImageView的背景:
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谢谢。
发布于 2015-06-22 09:19:58
我也有同样的问题。问题是,TransitionDrawable需要两个大小相同的绘图。如果它不是相同的大小,它延伸到第一个图像的大小。毕加索已经处理好了。因此,我从毕加索获取PicassoDrawable,首先设置占位符,然后设置位图。
PicassoDrawable.setPlaceholder(imageView, placeholderDrawable);
PicassoDrawable.setBitmap(imageView, context, bitmap);您可能需要将类和那些方法设置为public。另外,我还删除了一些仅与毕加索相关的方法。现在,它应该正确地淡出不同的图像大小。
https://stackoverflow.com/questions/30270997
复制相似问题