你可以在这里使用一个技巧......
1)创建一个启动活动,它只在成功场景中创建一个启动实际活动时验证屏幕大小。像,
// In onCreate of startup activity
if (isTablet()) {
startActivity(new Intent(StartupActivity.this, MainActivity.class));
this.finish(); // don't forget to kill startup activity after starting main activity.
} else {
setContentView(R.layout.startup);
}
这是关键点。在其他情况下,您应该为此活动设置布局,理想情况下,该活动可以带有标签,例如“不支持设备”。和一个关闭应用程序的按钮。
2)理想情况下,如果您只想支持平板电脑,您应该将所有字符串资源放在res/values-large/strings.xml中。所以这是诀窍,只需在您的字符串资源中添加以下项目......
<string name="is_supported_screen">true</string>
现在在res/values/strings.xml创建一个新的字符串资源文件,该文件将包含相同的字符串项,但具有错误值,例如...
<string name="is_supported_screen">false</string>
注意:确保此字符串资源文件必须至少包含 StarupActivity 中使用的所有资源,例如活动标题、设备不支持消息、关闭应用按钮文本等。
3)最后在您的 StartupActivity 中编写一个方法,例如,
private boolean isTablet() {
if (Boolean.parseBoolean(context.getResources().getString(R.string.is_supported_screen))) {
return true;
} else {
return false;
}
}
它完成了...... :)
实际上这里发生的情况是,对于像平板电脑这样的大屏幕设备,将从res/values-large/strings.xml加载字符串资源,并且会找到true
,在其他设备的情况下,android 将从res/values/strings 加载资源。 xml,它将找到false
int 的isTablet()
值的方法R.string.is_supported_screen
。
最后,如果应用程序安装在平板电脑中,您的主要活动将启动,并且将显示设备不支持的消息。
我想强调这是一个技巧,因此您需要仔细执行所有步骤。任何错误,你都不会得到想要的结果。