1. 程式人生 > >Android之螢幕適配

Android之螢幕適配

        網上螢幕適配的方式有很多,比如按百分比的、按解析度的,這裡我是按最小寬度去適配,也是Google建議的方式。

        1.首先下載螢幕適配外掛ScreenMatch。

        AS→File→Settings→plugins→SreenMatch下載即可。

        2.在專案的任意目錄或檔案右鍵選擇ScreenMatch,選module,生成一堆dimens.xml檔案。生成成功的前提是原有工程中已存在預設的dimens.xml檔案。覺得抽象的話,具體的操作方式,網上一搜,很多。

        3.根據UI給的設計圖,用設計圖中的最小寬度除以基準值360得到比例值,然後用設計圖控制元件標註除以比例值即可。

        例如:UI設計圖為800*1280,控制元件的寬720px,高100px,則設定控制元件寬:@dimen/dp_720/(800/360),高:@dimen/dp_100/(800/360)

        4.字型的設定方式同3,只不過將dp_XXX換為sp_XXX即可。

        5.獲取螢幕最小寬度的程式碼:

   /**
     * 獲取螢幕相關引數
     *
     * @return
     */
    public void getScreenParams() {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int heightPixels = dm.heightPixels;
        int widthPixels = dm.widthPixels;
        float xdpi = dm.xdpi;
        float ydpi = dm.ydpi;
        int densityDpi = dm.densityDpi;
        float density = dm.density;
        float scaledDensity = dm.scaledDensity;
        float heightDP = heightPixels / density;
        float widthDP = widthPixels / density;
        float smallestWidthDP;
        if(widthDP < heightDP) {
            smallestWidthDP = widthDP;
        }else {
            smallestWidthDP = heightDP;
        }
        String str = "heightPixels: " + heightPixels + "px";
        str += "\nwidthPixels: " + widthPixels + "px";
        str += "\nxdpi: " + xdpi + "dpi";
        str += "\nydpi: " + ydpi + "dpi";
        str += "\ndensityDpi: " + densityDpi + "dpi";
        str += "\ndensity: " + density;
        str += "\nscaledDensity: " + scaledDensity;
        str += "\nheightDP: " + heightDP + "dp";
        str += "\nwidthDP: " + widthDP + "dp";
        str += "\nsmallestWidthDP: " + smallestWidthDP + "dp";
        Log.d(TAG, str);
    }

        6.經過5臺不同Android平板的實驗,親測可行,以上供大家參考!

      參考資料: