【Android】画面のサイズと密度を求めるTips
こんにちわpencoです。
Androidの場合マルチ画面のサポートは必須になってきますが、実機でテストを行う際にこの端末、解像度は分かるけどdpiはなんだっけ…?と思うことが多々あります。
そこで、画面のサイズと密度を求めて表示するアプリを作って、実機で一度実行させることにしました。
簡易アプリを作って調べる
以下コードです。
DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int dpi1 = metrics.densityDpi; String myDpi = ""; switch(dpi1){ case DisplayMetrics.DENSITY_LOW://120dpi myDpi = "ldpi"; break; case DisplayMetrics.DENSITY_MEDIUM://160dpi myDpi = "mdpi"; break; case DisplayMetrics.DENSITY_HIGH://240dpi myDpi = "hdpi"; break; case DisplayMetrics.DENSITY_XHIGH://320dpi myDpi = "xhdpi"; break; case DisplayMetrics.DENSITY_XXHIGH://480dpi myDpi = "xxhdpi"; break; case DisplayMetrics.DENSITY_XXXHIGH://640dpi myDpi = "xxxhdpi"; break; case DisplayMetrics.DENSITY_TV://213dpi myDpi = "tvdpi"; break; } int size = this.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; String myScreenSize = ""; switch(size){ case Configuration.SCREENLAYOUT_SIZE_SMALL: //small 画面は 426dp x 320dp が最小 myScreenSize = "small"; break; case Configuration.SCREENLAYOUT_SIZE_NORMAL: //normal 画面は 470dp x 320dp が最小 myScreenSize = "normal"; break; case Configuration.SCREENLAYOUT_SIZE_LARGE: //large 画面は 640dp x 480dp が最小 myScreenSize = "large"; break; case Configuration.SCREENLAYOUT_SIZE_XLARGE: //xlarge 画面は 960dp x 720dp が最小 myScreenSize = "xlarge"; break; } TextView text = (TextView)findViewById(R.id.textview); text.setText("width:"+metrics.widthPixels+ "\nheight:"+metrics.heightPixels+ "\n"+myDpi+":"+dpi1+ "\nScreenSize:"+myScreenSize);
これをonCreate()などで実行すればOKです。
あくまで端末のスペック調査用という感じなので簡単に書きました。
Eclipseにプロジェクトとして一つ作っておけば便利かなと思います。
実際にdpiやサイズ別にレイアウトを変更する方法についてはまた次回。
コメントをどうぞ