山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Androidで画像を拡大縮小

iPhoneアプリの完成が近づいているということでAndroidのリサーチを始めています。前に本を1冊やったんですが開発ツールeclipseからandroid studioになっているし忘れているしいろいろ変わっているし一からやり直しな気分です。

さて今日学んだこと。

Androidでは画像を表示するときにImageViewクラスを使います。画面の解像度に応じた大きさの画像を用意しておくと自動的に最適な画像ファイルを選んで表示してくれます。
プロジェクトのapp/src/main/resの中の
drawable-hdpi
drawable-mdpi
drawable-xhdpi
drawable-xxhdpi
ですね。
意外と説明がなかったのが、全部に入れていないとき。これは入れたフォルダの解像度と実際の画面の解像度を比較して拡大縮小してくれるもようです。つまりdrawable-mdpiの中に画像ファイルを入れてxxhdpi(1080×1920px)のデバイスで見ると拡大されます。

また自由なピクセル数に拡大縮小した場合。ImageViewクラスそのものにはピクセル数を指定することはできません。LinearLayoutを作ってその中にImageViewを入れるときFIT_XYを指定してaddViewするときにピクセル数を指定したらできました。
コードはこんな具合です。

LinearLayout linear = new LinearLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(wc, wc);
params.setMargins(30, 30, 0, 0);
relativeLayout.addView(linear, params);

ImageView imageView = new ImageView(this);             imageView.setImageResource(R.drawable.ninjin);
imageView.setId(1);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
LinearLayout.LayoutParams iparams = new LinearLayout.LayoutParams(200, 140);
linear.addView(imageView, iparams);