Android TransitionDrawable:图片缩放类型在片段恢复时发生变化

时间:2013-10-15 13:02:17

标签: android animation android-fragments transitiondrawable

我将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);

1 个答案:

答案 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);