关于Android屏幕的适配思考

725 阅读2分钟

先说一下dp这个单位,它是指 固定大小在不同屏幕 会导致小屏幕上显示不全或者大屏幕上显示太小,但是它的大小都一样。一定要先理解这个才能更好的明白适配屏幕的原理。

最终完成: appkfz.com/2017/07/29/… 根据这个文章提供的方案,再根据本文第四点的设想,可以解决了大部分的屏幕设配问题。(其实早就完成了,但是我有点沉迷其他东西,忘记更新了)

        //修改屏幕density
        DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
        Configuration cfg = getResources().getConfiguration();
        displayMetrics.widthPixels = 1080;
        displayMetrics.heightPixels = 1920;
        getResources().updateConfiguration(cfg, displayMetrics);

目前的成熟方案,juejin.cn/post/684490… 我已经在使用这个方案了,可以直接使用,避免一些不必要的坑。(懒)

1.先看一下默认的方案

常见的屏幕适配方案

很简单对吧,是根据Android设备的dpi进行的适配。但是,现在Android设备的dpi可以通过root设备进行调整,那这种方案将在这种设备上不适用。(会出现view堆叠在一起或者只能显示一部分。)

2.既然可以根据dpi来调整,自然也是可以根据分辨率调整。依旧但是,现在全面屏和异形屏的分辨率又没有一个共识,适配必然很难。

3.经过一番搜索,看到有百分比的自定义控件( 百分比控件链接),确实很棒。推荐大家使用这种解决方案。(但是目前就职的公司ui给的设计竟然不能转百分比,还得自己计算,太累。)

以上先将自己了解到的适配方式进行一个记录

4.最后是自己的想法,有没有办法在app内设定自己的dpi,如果可以这样的话,完全可以根据设计图一比抄下来,完全不需要脑子了,比较适合我这种懒惰程序员。或者有没有将1dp转化为设备的xx dp呢?既然可以预先定义各个设备的dpi对应的文件,那么有没有办法在安装或者打开app的时候生成,或者dp自动转化呢?待我去实践实践。