屏幕適配方案續章

屏幕適配方案續章

[簡單粗暴屏幕適配方案]原文

由於原方案導致易開發過程中的種種問題特推出此續章

鑑於以上原因,開發過程和發佈建議分離,開發採用原始方案二,發佈使用原始方案一,進行結合

謂之方案三 ,奸笑

即:

開發過程(不用單獨新建特殊尺寸模擬器解決預覽問題)

  /**  將此文件直接複製到項目中,不要忘記清單文件配置Application,另 佈局中使用pt
  * (例如: android:layout_height="300pt" 用錯可不適配哦!)
  *   注意:發佈時最好改用方案一,因爲此方案可能導致部分界面跳轉過程中突然適配失效
  *        方案一採用在Activity的生命週期中重新配置解決了此問題
  */
  public class MyApplication extends Application{

    public final static float DESIGN_WIDTH = 750; //繪製頁面時參照的設計圖寬度

    @Override
    public void onCreate() {
        super.onCreate();
        resetDensity();//注意不要漏掉
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
          super.onConfigurationChanged(newConfig);
          resetDensity();//這個方法重寫也是很有必要的
    }

      public void resetDensity(){
          Point size = new Point();
          ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getSize(size);
          getResources().getDisplayMetrics().xdpi = size.x/DESIGN_WIDTH*72f;
      }
  }

發佈改寫 (讓代碼更簡潔,易維護<缺點是預覽須單獨創建模擬器>)

##### 1.引用工具類

DensityHelper.java

##### 2.在自定義的 Application onCreate 方法中加入

    new DensityHelper(this, DESIGN_WIDTH).activate();  //DESIGN_WIDTH爲設計圖寬度,同樣不要忘記清單文件配置Application,另 佈局中使用pt

爲啥使用寬度,不考慮高度呢?

因爲高度有狀態欄,等比例換算會導致變形

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章