2011-10-23

在 Android 依據解析度使用圖片

Android 制定三種解析度照片:hdpi、mdpi、ldpi,支援的解析度與螢幕尺寸分別如下:
  • hdpi - 240dpi,WVGA800(480*800)、WVGA84(480*854)。
  • mdpi - 160dpi,HVGA(320*480)。
  • ldpi - 120dpi,QVGA(240*320)、WQVGA400(240*400)、WQVGA432(240*432)。
概分的邏輯就是看寬度,hdpi 是  480px,mdpi 是 320px,ldpi 是 240px。


先根據三種不同解析度的寬度,製作三張圖片,假定每一列要放八張圓圖,長寬分別為螢幕寬度除以八,即 60px、40px、30px。


將三張圖片使用相同命名分別放到 res/drawable-hdpi、res/drawable-mdpi、res/drawable-ldpi 裡。


Activity 程式如下。
public class DPIActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 垂直方向
        LinearLayout vLL = new LinearLayout(this);
        vLL.setOrientation(LinearLayout.VERTICAL);
        LinearLayout hLL;
        ImageView iv;
        for (int i = 0; i < 8; i++) {
            // 水平方向
            hLL = new LinearLayout(this);
            hLL.setOrientation(LinearLayout.HORIZONTAL);
            // 每一列八張圓圖,依解析度不同呈現不同顏色
            for (int j = 0; j < 8; j++) {
                iv = new ImageView(this);
                // 只要用 R.drawable 就好,實際使用哪一種解析度由 Android 決定
                iv.setImageResource(R.drawable.circle);
                hLL.addView(iv);
            }
            vLL.addView(hLL);
        }
        this.setContentView(vLL);
    }
}
再來一口氣啟動三種解析度的 Android Emulator,使用的解析度分別為 WVGA800(480*800)、HVGA(320*480)、QVGA(240*320),然後在執行 Android App 時,系統會詢問要用哪一個 Emulator。


連續執行三個 Android App 後,就可以看到以下的結果。

沒有留言:

張貼留言