我正在开发一款支持多种不同屏幕尺寸的应用程序。我对平板电脑和手机有不同的设计。我在平板电脑中有一个列表片段和webfragment。我在手机中有一个列表片段。我的要求是,如果用户点击列表视图,如果它是平板电脑,我必须刷新数据,如果是电话,我必须去下一个活动。如何检查用户是否在Android中使用平板电脑或手机
有谁能告诉我该怎么做?
感谢
我正在开发一款支持多种不同屏幕尺寸的应用程序。我对平板电脑和手机有不同的设计。我在平板电脑中有一个列表片段和webfragment。我在手机中有一个列表片段。我的要求是,如果用户点击列表视图,如果它是平板电脑,我必须刷新数据,如果是电话,我必须去下一个活动。如何检查用户是否在Android中使用平板电脑或手机
有谁能告诉我该怎么做?
感谢
那么你可以做这样的:
private boolean isTabletDevice() {
if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb
// test screen size, use reflection because isLayoutSizeAtLeast is only available since 11
Configuration con = getResources().getConfiguration();
try {
Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast", int.class);
Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE
return r;
} catch (Exception x) {
x.printStackTrace();
return false;
}
}
return false;
}
的想法只是为了检查API级别,但在未来的平板电脑和智能手机可以使用相同的Android版本(因为他们合并平板电脑版本与ICS开始的智能手机版本),所以这不是一个好主意。
下一个挑战是使代码向后兼容反射,因为低级别Android设备API级别< 9不支持检查屏幕分辨率所需的方法。
祝你好运, Arkde
与屏幕的尺寸只有我想:
private boolean isTablet()
{
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
int width = displayMetrics.widthPixels/displayMetrics.densityDpi;
int height = displayMetrics.heightPixels/displayMetrics.densityDpi;
double screenDiagonal = Math.sqrt(width * width + height * height);
return (screenDiagonal >= 9.0);
}
它是否检查9英寸或以上? – waqaslam 2012-03-13 09:56:37
是的,如果您的设备出现则返回true – 2012-03-13 13:25:02
这对某些设备不起作用,这会返回不准确的densityDPI值。例如,有些设备在物理DPI差别很大时可能会报告160。 – SkolVikingsGuy 2012-07-23 21:02:33
在布局大,布局XLARGE和布局的布局文件中定义不同的ID。
RES /布局
<FrameLayout android:id="@+id/normal>...</FrameLayout>
RES /布局大
<FrameLayout android:id="@+id/large>...</FrameLayout>
使用ID来检测是否其平板电脑或手机(请勿平板电脑可以运行Android 2.2及电话可能运行4.0,所以这是检测的最佳方式)
当你说使用id来检查它是哪一个,你的意思是检查一个特定的布局组件是否存在?比如:findViewById(R.id.fragment_container)== null; ? – fersarr 2014-02-16 18:20:23
http://stackoverflow.com/questions/5832368/tablet-or-phone-android – 2012-03-13 09:50:49
一个简单的答案可以在这里找到: http://stackoverflow.com/a/9308284/1750829 – 2013-04-19 16:24:42