AndroidのImageViewで画面の幅に合わせて画像を等倍拡大する
AndroidのImageViewで画像を画面の横いっぱいに合わせて等倍して配置するのに少し苦労したのでメモ。
普通にScaleTypeでやると思ったように上手くいかない。
FIT_CENTERとかCENTER_CROPとかにしてもViewのサイズに合わせて等倍されるが、画面のサイズに合わせて等倍はされない。
画面横に合わせて等倍するようにするため、Javaのコードで以下の手順で実装した。
- ディスプレイの横幅を取得
- 画像の横幅を取得
- ディスプレイの横幅÷画像の横幅で拡大倍率を計算
- その拡大倍率をImageViewに適用
ImageViewのidをimg_view, 使う画像のリソースを@mipmap/imageとした時のコードを以下に示した。
[XMLファイル]
1 2 3 4 5 |
<ImageView android:src="@mipmap/image" android:id="@+id/img_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> |
[Javaファイル]
1 2 3 4 5 6 7 8 9 10 11 12 |
// ImageViewを取得 ImageView img_view=(ImageView)findViewById(R.id.image); // ディスプレイのサイズを取得 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); // リソース画像のサイズを取得 Bitmap img=BitmapFactory.decodeResource(getResources(),R.mipmap.image); // 拡大倍率を計算 double scale=dm.widthPixels/img.getWidth(); // 倍率を適用 img_view.setLayoutParams(new LinearLayout.LayoutParams((int)(scale*image.getWidth()),(int)(scale*image.getHeight()))); img_view.setScaleType(ImageView.ScaleType.FIT_XY); |
縦画面に合わせるのもこの応用で出来る。
もっと簡単な方法があれば教えてください。
同じカテゴリー(技術メモ)の他の記事を表示
全記事を表示
タグ: Android, プログラミング
投稿日: 2017年4月16日
最終更新日: