屏幕適配方案續章
[簡單粗暴屏幕適配方案]原文
由於原方案導致易開發過程中的種種問題特推出此續章
鑑於以上原因,開發過程和發佈建議分離,開發採用原始方案二,發佈使用原始方案一,進行結合
謂之方案三 ,奸笑
即:
開發過程(不用單獨新建特殊尺寸模擬器解決預覽問題)
/** 將此文件直接複製到項目中,不要忘記清單文件配置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.引用工具類
##### 2.在自定義的 Application onCreate 方法中加入
new DensityHelper(this, DESIGN_WIDTH).activate(); //DESIGN_WIDTH爲設計圖寬度,同樣不要忘記清單文件配置Application,另 佈局中使用pt
爲啥使用寬度,不考慮高度呢?
因爲高度有狀態欄,等比例換算會導致變形