フラグメントの背景として ImageView を設定し (imageview は幅と高さの両方で match_parent に設定されています)、scaletype は centerCrop に設定されています。画像をダウンロードしてそこに非同期で配置し、ダウンロードが完了したら TransitionDrawable を使用してクロスフェードします。
画像は最初は正しいスケールタイプで表示されますが、別のフラグメントに移動してから、イメージビューを背景としてこのフラグメントに戻ると、画像がゆがんだり伸びたりして表示されます (代わりに imageView が fitXY に設定されているように見えます)。
TransitionDrawable を使用しない場合、画像は本来の外観のままです。
正しいアスペクト比を維持する TransitionDrawable に相当するものはありますか? または、このサイズ変更を防ぐために TransitionDrawable に設定する必要があるものはありますか?
私が本当にやりたいのは、画像間の素敵な移行です。アニメーションが終了したら、TransitionDrawable の 2 番目のレイヤーのドローアブルに画像を設定することを考えていましたが、アニメーションがいつ終了したかを監視する方法はありません...
編集:画像が同じ寸法ではないことに言及したいと思いましたが、それが違いを生むかどうかはわかりません
編集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);