Android - 如何锁定不同设备的方向?
Android - How to lock orientation for different device?
我正在尝试将 phone 锁定为纵向,将平板电脑锁定为横向。
我通常使用 AndroidManifest.xml - android:screenOrientation="portrait"
但是我怎样才能以不同的方式设置 tablet / phone 的方向呢?
谢谢!
首先检查设备是智能手机还是平板电脑,然后您可以使用以下代码
设置 activity 的方向
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
或
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
你可以查看 Determine if the device is a smartphone or tablet?
首先,您可以检测您的应用是 运行 智能手机还是平板电脑,请参阅以下 answer
现在您可以使用以下代码锁定方向:
If(isTablet)
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
使用Java代码。在 java class 中,您想要进行特殊定位,请使用此代码:
if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_XLARGE) {
// on a X large screen device ...
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_LARGE) {
// on a large screen device ...
// do everythings you want to do ...
} else {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
并且在片段中使用 "getActivity()" 而不是 "this"。为了使设备视图灵活,请使用此代码:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
也许有用。祝你好运。
最好的解决办法是从特定值的res文件夹中加载一个参数。因此,如果您的应用在平板电脑上 运行,则屏幕密度必须大于或等于 600dp。
在文件夹中:res/values-sw600dp/ 使用参数创建 xml:
<resources>
<bool name="isTablet">true</bool>
</resources>
在文件夹 res/values/ 中用参数
创建 xml
<resources>
<bool name="isTablet">false</bool>
</resources>
之后,您将能够使用以下代码检查应用是 运行 在平板电脑上还是 phone:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
来源:
https://developer.android.com/guide/practices/screens_support.html
我正在尝试将 phone 锁定为纵向,将平板电脑锁定为横向。 我通常使用 AndroidManifest.xml - android:screenOrientation="portrait" 但是我怎样才能以不同的方式设置 tablet / phone 的方向呢? 谢谢!
首先检查设备是智能手机还是平板电脑,然后您可以使用以下代码
设置 activity 的方向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
或
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
你可以查看 Determine if the device is a smartphone or tablet?
首先,您可以检测您的应用是 运行 智能手机还是平板电脑,请参阅以下 answer
现在您可以使用以下代码锁定方向:
If(isTablet)
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
使用Java代码。在 java class 中,您想要进行特殊定位,请使用此代码:
if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_XLARGE) {
// on a X large screen device ...
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_LARGE) {
// on a large screen device ...
// do everythings you want to do ...
} else {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
并且在片段中使用 "getActivity()" 而不是 "this"。为了使设备视图灵活,请使用此代码:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
也许有用。祝你好运。
最好的解决办法是从特定值的res文件夹中加载一个参数。因此,如果您的应用在平板电脑上 运行,则屏幕密度必须大于或等于 600dp。
在文件夹中:res/values-sw600dp/ 使用参数创建 xml:
<resources>
<bool name="isTablet">true</bool>
</resources>
在文件夹 res/values/ 中用参数
创建 xml<resources>
<bool name="isTablet">false</bool>
</resources>
之后,您将能够使用以下代码检查应用是 运行 在平板电脑上还是 phone:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
来源:
https://developer.android.com/guide/practices/screens_support.html