ImageViewのサイズ全体を占めるように画像を拡大したいと思います。画像のアスペクト比がImageViewのアスペクト比と正確に一致しない場合、fit_centerscaleType=fit_center
は画像の周囲にバンドを残すため、これは使用する場合とは微妙に異なります。代わりに、画像を中央に配置して拡大し、余分な部分を切り取って、囲んでいるビューを完全に埋めるようにします。
onCreate()中に独自のカスタム画像マトリックスを計算することで、これを実現できます。
final Display display = getWindowManager().getDefaultDisplay();
final float screenWidth = display.getWidth();
final float screenHeight = display.getHeight();
final float imageWidth = splashView.getDrawable().getIntrinsicWidth();
final float imageHeight = splashView.getDrawable().getIntrinsicHeight();
final Matrix splashMatrix = new Matrix();
final float scale = Math.max(screenHeight/imageHeight,screenWidth/imageWidth);
splashMatrix.postScale( scale, scale );
splashView.setImageMatrix(splashMatrix);
これは問題なく機能しますが、もっと簡単な方法があるはずです。画像のアスペクト比を維持し、ImageViewを完全に塗りつぶしながら、ImageViewで画像を拡大する方法を知っている人はいますか?
(注:私の場合、ImageViewが全画面表示になっているのでgetWindowManager().getDisplay()
、目的の画像サイズを見つけるために使用します。ビューがまだレイアウトされておらず、サイズがないため、splashView.getWidth()
/は使用できません)getHeight()