乐趣区

关于android:Android屏幕适配理论适配100机型

屏幕适配是咱们 Android 开发,陈词滥调的问题!

面试官:看你简历上写着相熟 Android 屏幕的适配,那就说一说吧

我:

1、咱们为什么要适配?

Android 零碎是凋谢的,是开源的,任何用户,开发者,手机厂商,运营商都能够对 Android 进行定制,比方小米,华为等等,还有许许多多的工控板,用的也是 Android 零碎。
于是乎,导致了运行 Android 零碎的设施,多种多样,既然设施多了,就保不齐它们有着不同的屏幕尺寸,和像素密度。只管零碎可通过根本的缩放和调整大小性能使界面适应不同屏幕,但 Android 开发者应做出进一步优化,使咱们的程序在各类屏幕上更 beautiful 的显示进去。

2、对于屏幕的几个概念

屏幕尺寸: 屏幕尺寸指屏幕的对角线的长度,单位是英寸,1 英寸 =2.54cm

比方我的小米 11Pro 的尺寸

屏幕分辨率: 屏幕分辨率是指在横纵向上的像素点数,个别以纵向像素 横向像素,19201080 示意宽度方向有 1080 个像素点,高度方向有 1920 个像素点,整个屏幕有 1920*1080 个像素

单位 px 1px= 1 像素点

屏幕像素密度(dpi): 屏幕像素密度是指每英寸上的像素点数,单位是 dpi,即 dot per inch 的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关系,在繁多变动条件下,屏幕尺寸越小,分辨率越高,像素密度越大

密度类型 代表的分辨率(px) 屏幕像素密度(dpi)
低密度(ldpi) 240×320 120
中密度(mdpi) 320×480 160
高密度(hdpi) 480×800 240
超高密度(xhdpi) 720×1280 320
超超高密度(xxhdpi) 1080×1920 480

分辨率是宽×高

密度无关像素: density-independent pixel ,dp 或者 dip,就是咱们 Android 开发时用的宽度单位,能够保障在不同屏幕像素密度的设施上显示雷同的成果

dp 和 PX 转换

dpi 就是屏幕像素密度,160 这个值是谷歌官网规定的一个值,

规定以 160dpi(即屏幕分辨率为 320×480)为基准:1dp=1px

看以上的数据资料,咱们发现,再开发过程中咱们去应用 dp 的话,Android 依据屏幕像素密度去适配了,然而为什么咱们写进去的页面还是成果不现实呢!

3、Android 屏幕适配计划

那是因为咱们 UI 在给咱们图的时候屏幕宽度是一个固定值,然而因为 Android 手机的屏幕的多样性,屏幕像素换成 dp 之后,长度也是多样性的,所以咱们依照 UI 的尺寸出完成果,成果所以不太现实,为了解决这个问题,咱们来更改一下几个参数值,来达到,咱们依照 UI 给的设计图尺寸来编写代码,在其余 Android 设施上达到一个百分比适配!

以 360dp 为宽度的设计稿为例子 density 的值就是 dpi/160

public static void setCustomDensity
    (Activity activity,final Application application){
    final DisplayMetrics appDisplayMetrics
        =application.getResource().getDisplayMetrics();
        
    final float targetDensity=appDisplayMetrics.widthPixels/360;
    final int targetDensityDpi=(int)(160*targetDensity);
    appDisplayMetrics.density=targetDensity;
    appDisplayMetrics.densityDpi=targetDensity;
    //Activty 的 DisplayMetrics 也要设置
    final DisplayMetrics activityDisplayMetrics
        =activity.getResource().getDisplayMetrics();
         activityDisplayMetrics.density=targetDensity;
    activityDisplayMetrics.densityDpi=targetDensity;
    
}
复制代码

这样就能按百分比适配了,屏幕宽度像素 / 设计稿尺寸 能把 1dp= 多少像素值算进去,也就是 density 的值,这个值算进去之后,就能算进去 360dp 的 dpi,设置完之后,再按设计稿的尺寸来,就能做到和设计稿百分比适配了

这个就是适配的外围计划,感觉适配大部分设施成果还是很好的!

作者:被忘记的凉白开
链接:https://juejin.cn/post/701139…
起源:掘金

退出移动版