一、背景
当需要在pad和手机上做不同的适配的时候就需要判断一个设备是否为pad,那么如何判断一个设备是pad就成了需要解决的问题。
二、解决方案
- 根据屏幕最小宽度判断是否为pad,例如把最小宽度大于550dp的设备标示为pad小于550dp的设备标示为手机。
- 根据最小宽度选择出来的设备有时是手机(例如小米max系列)这时就需要从打电话维度来判断是否为pad。
三、代码实现
1、首先创建一个一下三个维度的资源文件夹,在小于550dp的dimens.xml中device_pad_value设置为0,在大于等于550dp的dimens.xml中device_pad_value设置为1,这样就可以根据Android系统的资源适配方案区别出来最小宽度大于550dp的设备了。

示例:
//480dp
<resources>
<!--用于判断是否是pad-->
<dimen name="device_pad_value">0px</dimen>
</resources>
//550dp
<resources>
<!--用于判断是否是pad-->
<dimen name="device_pad_value">1px</dimen>
</resources>
//720dp
<resources>
<!--用于判断是否是pad-->
<dimen name="device_pad_value">1px</dimen>
</resources>
2、然后根据是否可以打电话来过滤大于550dp的手机
/**
* 判断当前设备是手机还是平板
*
* @return 平板返回 True,手机返回 False
*/
fun isPad(context: Context): Boolean {
//根据屏幕最小宽度判断是否为pad,手机的padValue为0
val padValue = context.resources.getDimensionPixelSize(R.dimen.device_pad_value)
if (padValue <= 0) {
//根据屏幕最小宽度判断出是手机后再根据是否可以打电话过滤pad
val telephony = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
return telephony.phoneType == TelephonyManager.PHONE_TYPE_NONE
}
return true
}
本文介绍了如何在Android中通过屏幕最小宽度和设备是否能打电话来判断是手机还是平板。首先,通过在不同尺寸的dimens.xml文件中设置device_pad_value来区分屏幕大小。然后,如果设备的device_pad_value小于等于0,再检查设备是否具有电话功能,如果无电话功能则确定为平板。这种方法能够有效过滤掉如小米Max等大屏手机。
2569

被折叠的 条评论
为什么被折叠?



