2013-10-15 73 views
4

我有一個ImageView設置爲片段的背景(imageview在寬度和高度上均設置爲match_parent),scaletype設置爲centerCrop。我下載一張圖像以便異步放入,並在下載完成後使用TransitionDrawable進行交叉淡入淡出。Android TransitionDrawable:片段恢復後的圖像縮放類型更改

圖像第一次出現時使用了正確的scaletype,但是如果我導航到另一個片段,然後返回到以imageview爲背景的片段,圖像會顯示扭曲/拉伸(看起來像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); 
+0

你在哪裏使用TD?作爲背景可繪製還是作爲圖像可繪製? – pskink

+0

我使用ImageView中已存在的佔位符drawable(使用ImageView.getDrawable())創建TransitionDrawable,並且新下載的Bitmap(作爲BitmapDrawable)然後使用ImageView.setImageDrawable()設置轉換可繪製。 – AndroidNoob

+0

你用過setBackgroundDrawable嗎?如果是這樣,不要這樣做,因爲它拖動Drawable – pskink

回答

7

您使用的圖像?這可能會導致問題。嘗試使用相同尺寸的圖像。

編輯:找到解決方案:您需要在使用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); 
相關問題