【发布时间】:2014-02-24 05:39:43
【问题描述】:
您好,我创建了一个应用程序,我想在启动时检测平板电脑或手机。
我有 5.5 英寸的平板电脑。
如何实现?
【问题讨论】:
-
@GopalRao 在这个链接里,什么是SharedCode(SharedCode.width)?
您好,我创建了一个应用程序,我想在启动时检测平板电脑或手机。
我有 5.5 英寸的平板电脑。
如何实现?
【问题讨论】:
试试这个
public static boolean isTabletDevice(Context activityContext) {
// Verifies if the Generalized Size of the device is XLARGE to be
// considered a Tablet
boolean xlarge = ((activityContext.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_XLARGE);
// If XLarge, checks if the Generalized Density is at least MDPI
// (160dpi)
if (xlarge) {
DisplayMetrics metrics = new DisplayMetrics();
Activity activity = (Activity) activityContext;
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
// MDPI=160, DEFAULT=160, DENSITY_HIGH=240, DENSITY_MEDIUM=160,
// DENSITY_TV=213, DENSITY_XHIGH=320
if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT
|| metrics.densityDpi == DisplayMetrics.DENSITY_HIGH
|| metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM
|| metrics.densityDpi == DisplayMetrics.DENSITY_TV
|| metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) {
// Yes, this is a tablet!
return true;
}
}
// No, this is not a tablet!
return false;
}
【讨论】:
在 android 中有一些目录,如 values-normal-ldpi 访问手机的尺寸,values-sw600dp 访问 7 英寸平板电脑和 values-sw720dp 访问 10 英寸平板电脑。您可以在这些目录中使用布尔变量,例如:-
<bool name="is_tablet">true</bool>
为平板电脑目录设置为真,为手机设置为假。 像
一样访问它 context.getResources().getBoolean(R.bool.is_tablet);
如果返回 true,则为平板电脑,否则为手机。
【讨论】: