在布局/绘图发生之前如何更改屏幕方向?

时间:2011-09-26 01:34:01

标签: android android-activity orientation

我想在启动时设置子活动的方向。方向必须在运行时设置,而不是在XML中设置。所以我把它的代码放在onCreate()中。我也有

android:configChanges="orientation|screenSize"

在活动的清单中。但是当活动开始时,它首先以错误的方向绘制屏幕,​​然后进行更改。如何消除这种狡猾?

这与此主题有关:how to define the screen orientation before the activity is created?。此外,我知道自从我处理配置更改后,我的活动才会启动一次。

这是我在onCreate中的代码:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
orientation = sharedPref.getString("orientation_pref", "Auto");
setOrientation(orientation);

setContentView(R.layout.grid);

由于某种原因,它会在加载R.layout文件后更改方向。

1 个答案:

答案 0 :(得分:0)

只需在android-manifest xml中定义方向

即可
 <activity android:name=".MyActivity"
           android:screenOrientation="portrait">

如果您在“活动”之间移动并且由于此而导致闪烁,请将此xml属性添加到您的活动中

 android:launchMode="singleTask"

在onCreate

中使用用户pref尝试setContentView
 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
 boolean portrait = prefs.getBoolean(KEY_ORIENTATION, true);
 if (portrait) {
     setContentView(R.layout.myactivity);
 else {
     setContentView(R.layout-land.myactivity);
 }