我正在尝试将手机锁定为纵向和平板电脑以横向拍摄。 我通常使用AndroidManifest.xml - android:screenOrientation =" portrait" 但是,如何设置平板电脑/手机的方向? 谢谢!
答案 0 :(得分:2)
最佳解决方案是从res文件夹中加载一个特定值的参数。因此,如果您的应用在平板电脑上运行,则屏幕密度必须很大或等于600dp。
在文件夹中:res / values-sw600dp / create xml with param:
<resources>
<bool name="isTablet">true</bool>
</resources>
在文件夹res / values / create xml with param
<resources>
<bool name="isTablet">false</bool>
</resources>
之后您可以使用以下代码检查应用是否在平板电脑或手机上运行:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
来自:
https://stackoverflow.com/a/9308284/619673
https://developer.android.com/guide/practices/screens_support.html
答案 1 :(得分:0)
首先检查设备是智能手机还是平板电脑,然后您可以使用以下代码
设置活动的方向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
或
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
答案 2 :(得分:0)
首先,您可以检测您的应用是否在智能手机或平板电脑上运行,请参阅以下answer
现在您可以使用以下代码锁定方向:
If(isTablet)
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
答案 3 :(得分:0)
使用Java代码。在要进行特殊定位的java类中,请使用以下代码:
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);
}
和片段使用&#34; getActivity()&#34;而不是&#34;这个&#34;。为了使设备的视图灵活使用此代码:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
也许有效。祝你好运。