在Android上禁用屏幕旋转

问题描述:

当我按下按钮时,我想禁用屏幕旋转对我所有的活动。我怎样才能做到这一点?在Android上禁用屏幕旋转

顺便说一下,手机可以位于风景或肖像的位置,当用户点击按钮。

我已经找到了解决办法:

中的manifest.xml:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" android:name="MyApplication"> 

在MyApplication.java:

public class UPackingListApplication extends Application { 

    public void onConfigurationChanged(Configuration newConfig) { 
     newConfig.orientation = [orientation we wanna to use (according to ActivityInfo class)]; 
     super.onConfigurationChanged(newConfig); 
    } 


} 
+0

我已经在活动级别尝试过这一点,它可以将内部方向跟踪设置为任何设置,但在实际停止方向变化或能够物理设定方向方面,它似乎不起作用。 – 2011-02-25 21:04:44

+0

你有另外的想法吗? – davs 2011-02-26 14:10:58

您可以将您的AndroidManifest.xml改变

<activity android:name="MainActivity" android:configChanges="orientation"> 

它通知你会处理这些配置的变化的OS(无为)

How do I disable orientation change on Android?

+0

我绑如下: 在清单1): 2): \t @Override \t公共无效onConfigurationChanged(配置NEWCONFIG){ \t \t \t newConfig.orientation = Configuration.ORIENTATION_LANDSCAPE; \t \t super.onConfigurationChanged(newConfig); \t} 但是无论如何活动的屏幕在设备旋转时会旋转。 我错了什么? – davs 2010-07-25 13:50:14

+1

您也可以调用super.onConfigurationChanges()来更改方向,从而旋转屏幕。使用if结构来确定方向/键盘状态是否已更改;你应该只为其他更改调用超级。 – 2010-07-25 17:20:54

+0

无论你是否称为超级,这并不重要。此回调时已发生配置更改;它只是被称为告诉你。 – hackbod 2010-07-25 18:40:48

setRequestedOrientation(ActivityInfo。 SCREEN_ORIENTATION_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

+0

如果我添加这一行,它是否适用于所有应用程序?或者它会为活动工作? – davs 2010-07-27 11:41:46

+0

它似乎只适用于活动,我调用此代码,直到我移动到另一个活动(当我返回到此活动时,defalut设置应用)..我认为这是不好的做法来调用这样的代码(检查,如果我们需要旋转和旋转屏幕)对于onResume/onSatrt方法中的所有活动 – davs 2010-07-27 12:11:37