Как изменить ориентацию экрана до макета / рисования? - PullRequest
2 голосов
/ 26 сентября 2011

Я хочу установить ориентацию субактивности при запуске. Ориентация должна быть установлена ​​во время выполнения, а не в XML. Поэтому я поместил код для этого в onCreate (). У меня также есть

android:configChanges="orientation|screenSize"

в манифесте для действия. Но когда начинается действие, оно сначала рисует экран в неправильной ориентации, а затем выполняет изменение. Как мне устранить это мерцание?

Это как-то связано с этой темой: как определить ориентацию экрана перед созданием действия? . Кроме того, я знаю, что моя деятельность начинается только один раз, так как я обрабатываю изменения конфигурации.

Вот мой код в onCreate:

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

setContentView(R.layout.grid);

По какой-то причине он меняет ориентацию после загрузки файла R.layout.

1 Ответ

0 голосов
/ 26 сентября 2011

Просто определите ориентацию в своем андроид-манифесте xml

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

Если вы перемещаетесь между действиями и у вас мерцают из-за этого, добавьте этот атрибут xml в свое действие

 android:launchMode="singleTask"

Попробуйте setContentView, используя пользовательские настройки в onCreate

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
 boolean portrait = prefs.getBoolean(KEY_ORIENTATION, true);
 if (portrait) {
     setContentView(R.layout.myactivity);
 else {
     setContentView(R.layout-land.myactivity);
 }
...