Чудно не срабатывает поворот экрана?! Гляньте..

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение JDev » 09 дек 2012, 22:13

Тема в инете заезжена, но я не могу понять, понять почему у меня не меняется layout при повороте экрана??

Вот из манифеста

Код: Выделить всё

        <activity
            android:name=".activities.StartActivity"
            android:configChanges="keyboardHidden|orientation" >
        </activity>
Я уже и так и сяк пробую, не реагирует..

Код: Выделить всё


public class StartActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		changeDisplayOrientation();
	}

	private void changeDisplayOrientation() {
		int orientation = this.getResources().getConfiguration().orientation;
		if (orientation == Configuration.ORIENTATION_PORTRAIT) {
			setContentView(R.layout.activity_start_portrait);
		} else {
			setContentView(R.layout.activity_start_landscape);
		}
	}

	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
		if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
			setContentView(R.layout.activity_start_landscape);
		} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
			setContentView(R.layout.activity_start_portrait);
		}
	}
}

вот здесь вроде так же написано...
http://developer.android.com/guide/topi ... anges.html

Спасибо за подсказки.

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение math64 » 10 дек 2012, 12:43

Какая версия андроида? Если больше 3.0 - при повороте изменяются размеры экрана

Код: Выделить всё

<activity
    android:name=".activities.StartActivity"
    android:configChanges="keyboardHidden|orientation|screenSize" >
</activity>
Файлы для layout должны называться одинаково, но располагаться в разных папках:

Код: Выделить всё

res
   layout
     start.xml
   layout-land
     start.xml

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

Re: Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение JDev » 10 дек 2012, 12:51

Какая версия андроида? Если больше 3.0 - при повороте изменяются размеры экрана
- да, разрабатываю под 4, но включил в проект поддержку API8, может уже нету смысла?

Хммм, а почему мой вариант не работает? Интернет пестрит только такими примерами, о том что лейоуты должны называться одинково - первый раз от вас слышу.
Файлы для layout должны называться одинаково, но располагаться в разных папках:
- да еще и вот так. А почему лейоуты должны быть в res, да еще и по разных папках.
Просто так должно быть - для меня тоже будет ответом.
О этом не написано на офф сайте. И почему не работатет тот пример что на офф сайте?(

Спасибо!

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение math64 » 10 дек 2012, 13:08

API8 не понимает screenSize - поэтому нужно компирироваться под API13 или выше.
На старые диалоги и т.п. - будет давать предупреждения, поэтому нужно создать файл lint.xml для их отключения.
Называть layout одинаково, но размещать в отдельных каталогах - удобнее, Android сам выберет нужный. Всё это описано на developer.android.com
В данном случае, в ландшафтной ориентации будет выбран файл res/layout-land/start.xml, а в портретной (и квадратной) - res/layout/start.xml
Можно добавить отдельные ресурсы в зависимости от размера экрана (-large), разрешения экрана(-hdpi, -ldpi, -mdpi, -xdpi, -nodpi), языка (-ru), версии андроида (-v11) и т.п.
Android сам найдёт нужный, без изменения кода.

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

Re: Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение JDev » 10 дек 2012, 13:59

Спасибо за хороший ответ.
Тоисть минимальную версию выставляю API13. И не нужно будет линтов. )
Оу, и такой информации я не встречал..
Не, мне только кнопочки переставить, просто изменить менюшку.

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение math64 » 10 дек 2012, 14:14

Минимальную можно оставить 8, текущую 13 или выше (луше ту, на которой отлаживаетесь)
С менюшкой нужно так:
res/values/style.xml (для старых api - есть кнопка меню)

Код: Выделить всё

<resources>
    <style name="AppTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
          -->
    </style>
</resources>
res/values/style-v11.xml (вызов меню кнопкой справа в заголовке, если есть место, меню будет в заголовке)

Код: Выделить всё

<resources>
    <!--
        Base application theme for API 11+. This theme completely replaces
        AppBaseTheme from res/values/styles.xml on API 11+ devices.
    -->
    <style name="AppTheme" parent="android:Theme.Holo.Light">
        <!-- API 11 theme customizations can go here. -->
    </style>
</resources>
res/values/style-v14.xml

Код: Выделить всё

<resources>
    <!--
        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.
    -->
    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
    </style>
</resources>
меню:

Код: Выделить всё

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_item"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:title="@string/menu_item"/>
</menu>

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

Re: Чудно не срабатывает поворот экрана?! Гляньте..

Сообщение JDev » 10 дек 2012, 14:29

Я не так выразился, я имел в виду свое меню, обычный Таблелейоут с 4 кнопками. )

Ответить