一种侵入性极低的android全机型适配方案 (使用篇)

对于 android 屏幕适配大家可能比较头疼,因为android 设备碎片化太严重。

大家可能使用过的适配方案有:

  1. 百分比布局。
  2. 针对不同分辨率或最小宽度生成不同dimens.xml。
  3. 鸿神的AutoLayout动态换算等适配方案。

但是这些方案或多或少都有些问题,所以自己写了一种适配方案,感觉效果不错,在系统版本为8.1的设备上也测试通过,就拿出来分享了。

接下来先给大家展示下在适配前后的效果对比(为了效果明显直接拿 pad 和手机进行对比):

适配前
一种侵入性极低的android全机型适配方案 (使用篇)_第1张图片

适配后
一种侵入性极低的android全机型适配方案 (使用篇)_第2张图片

看到效果后是不是对本方案产生了兴趣?做到这种程度的适配也只是:
1.在你的Application中加一行配置:

  ScreenUtil.adaptDensity(this, 375, 667, true, ScreenUtil.MODE_FORCE_ADAPT_LONG_SIDE);
  

2.然后在你的BaseActivity中加入:

   @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Logger.d(TAG, "onConfigurationChanged");
        ScreenUtil.updateConfig(this, getResources());
    }

第一步中,参数依次是:

  1. Application 实例。

  2. 设计稿短边尺寸 单位是 dp。(单位是其他的换成 dp)

  3. 设计稿长边尺寸 单位同上。

  4. 是否把字体大小设置为系统默认。(忽略用户在系统设置里面的字体大小设置)。

  5. 适配模式3种。(依照自己项目选择)

  6. MODE_ADAPT_TWO_SIDE 适配兼顾宽高;

  7. MODE_FORCE_ADAPT_SHORT_SIDE 强制适配短边;

  8. MODE_FORCE_ADAPT_LONG_SIDE 强制适配长边;

使用须知:

  • 此方案基于screen density实现,项目里布局要使用 dp 和 sp。(dp、sp 是 android 上最佳尺寸单位!)
  • 若是已完工的项目有适配需求,布局使用的单位却不是 dp、sp,需要先全局修改,可以 写脚本使用正则方式替换。
  • 此方案只适用于minSdkVersion>=17的应用。
  • 注意没有完美适配这一说,因为手机屏幕比例不尽相同,有16:9、16:10、18:9、18.5:9等。
  • 方案中提到的【长边】及【短边】是为了兼容横竖屏应用的说法。
  • 不能保证完全没有兼容性问题,遇到请反馈给我。
  • 此适配是缩放的方式,若要对pad屏幕充分利用,还需要单独设计布局。

ScreenUtil.kt 这个文件下载地址,是kotlin代码,还没接触过kotlin的赶快去学习吧!下篇博文会讲解下实现原理。

你可能感兴趣的:(Android,实践)