我将ImageView设置为 fragment 的背景(imageview在宽度和高度上均设置为match_parent),并且scaletype设置为centerCrop。我下载了一张图片以异步方式放入其中,并在完成下载后使用TransitionDrawable在它们之间进行淡入淡出。
图像第一次以正确的比例类型出现,但是,如果我导航到另一个 fragment ,然后以imageview为背景回到该 fragment ,则图像会出现扭曲/拉伸(stretch)(看起来好像imageView设置为fitXY)
如果我不使用TransitionDrawable,则图像将保持其应有的外观。
是否有一个TransitionDrawable等效项可以维持正确的宽高比?还是我需要在TransitionDrawable上进行设置以防止调整大小?
我真正想做的就是在图像之间进行很好的过渡。我正在考虑仅在完成动画后将图像设置到TransitionDrawable的第二层可绘制对象,但是无法监视动画何时完成...
编辑:我以为我要提到的图像是不一样的尺寸,不确定是否会有所不同
编辑2:这是设置可绘制对象的代码:
//code above to download image
BitmapDrawable bitmapDrawable = new BitmapDrawable(imageview.getResources(), bitmap);
TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[]{imageview.getDrawable(), bitmapDrawable});
imageview.setImageDrawable(transitionDrawable);
transitionDrawable.startTransition(300);
最佳答案
您是否在使用不同尺寸的图像?那可能是造成问题的原因。尝试使用相同尺寸的图像。
编辑:找到解决方案:使用setImageDrawable
命令后,您需要再次设置ImageView的比例类型。
BitmapDrawable bitmapDrawable = new BitmapDrawable(imageview.getResources(), bitmap);
TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[]{imageview.getDrawable(), bitmapDrawable});
imageview.setImageDrawable(transitionDrawable);
imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);
transitionDrawable.startTransition(300);