android最小宽度限定符,Android使用最小宽度限定符时最小宽度的计算

Android开发中最头疼的问题之一就是兼容不同尺寸和分辨率的设备。这里推荐一篇总结的比较完整的《Android开发:最全面、最易懂的Android屏幕适配解决方案》。这篇文章对屏幕兼容的许多问题都做了详述,这里只补充一点,就是关于在使用最小宽度限定符时这个最小宽度的该如何计算。

最小宽度限定符可以使用一个与屏幕像素密度无关为单位(dp)的数值区分出的不同设备,以应用不同的资源。如下图中values-sw600dp的sw表示最小宽度,那么600dp是如何确定的呢?

93c13650e5df2103156273f8468c86fa.png

举个例子:一般情况下我们可以容易知道设备的分辨率和尺寸的参数。比如现在有平板A(分辨率1280*720px,尺寸是8inch),手机B(分辨率1920*1080px,尺寸是5.7inch),手机C(分辨率1280*720px,尺寸是5inch)。通过下面的屏幕像素密度的计算公式,我们可以分别计算出他们的屏幕像素密度:

39ce73440e0f588a73ff6fd2439d9743.png

平板A约为184dpi,手机B约为386dpi,手机C约为293dpi。

接下里需要注意的是,最小宽度是不考虑横屏或竖屏的,也就是说最小宽度是设备屏幕四条边里最短的那两条边。如果需要考虑横竖屏那么可以加入屏幕方向限定符,这不在我们讨论之列。那么接下来我们取最短边的像素数,并通过下面的公式计算最小宽度(dp):

平板A约为626dp,手机B约为448dp,手机C约为393dp。

0f6d91711ff2bd764f91cf7af83ed5b1.png

如上,使用600dp就可以区分出平板和手机两类设备,如果需要详细区分手机B和C可以再考虑设置sw400dp作为区分。

理论上以上方法是成立的,但是一些定制的设备是允许修改屏幕密度和最小宽度的,比如华为手机的开发者模式,以及3288的开发板,所以,真正的最小宽度还是要靠计算获得。以下连接是计算方法

http://landcareweb.com/questions/37447/ru-he-zhi-dao-androidshe-bei-de-zui-xiao-kuan-du-sw

其实主要用到了以下类:

1 DisplayMetrics dm =mActivity.getApplicationContext()2 .getResources().getDisplayMetrics();3 float screenWidth = dm.widthPixels /dm.xdpi;4 float screenHeight = dm.heightPixels / dm.ydpi;

或者更直接的方法

Configurationconfig =getResources().getConfiguration();config.smallestScreenWidthDp

最后一行返回dp中的SW值!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值