1. 程式人生 > >Android螢幕適配,包括全面屏適配,自定義適配

Android螢幕適配,包括全面屏適配,自定義適配

在此處列出一些簡單的配置圖

                點選下載配置檔案               //文件就在下邊,不用下載

原理:

 1. px是解析度的單位 比如現在主流手機解析度1080*1920.  

 2. dp是安卓開發專有的單位 在 不同的手機下 1dp = 不同的 px.  

 3. sp是字型大小(前面清單檔案中要求字型也用dp或者px),sp隨系統字型大小變化而變化,但據我觀察,像微信qq這些app的字型是不隨系統顯示字型大小變化的.

     ### 本庫是按照設計圖的寬度的值(單位px)和對應標準dpi來適配的(手機實際寬度相對於設計圖增加或減少,高度同比例(這的比例是寬度增加或減少的比例)增加或減少),所有的佈局控制元件都按這個比例(手機實際寬度/設計圖寬度)來適配,在不同的解析度,不同ppi(手機螢幕密度,又稱為dpi),不同最小寬度(有的人喜歡去調開發者選項下面的最小寬度,主流手機預設為360dp)的手機下都做到了適配.

具體使用步驟:

  1. 匯入依賴

implementation 'me.yatoooon:screenadaptation:1.0.9'

  1. 初始化

(1)在Application中:

ScreenAdapterTools.init(this);

//旋轉適配,如果應用螢幕固定了某個方向不旋轉的話(比如qq和微信),下面可不寫.

    @Override

    public void onConfigurationChanged(Configuration newConfig) {

        super.onConfigurationChanged(newConfig);

        ScreenAdapterTools.getInstance().reset(this);

}

  1. 在mainfest中AppLication中配置:

//設計圖的寬,單位是畫素,推薦用markman測量,量出來如果是750px那麼請儘量去找ui設計師要一份android的設計圖.

<meta-data
android:name="designwidth"
android:value="720" />  

//設計圖對應的標準dpi,根據下面的那張圖找到對應的dpi,比如1080就對應480dpi,如果拿到的是其他寬度的設計圖,那麼選擇一個相近的dpi就好了

<meta-data
android:name="designdpi"
android:value="360" />   

//全域性字型的大小倍數,有時候老闆會覺得你的所有的字小了或者大了,你總不能一個一個去改吧


<meta-data
android:name="fontsize"
android:value="1.0" />   

 //你的佈局裡面用的是px這就寫px,你的佈局裡面用的是dp這就寫dp,要統一,不要一會兒px一會兒dp,字型也用px或者dp,不要用sp,微信qq用的肯定不是sp.
<meta-data
android:name="unit"
android:value="px" />  

  1. 具體應用適配

(1)在Activity中,找到setcontentview(R.layout.xxxxxx)

//ScreenAdapterTools.getInstance().reset(this);//如果希望android7.0分屏也適配的話,加上這句

        //在setContentView();後面加上適配語句

        ScreenAdapterTools.getInstance().loadView((ViewGroup) getWindow().getDecorView());

 (2.)在Fragment或recyclerview,listview或gridview,viewpager,自定義view等等等,只要能找到佈局填充器

public class TestFragment extends Fragment {

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.test_px, container, false);

        //拿到佈局填充器返回的view後

        ScreenAdapterTools.getInstance().loadView((ViewGroup) view);

        return view;

    }

}  

注: 自定義view的話,在  ScreenAdapterTools.getInstance().loadView((ViewGroup) view);   外面包裹一層判斷如下,不然在使用自定義view編寫佈局檔案時預覽xml會有問題!但不影響真機執行效果.

        if (!isInEditMode()) {

            ScreenAdapterTools.getInstance().loadView((ViewGroup) view);

        }