屏幕适配

本文介绍了Android平台上的屏幕适配方法,包括不同分辨率下的图片和布局资源管理策略,以及px、dp、sp等单位的区别与应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 基本概念:
屏幕大小 :物理屏幕的大小,看屏幕的对角线。
分辨率   :实际上是像素的总和。1280*720
dpi      :密度。(每英寸所展示的像素)

ldpi :320*240    ~120dpi
mdpi : 320*480    ~160dpi  (参照物)  
hdpi :480*800    ~240dpi
xhdpi: 1280*720   ~320dpi

缩放比例
l :m :h :x 0.75  参照  1.5  2.0
 3:4:6:8            0.75分3份,一份就是0.25          
 
480*800   dpi密度换算方法:


如果4个文件夹中,某个文件夹没有图片,它就会先向上找,向上没找到再向下找

问1: 如果mdpi中没有图片,那在mdpi像素的手机上怎么显示图片?
答:规则--如果4个文件夹中,某个文件夹没有图片,它就会先向上找,向上没找到再向下找。
所以它会依次向上找 hdpi,xdpi,xxdpi,把图片取出来。
① 把低像素图像拷到高分辨率手机上
 没有问题,只是会变模糊
② 把高像素图像拷到低分辨率手机上
 可能直接就崩溃了 (友盟网)

问2:低像素图片往上兼容,会变模糊的问题怎么解决?
答:① 用 9patch
② 之所以会拉伸,是要显示的时候才会拉伸。
 如果要在大屏手机上做欢迎界面,那就要做两套图,在hdpi和xdpi中都做相应分辨率的一套图。

问3:为什么把 480*800的图片  放在hdpi中?
答:假设屏幕是 4.0的。然后根据勾股定理算出来。

问4:layout 尺寸怎么适配不同分辨率手机?
答:① 在/res下创建多个 分辨率的 values-1280*720类似的目录,dimens.xml 分配不同值。
  运行时,会根据手机的分辨率找到自己合适的values-xx*xx,如果都没有就会去找默认的values目录。
    
  ② 在 /res下创建多个分辨率的 layout-1280*720类似的目录,在不同的布局中设备不同的值

  ③ 在java中通过 DisplayMetrics 得到手机屏幕的宽、高。然后动态设置布局参数。

    +0.5f  四舍五入

DisplayMetrics displayMetrics=new  DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
Constant.displayWidth= displayMetrics.widthPixels;
Constant.displayHeight= displayMetrics.heightPixels;

LinearLayout.LayoutParams params= new  LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,(int)(Constant.displayHeight*0.1f + 0.5f));

  ④ 用layout_weight 分配比例,不写具体值。

问5:px,dp,sp 有什么区别?

答:Android中长度单位介绍
Android表示单位长度的方式通常有三种表示方式:
px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。
dp(dip): 是屏幕的物理尺寸。大小为1英寸的1/72。
sp:(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
设计技巧:
如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。
dp是与密度无关,sp除了与密度无关外,还与scale无关
如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值