我将ImageView设置为片段的背景(在宽度和高度上将imageview设置为match_parent),并将scaletype设置为centerCrop。我下载了一个异步放入的图像,并在完成下载后使用TransitionDrawable进行交叉淡入淡出。
图像第一次出现时带有正确的比例尺,但是如果我导航到另一个片段然后回到此片段并将imageview作为背景,则图像会出现扭曲/拉伸(看起来像imageView被设置为适合XYX而不是)
如果我不使用TransitionDrawable,图像会保持原样。
是否有可保持正确宽高比的TransitionDrawable等效项?或者我是否需要在TransitionDrawable上设置以防止此大小调整?
我真正想做的就是在图像之间进行很好的转换。我想在完成动画后将图像设置为TransitionDrawable的第二层drawable但是没有办法监视动画何时完成......
编辑:我以为我提到的图片尺寸不一样,不确定是否会有所不同
编辑2:这是设置drawable的代码:
//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);
答案 0 :(得分:7)
您使用的是不同尺寸的图像吗?这可能导致了这个问题。尝试使用相同尺寸的图像。
编辑:找到解决方案:使用setImageDrawable
命令后,需要再次设置ImageView的scaletype。
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);