Android之螢幕適配
阿新 • • 發佈:2019-01-07
網上螢幕適配的方式有很多,比如按百分比的、按解析度的,這裡我是按最小寬度去適配,也是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平板的實驗,親測可行,以上供大家參考!
參考資料: