您的位置:首页 > 移动开发 > Android开发

屏幕适配方案续章

2017-10-10 16:23 148 查看

屏幕适配方案续章

[简单粗暴屏幕适配方案]原文

由于原方案导致易开发过程中的种种问题特推出此续章

鉴于以上原因,开发过程和发布建议分离,开发采用原始方案二,发布使用原始方案一,进行结合

谓之方案三 ,奸笑

即:

开发过程(不用单独新建特殊尺寸模拟器解决预览问题)

/**  将此文件直接复制到项目中,不要忘记清单文件配置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


为啥使用宽度,不考虑高度呢?

因为高度有状态栏,等比例换算会导致变形
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  发布 android 布局 应用