ActivityのDisplayMetrics

2429 ワード

		DisplayMetrics dm = new DisplayMetrics();
		this.getWindowManager().getDefaultDisplay().getMetrics(dm);
		screenWidth = dm.widthPixels;
		screenHeight = dm.heightPixels;
		density = dm.density;
		densityDpi = dm.densityDpi;
		scaledDensity = dm.scaledDensity;
		
		DisplayMetrics metrics = dm;
		Log.i("haier_home", "metrics::density=" + metrics.density
        		+", densityDpi="+metrics.densityDpi
        		+", heightPixels="+metrics.heightPixels
        		+", widthPixels="+metrics.widthPixels
        		+", scaledDensity="+metrics.scaledDensity
        		+", xdpi="+metrics.xdpi
        		+", ydpi="+metrics.ydpi);

プログラムを実行してlogログを印刷する
10-20 21:42:36.735: INFO/haier_home(7610): metrics::density=1.5, densityDpi=240, heightPixels=854, widthPixels=480, scaledDensity=1.5, xdpi=239.05882, ydpi=243.72585
 
        metrics = new DisplayMetrics();
        this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        density = metrics.density;
        Log.i("smart_home", "metrics::density=" + metrics.density
        		+", densityDpi="+metrics.densityDpi
        		+", heightPixels="+metrics.heightPixels
        		+", widthPixels="+metrics.widthPixels
        		+", scaledDensity="+metrics.scaledDensity
        		+", xdpi="+metrics.xdpi
        		+", ydpi="+metrics.ydpi);

プログラムを実行してlogログを印刷する
10-20 21:50:48.555: INFO/smart_home(8110): metrics::density=1.5, densityDpi=240, heightPixels=569, widthPixels=320, scaledDensity=1.5, xdpi=239.05882, ydpi=243.72585
 
AndroidManifestでxmlファイルに要素support-screensを追加
    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true" />

プログラムを実行してlogログを印刷する
10-20 22:08:50.015: INFO/SmartHomeActivity(8948): metrics::density=1.5, densityDpi=240, heightPixels=854, widthPixels=480, scaledDensity=1.5, xdpi=239.05882, ydpi=243.72585
 
3日近く同じ携帯電話がなぜDisplayMetricsオブジェクトのheightPixelsとwidthPixelsが異なるのか分からなかった.