實戰|Android超強的屏幕適配框架AutoSize的使用效果
- 2020 年 2 月 17 日
- 筆記
學更好的別人,
做更好的自己。
——《微卡智享》
本文長度為1617字,預計閱讀5分鐘
Android的屏幕適配
早就想研究一下屏幕適配這塊了,主要開始我自己做的那個APP都是基於PDA的,所以不需要適配別的機形,而原本自己的那個PDA的屏幕比例也是比較特別,用他的效果在手機或是Android虛擬機上效果都不好看,差別好大,於是就想研究一下關於Android屏幕適配的框架,原來找到一個AndroidAutoLayout的框架,結果後來發現這個已經N年沒再更新了,無意間發現了今日頭條屏幕適配方案終極版,用了一下,真是簡單又好用。
先看未配置的對比
從上面的對比圖來看,開始的登陸頁面差別還是挺大的,別的也有差,不過不會非常明顯,接下來我們就看看適配框架怎麼來用。
AndroidAutoSize
微卡智享
先放一下框架的地址:
https://github.com/JessYanCoding/AndroidAutoSize.git
實現步驟
1. build.gradle中加入依賴項implementation 'me.jessyan:autosize:1.1.2'
2. 計算我們原適配程序的寬高,因為默認計算獲得的都是PX像素,這裡我們需要的是DP值。
3. 在AndroidMainfest.xml中加入設置即可。
上面三步即可完成我們的屏幕適配,就是這麼簡單。接下來分步簡單說一下。
加入依賴項
我們在項目的build.gradle中加入引用依賴項
implementation 'me.jessyan:autosize:1.1.2'
先獲取到原適配的寬和高DP值
我們在啟動界面中加入一段代碼,用來獲取當前屏幕的DP值,運行起來好會直接輸出顯示出來。
//獲取屏幕分辨率 DisplayMetrics metric=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width=metric.widthPixels; // 寬度(PX) int height=metric.heightPixels; // 高度(PX) float density=metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi=metric.densityDpi; // 密度DPI(120 / 160 / 240) //屏幕寬度算法:屏幕寬度(像素)/屏幕密度 int screenWidth = (int) (width/density);//屏幕寬度(dp) int screenHeight = (int)(height/density);//屏幕高度(dp) Toast.makeText(SplashActivity.this, "寬度:" + width + " 高度:" + height + " 密度:" + density + " 密度DPI:" + densityDpi + "rn屏幕dp寬度:" + screenWidth + " 屏幕dp高度:" + screenHeight, Toast.LENGTH_LONG).show();
運行程序後得到的我們原來做的寬和高分別的320DP和533DP
AndroidMainifest.xml加入配置
最後我們在AndroidMainifest.xml加入配置,其中輸入的寬和高就是剛才我們運行程序後得到的寬和高。
<manifest> <application> <meta-data android:name="design_width_in_dp" android:value="320"/> <meta-data android:name="design_height_in_dp" android:value="533"/> </application> </manifest>
這樣所有的配置就完成了,非常簡單,下面就看一下在改完前後的對比效果。