android不同分辨率,Android不同分辨率适配

一、相关知识点:

1.首先先了解五个东西:dp 、dip、dpi、density 、屏幕大小

dip : Density independent pixels ,设备无关像素。

dp :就是dip

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

density :  密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)

屏幕大小:屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位。比如某某手机为“5寸大屏手机”,就是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米。

换算公式:

dp = dpi /(160像素/英寸))   px = density * dp

也就是说dp与屏幕密度有关,所以在对控件的长宽设置时使用dp的话,他显示时会根据设备的屏幕密度计算出px值,实现适配。

2.Android中获取到dp与density:

DisplayMetrics metrics=new DisplayMetrics();

WindowManager m=(WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE);

m.getDefaultDisplay().getMetrics(metrics);

System.out.println("++++++++++++++++++++++++++"+metrics.density);

System.out.println("++++++++++++++++++++++++++"+metrics.densityDpi);

除此之外也可以进行dp与px的转换,通过获取到设备的密度density ,利用PX = density * DP

每部安卓手机屏幕都有一个初始的固定密度,这些数值是120、160、240、320、480,我们权且称为“系统密度”。240×320的屏幕是低密度120dpi,即ldpi;320×480的屏幕是中密度160dpi,即 mdpi;480×800的屏幕是高密度240dpi,即hdpi;720×1280的屏幕是超高密度320dpi,即xhdpi;1080×1920的 屏幕是超超高密度480dpi,即xxhdpi。

二、Android不同分辨率屏幕的适配做法小结

1.尽可能使用dp,字体使用sp。

这里注意的是,textview控件,利用代码创建出来的的时候,setext(float textsize);这个textsize设进去会转换为sp,所以不要转换了。

如果是在代码中设置时,可以通过获取到density后进行dp与px的转换,尽量使用dp。

2.在drawable 、 drawable-hdpi、 drawable-mdpi 、drawable-xhdpi 、drawable-xxhdoi文件夹下放不同分辨率的图片,系统会自动根据设备屏幕密度加载不同文件夹下面的图片。

3.对于不同的屏幕大小创建不同的layout。

a.首先在manifest里面设置要支持的屏幕:

android:anyDensity="true"

android:largeScreens="true"

android:normalScreens="true"

android:smallScreens="true"

android:xlargeScreens="true" />

b.在res文件夹下面创建layout-large 、layout-small 、layout -normal 文件夹,放置对于不同屏幕大小的布局文件,系统的根据设备情况加载相应的布局。

4.可以创建不同的values文件夹,存放不同尺寸的图片去支持不同屏幕。

5.对于布局的或者view的大小设置,可以通过获取屏幕的大小然后拿屏幕的比例大小去设置,比例大小可以通过判断屏幕大小的值的动态获取。

6.一直觉得如果使用屏幕百分比去调整尺寸,将非常好的完成适配问题,起码很大程度上做到了。所以做法是5的做法,后来发现了一个有个开源的百分比布局 。所以现在我做法是,图片只只使用最大尺寸的,那么只保留一份,然后使用百分比布局,按照屏幕的百分百尺寸,基本能绝大多数的需求了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值