天天看點

今日頭條螢幕适配方案終極版,一個極低成本的 Android 螢幕适配方案.

Notice

  • 主流機型裝置資訊,可以作為參考
  • 功能介紹
  • 原理分析
  • 今日頭條螢幕适配方案常見問題彙總
  • Android 進階架構
  • 對于老項目,如果使用了 AndroidAutoLayout,請參考 AndroidAutoLayout 遷移指南,AndroidAutoSize 可以和 AndroidAutoLayout 一起使用,因為 AndroidAutoLayout 使用的是 px,是以 AndroidAutoSize 對它不會産生任何影響,如果老項目的某些頁面之前使用了 dp 進行布局,并且 AndroidAutoSize 對這些頁面已經産生了不良影響,可以讓之前使用了 dp 的舊 Activity 實作 CancelAdapt 取消适配,建議使用副機關,使用副機關則不會影響之前使用了 dp 的頁面 (也不會影響三方庫和系統控件),詳情請檢視 demo-subunits

Download

implementation 'me.jessyan:autosize:1.2.1'
           

Usage

Step 1 (真的不吹牛逼,隻需要以下這一步,架構就可以對項目中的所有頁面進行适配)

  • 請在 AndroidManifest 中填寫全局設計圖尺寸 (機關 dp),如果使用副機關,則可以直接填寫像素尺寸,不需要再将像素轉化為 dp,詳情請檢視 demo-subunits

Activity

  • 當某個 Activity 的設計圖尺寸與在 AndroidManifest 中填寫的全局設計圖尺寸不同時,可以實作 CustomAdapt 接口擴充适配參數
public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt {

    @Override
    public boolean isBaseOnWidth() {
        return false;
    }

    @Override
    public float getSizeInDp() {
        return 667;
    }
}
           
  • 當某個 Activity 想放棄适配,請實作 CancelAdapt 接口
public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {

}
           

Fragment

  • 首先開啟支援 Fragment 自定義參數的功能
AutoSizeConfig.getInstance().setCustomFragment(true);
           
  • 當某個 Fragment 的設計圖尺寸與在 AndroidManifest 中填寫的全局設計圖尺寸不同時,可以實作 CustomAdapt 接口擴充适配參數
public class CustomAdaptFragment extends Fragment implements CustomAdapt {

    @Override
    public boolean isBaseOnWidth() {
        return false;
    }

    @Override
    public float getSizeInDp() {
        return 667;
    }
}
           
  • 當某個 Fragment 想放棄适配,請實作 CancelAdapt 接口
public class CancelAdaptFragment extends Fragment implements CancelAdapt {

}
           
Subunits (請認真看 demo-subunits,裡面有詳細介紹)      
  • 可以在 pt、in、mm 這三個冷門機關中,選擇一個作為副機關,副機關是用于規避修改 DisplayMetrics#density 所造成的對于其他使用 dp 布局的系統控件或三方庫控件的不良影響,使用副機關後可直接填寫設計圖上的像素尺寸,不需要再将像素轉化為 dp
AutoSizeConfig.getInstance().getUnitsManager()
        .setSupportDP(false)
        .setSupportSP(false)
        .setSupportSubunits(Subunits.MM);
           

DEOM:https://github.com/JessYanCoding/AndroidAutoSize 

發表隻為了儲存,便民,如有版權問題請及時聯系我。