屏幕适配方案续章

本文提出了一种新的屏幕适配方案,旨在解决不同设备尺寸下的界面显示问题。该方案分为两个阶段:开发阶段使用方案二简化流程,发布时切换到方案一确保适配准确无误。文中还详细介绍了如何通过修改Application类来实现这一目标。

屏幕适配方案续章

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

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

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

谓之方案三 ,奸笑

即:

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

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

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

因为高度有状态栏,等比例换算会导致变形

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值