美文网首页
Android 屏幕适配

Android 屏幕适配

作者: Android_冯星 | 来源:发表于2018-07-09 16:56 被阅读0次

我的测试机器是华为mate10,参数如下:

屏幕尺寸:5.9英寸
分辨率:2560*1440
Android系统8.0
屏幕像素密度:498ppix

用代码获取

int width = defaultDisplay.getWidth(); // 1080
        int height = defaultDisplay.getHeight();// 1920

        Log.d(TAG, "width : " + width + "   height : " + height);

        DisplayMetrics displayMetrics = new DisplayMetrics();
        defaultDisplay.getMetrics(displayMetrics);

        float density = displayMetrics.density;// 3.0
        Log.d(TAG, "density : " + density);

        int densityDpi = displayMetrics.densityDpi; // 480
        Log.d(TAG, "densityDpi : " + densityDpi);

        float xdpi = displayMetrics.xdpi; // 501.041
        float ydpi = displayMetrics.ydpi; // 500.184
        Log.d(TAG, "xdpi : " + xdpi + "  ydpi : " + ydpi);

        int widthPixels = displayMetrics.widthPixels; //1080
        int heightPixels = displayMetrics.heightPixels;//1920
        Log.d(TAG, "widthPixels : " + widthPixels + " heightPixels : " + heightPixels);

概念

屏幕尺寸

屏幕尺寸就是屏幕对角线的长度,单位是英寸
1英寸 = 2.54厘米

屏幕分辨率

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

image.png

分辨率比

所谓的分辨率比就是所所的16:9 4:3。例如1920*1080 的分辨率比就是16:9,

屏幕的像素密度

屏幕的像素密度是指每英寸有多个像素。单位是dpi,dots per inch。

image.png image.png
  • 六种通用的密度:

    • ldpi(低)~120dpi
    • mdpi(中)~160dpi
    • hdpi(高)~240dpi
    • xhdpi(超高)~320dpi
    • xxhdpi(超超高)~480dpi
    • xxxhdpi(超超超高)~640dpi

密度无关像素 (dp)

Density Independent Pixels,即密度无关像素,即dp或dip。与终端上的实际物理像素点无关。可以保证在不同的屏幕像素密度的的设备上显示相同的效果。

  • 160dpi, 1dp = 1px
  • 240dpi, 1dp = 1.5px
  • 320dpi, 1dp = 2px
  • 480dpi, 1dp = 3px
  • 640dpi, 1dp = 4px

独立比例像素

Scale Independent Pixels, 即sp或sip。

Android开发时用此单位设置文字大小,可根据字体大小首选项进行缩放,推荐使用12sp、14sp、18sp、22sp作为字体设置的大小,不推荐使用奇数和小数,容易造成精度的丢失问题,小于12sp的字体会太小导致用户看不清。

mdpi、hdpi、xdpi、xxdpi

hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。

image.png

在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8 的比例进行缩放。例如,一个启动图标的尺寸为48x48 dp,这表示在 MDPI 的屏幕上其实际尺寸应为 48x48 px,在 HDPI 的屏幕上其实际大小是 MDPI 的 1.5 倍 (72x72 px),在 XDPI 的屏幕上其实际大小是 MDPI 的 2 倍 (96x96 px),依此类推。

虽然 Android 也支持低像素密度 (LDPI) 的屏幕,但无需为此费神,系统会自动将 HDPI 尺寸的图标缩小到 1/2 进行匹配。

下图为图标的各个屏幕密度的对应尺寸


image.png

ppi sp dp转换

dp-px-ppi的转换公式:

dp*ppi/160 = px

px = dp*ppi/160
dp = px / (ppi / 160)

px = sp*ppi/160
sp = px / (ppi / 160)

dp ≈ sp

相关文章

网友评论

      本文标题:Android 屏幕适配

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