美文网首页安卓
Android 屏幕适配

Android 屏幕适配

作者: 1a473fcb13b0 | 来源:发表于2019-01-03 15:01 被阅读2次

    一、基本概念

    dip/dp: Density independent pixels,密度无关像素。

    dpi:dots per inch(屏幕像素密度), 直接来说就是一英寸多少个像素点。常见取值 120,160,240。

    density: 密度(密度比例)。常见用密度1.0、1.5、3.0。

    分辨率: 屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以*横向像素*纵向像素,如1080*1920。

    屏幕尺寸: 屏幕对角线的长度。电脑、电视、手表同理。

    二、dp、dpi、px、density之间的关系

    ● dpi=屏幕的对角线的分辨率/屏幕尺寸

    ● density = dpi / 160;

    ● px = density * dp;

    ● px = dp * (dpi / 160);

    dpi公式

    举个例子:屏幕分辨率为:1920*1080,屏幕尺寸为5吋的话,那么dpi为440。

    dpi公式

    详情请参见:

    https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA

    三、屏幕适配原理

                屏幕适配的关键点是:density(屏幕密度比例).

               从dp和px的转换公式 :px = dp * density

                可以看出,如果设计图宽为360dp,想要保证在所有设备计算得出的px值都正好是屏幕宽度的话,我们只能修改 density 的值。

                AndroidAutoLayout(鸿洋适配框架)和 AndroidAutoSize(今日头条适配方案)都是这个思路。

                图片适配系统就是根据不同的density给我们提供了不同的drawable文件夹

    density

    四、获取屏幕像素密度和密度比例


    ①、通过DisplayMetrics获取,如:dp转px的工具内(getResources().getDisplayMetrics().density)

    DisplayMetrics#density 就是上述的density

    DisplayMetrics#densityDpi 就是上述的dpiDisplay

    Metrics#scaledDensity 字体的缩放因子,正常情况下和density相等,但是调节系统字体大小后会改变这个值


    ②、Android 4.3引入的wm工具:

            a.获取Android设备屏幕分辨率: adb shell wm size

            b.获取android设备屏幕密度adb shell wm density

    adb 获取屏幕密度

    通过上图可以获得dpi为160,根据density = dpi / 160公式,可以得出density =1;


    ③、安装屏幕测试专家直接进行检测

    屏幕检测专家截图

    五、如何适配?

    ①、使用框架AndroidAutoSize(今日头条适配方案)。

            https://github.com/JessYanCoding/AndroidAutoSize

    ②、 不使用框架适配

    1、适配不同尺寸避免写死的尺寸值;wrap_content,match_parent,weight。

    2、使用相对位置的RelativeLayout。

    3、考虑使用自动拉伸.9图

    4、限定符;最小宽度限定符,屏幕方向限定符,布局别名。

    具体操作实现请参考:

    Android 屏幕适配:最全面的解决方案

                https://www.jianshu.com/p/ec5a1a30694b

    Android 适配时资源限定符的说明

                https://blog.csdn.net/shishuinianshang/article/details/76154913

    Android屏幕适配全攻略

                https://www.jianshu.com/p/759375113de9

    一种非常好用的Android屏幕适配

                https://www.jianshu.com/p/1302ad5a4b04

    六、适配框架推荐:

    AndroidAutoLayout(鸿洋适配框架) --已停止维护

    https://github.com/hongyangAndroid/AndroidAutoLayout

    AndroidAutoSize(今日头条适配方案)都是这个思路。

    https://github.com/JessYanCoding/AndroidAutoSize

    参考文章

    https://www.jianshu.com/p/759375113de9

    https://www.jianshu.com/p/ec5a1a30694b

    https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA

    相关文章

      网友评论

        本文标题:Android 屏幕适配

        本文链接:https://www.haomeiwen.com/subject/sceplqtx.html