實戰|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>

這樣所有的配置就完成了,非常簡單,下面就看一下在改完前後的對比效果。