2013-09-22 40 views
0

这是的情况:强制定位,同时保持允许设备方向更改?

我有一个简单的活动,在方向更改期间更改其内容。

我希望能够强制相反的方向(横向 - >纵向,纵向 - >横向),以响应点击某个按钮,然后仍然处理方向更改。

我会尝试用一个具体的例子来解释自己(我想完成) -

比方说设备处于纵向模式 - >这样的活动开始在纵向模式。
现在用户点击某个按钮,这在反应中强制活动处于横向模式。
现在用户将设备旋转到横向模式,但是没有任何事情会发生在活动上,因为活动已被强制为横向模式。
现在用户将设备旋转回肖像模式,并且活动再次变为肖像模式。

所以,这里就是我的力作用方向:

public void onButtonClick() 
{ 
    if (mLastOrientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
    } 

    else 
    { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
    } 
} 

而这里的方向变化处理:

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 

    int currentOrientation = newConfig.orientation; 

    // 
    // Some UI changes according to orientation ............. 
    // 

    mLastOrientation = currentOrientation; 


    // Here's where I'm allowing device orientation changes again 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 
} 

的问题是,当我打电话setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED), 该活动正在改变回当前的设备定位 - 这导致强制定位无法正常工作。

任何想法如何解决这个问题?

在此先感谢!

回答

0

可能每次按下按钮时都会调用我认为,因为即使将其设置为横向或纵向,也会更改配置,但它会回到未指定状态!请尝试将setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 置于onCreate()之内,我认为这解决了您的问题?

Button clicked - >方向已更改,意味着配置已更改 - >触发器 - >将其更改为UNSPECIFIED

如果你把它放在onCreate()它只会发生一次,当你启动应用程序。