android studioで画像をフィットさせる
最近やっと時間が出来、android studioをかじり始めています。
ItemListを使い、itemをクリックするとそのアイテムに対応した画像を新しいアクティビティで出す
と言う簡単なアプリを書いていたのですがどうも出てくる画像がフィットしない。
XMLファイルのみでやると画像の比率が崩れ
かといって何もしなければはみ出したりするので少し調べてみた。
アンドロイドスタジオの中でディフォルトで入っているbitmapを使い、スケーリングしました。
前のactivityでは何をクリックしたのかitemのidをintentに格納しトランス。
表示する前にbitmapでスケーリングさせちゃんと画面にフィットしてもらうようにしました。
忘れないようにメモです。
public class DetailActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); Intent in = getIntent(); int index = in.getIntExtra("com.example.***.Item_Index", -1); if (index > -1) { int pic = getImg(index); ImageView img = (ImageView) findViewById(R.id.imageView4); scaleImg(img, pic); } } private int getImg(int index) { switch (index) { case 0: return R.drawable.iphone_x; case 1: return R.drawable.xz2; case 2: return R.drawable.p10; default: return -1; } } private void scaleImg(ImageView img, int pic) { // scale the img to fit the screen Display screen = getWindowManager().getDefaultDisplay(); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(getResources(), pic, options); int imgWidth = options.outWidth; int screenWidth = screen.getWidth(); if (imgWidth > screenWidth) { int ratio = Math.round( (float)imgWidth / (float) screenWidth ); options.inSampleSize = ratio; options.inJustDecodeBounds = false; Bitmap scaledImg = BitmapFactory.decodeResource(getResources(), pic, options); img.setImageBitmap(scaledImg); } } }