Android屏幕適配(二):AutoSize今日頭條屏幕適配方案

Android屏幕適配(二):AutoSize今日頭條屏幕適配方案

AutoSize是今日頭條使用的屏幕適配方案。
原理:調用Android API,根據設備某一維度(寬或高)的真實長度(單位是px)與這一維度在UI設計圖上的dp值之間的關係,重新計算density來實現。
優點:1.支持以寬或者高任意一個維度去適配,保持該維度上和設計圖一致;
2.支持dp和sp單位,控制遷移成本到最小。

下面是集成方法:
1.添加gradle配置代碼:

implementation 'me.jessyan:autosize:1.1.2'

2. 添加AndroidManifest配置,填寫基準設計尺寸(單位爲dp):

<manifest>
    <application>
        ...
        <meta-data
            android:name="design_width_in_dp"
            android:value="360"/>
        <meta-data
            android:name="design_height_in_dp"
            android:value="640"/>
        ...
    </application>
</manifest>

*3.如果UI給出的尺寸跟基準尺寸不一樣,可以通過實現CustomAdapt進行適配;
在這裏插入圖片描述
4.1如果該頁面不需要進行適配,可以通過implements CancelAdapt 取消適配。
在這裏插入圖片描述
下面是獲取屏幕尺寸的方法:

private void getScreenSize(){
    //獲取屏幕分辨率
    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)

    String a = "寬度:" + width + " 高度:" + height + " 密度:" + density + " 密度DPI:" + densityDpi
            + "\r\n屏幕dp寬度:" + screenWidth + " 屏幕dp高度:" + screenHeight;
    Toast.makeText(MainActivity.this, a, Toast.LENGTH_LONG).show();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章