在 Android 機器上,螢幕的解析度可以用「螢幕大小」和「螢幕點距」兩個參數來表示。
一般的方法
在 Android 1.6 版以後,可以使用 config.screenLayout 語句來判斷螢幕大小
> Configuration config = getResources().getConfiguration();
> if((config.screenLayout&Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL){
> }
>
UPDATE 2010/4/14: sam 說 「config = new Configuration ()」只會回傳預設的 Configuration, 而非當前的 Configuration. 找了一下最好是使用 getResources ().getConfiguration ()
支援的參數與代碼如下
- Configuration.SCREENLAYOUT_SIZE_UNDEFINED 0
- Configuration.SCREENLAYOUT_SIZE_SMALL 1
- Configuration.SCREENLAYOUT_SIZE_NORMAL 2
- Configuration.SCREENLAYOUT_SIZE_LARGE 3 要檢查點距,可以使用 DisplayMetrics 語句來判斷螢幕點距
> DisplayMetrics dm = new DisplayMetrics();
> getWindowManager().getDefaultDisplay().getMetrics(dm);
> if((dm.densityDpi == dm.DENSITY_HIGH)){
> }
> 支援的參數與代碼如下
- DENSITY_HIGH 240 (dpi)
- DENSITY_MEDIUM 160
- DENSITY_LOW 120
- DENSITY_DEFAULT 160 相容 1.5 以下機型
根據Android 版本使用圖表,2010 年 1 月時 Android 1.5 市佔率還是接近 1/3,但是這 1/3 的機器上並無法使用上面的 API。
在 1.5 版上,其實仍然可以用 density 語句來判斷螢幕點距比率
> DisplayMetrics dm = new DisplayMetrics();
> getWindowManager().getDefaultDisplay().getMetrics(dm);
> if((dm.density >= 1.5)){
> }
>
density 的值 1 代表一般點距,1.5 代表高點距,0.75 代表低點距。要偵測市面上所有的機器是否是高解析度機型,只要運用以上方法,就可以自動偵測出螢幕大小和點距囉。