tes*_*van 9 android android-layout
我需要编写一个方法来确定设备是平板电脑还是手机。我不需要根据此显示不同的用户界面。我只需要有关设备的信息,以便将来我可以将其发送到指标。
在网上,我找到了很多判断设备是否是平板电脑的方法。我已经测试了所有这些方法并且它们有效。当然,我无法在所有类型的设备上进行测试。所以我想知道确定设备是否是平板电脑的最佳且最准确的方法。
这是我能找到的方法的列表:
1) 使用最小宽度限定符
在res/values-sw600dp/attrs.xml:
<resources>
<bool name="isTablet">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
在res/values/attrs.xml
<resources>
<bool name="isTablet">false</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后:
fun isTablet() = context.resources.getBoolean(R.bool.isTablet)
Run Code Online (Sandbox Code Playgroud)
我对这种方式有顾虑。可能值得添加res/values-sw720dp/attrs.xml以下资源:
<resources>
<bool name="isTablet">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
2) 使用 TelephonyManager
fun isTablet(context: Context) =
with(context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager) {
this.phoneType == TelephonyManager.PHONE_TYPE_NONE
}
Run Code Online (Sandbox Code Playgroud)
3) 使用 Configuration:
fun isTablet(context: Context): Boolean {
return ((context.resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE)
}
Run Code Online (Sandbox Code Playgroud)
4) 使用 DisplayMetrics:
fun isTablet(activity: Activity): Boolean {
val metrics = DisplayMetrics()
activity.windowManager.defaultDisplay.getMetrics(metrics)
val yInches = metrics.heightPixels / metrics.ydpi
val xInches = metrics.widthPixels / metrics.xdpi
val diagonalInches = sqrt((xInches * xInches + yInches * yInches).toDouble())
return diagonalInches >= 6.5
}
Run Code Online (Sandbox Code Playgroud)
请帮助我找到 100% 有效的最佳方法。
这些在很大程度上是完全不同的事情。
方法 1 检查设备屏幕最小边的长度。基本上,平板电脑是指最小尺寸超过 4 英寸的设备(在任何正常屏幕分辨率下,对角线至少为英寸)。
方法2是说平板电脑是任何不能打电话的东西。
方法 3 检查其尺寸是否至少为 480x640 dp,或至少为 3 英寸 x 4 英寸。(可以小至 5 英寸对角线)。
方法4 精确测量对角线。这消除了方法 1 的一些理论问题,但它做了很多毫无意义的数学计算(而且这个实现没有优化)。
所有这一切都取决于您对平板电脑的定义。没有实际的定义。方法 1,3 和 4 是基于大小的。方法 2 的想法是,如果它具有通话功能,您就可以将其称为手机而不是平板电脑。
假设您想要一个基于尺寸的解决方案,我会选择 1。它比方法 3 更准确、更可扩展(无法区分小平板和大平板),并且比方法 4 更快(以及角点)。有些东西可以通过方法 1 但方法 4 捕获它们的情况在现实世界中确实不会发生)。
| 归档时间: |
|
| 查看次数: |
4524 次 |
| 最近记录: |