我希望我的视图仅在横向模式下旋转,顺时针和逆时针旋转。
我读到了关于android<逆时针的唯一内容2.2这不是问题,我的App现在是+2.2。
我修改我的清单以捕获配置更改
android:configChanges="keyboardHidden|orientation"
我覆盖我的活动以捕获配置更改
@Override
public void onConfigurationChanged(Configuration newConfig) {
我知道如何抓住方向
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int rot = display.getRotation();
但是......我不知道如何触发适当的横向方向,我这样做:
if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
但总是旋转到counterclocwise: - (
如何设置左右横向?
修改的
如果我在清单中设置方向:
机器人:screenOrientation = “风景”
活动的布局始终保持在“左侧风景”中,我希望在左右风景之间进行更改:S
答案 0 :(得分:58)
如果您要为Android 2.3及更高版本构建应用,则应将清单属性设置为
机器人:screenOrientation = “sensorLandscape”
并且您的应用将旋转到(左侧或右侧)横向位置。
如果您正在构建适用于Android 2.2及更早版本的应用,但想要在Android 2.3及更新版本上运行它作为“sensorLandscape”配置,那么您可以尝试这样的事情
public static final int ANDROID_BUILD_GINGERBREAD = 9;
public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) {
setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
...
在我的案例中,这是处理横向更改的最佳方式。我无法找到更好的方法将屏幕旋转到Android 2.2及更早版本的左右横向方向。 我尝试读取传感器方向并根据它设置横向位置,但在我看来,只要你调用“setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);”传感器关闭(对于您的应用/活动),您无法通过传感器读取方向。
顺便说一句,你真的不需要覆盖“onConfigurationChanged(配置newConfig)”,以使其中的任何一个正常工作。
答案 1 :(得分:6)
在清单活动声明中,而不是
android:screenOrientation = "landscape"
使用
android:screenOrientation = "sensorLandscape"
答案 2 :(得分:1)
您是否尝试将此项添加到活动代码中的清单中,以查看它是否自动处理?
android:screenOrientation = "landscape"
答案 3 :(得分:0)
AndroidManifest.xml - >申请 - >选择了您的活动 - >屏幕方向=风景。