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
Сообщение
math64 » 10 дек 2012, 12:43
Какая версия андроида? Если больше 3.0 - при повороте изменяются размеры экрана
Код: Выделить всё
<activity
android:name=".activities.StartActivity"
android:configChanges="keyboardHidden|orientation|screenSize" >
</activity>
Файлы для layout должны называться одинаково, но располагаться в разных папках:
-
JDev
- Сообщения: 88
- Зарегистрирован: 05 авг 2012, 19:42
Сообщение
JDev » 10 дек 2012, 12:51
Какая версия андроида? Если больше 3.0 - при повороте изменяются размеры экрана
- да, разрабатываю под 4, но включил в проект поддержку API8, может уже нету смысла?
Хммм, а почему мой вариант не работает? Интернет пестрит только такими примерами, о том что лейоуты должны называться одинково - первый раз от вас слышу.
Файлы для layout должны называться одинаково, но располагаться в разных папках:
- да еще и вот так. А почему лейоуты должны быть в res, да еще и по разных папках.
Просто так должно быть - для меня тоже будет ответом.
О этом не написано на офф сайте. И почему не работатет тот пример что на офф сайте?(
Спасибо!
-
math64
- Сообщения: 235
- Зарегистрирован: 16 июл 2012, 07:47
Сообщение
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
Сообщение
JDev » 10 дек 2012, 13:59
Спасибо за хороший ответ.
Тоисть минимальную версию выставляю API13. И не нужно будет линтов. )
Оу, и такой информации я не встречал..
Не, мне только кнопочки переставить, просто изменить менюшку.
-
math64
- Сообщения: 235
- Зарегистрирован: 16 июл 2012, 07:47
Сообщение
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
Сообщение
JDev » 10 дек 2012, 14:29
Я не так выразился, я имел в виду свое меню, обычный Таблелейоут с 4 кнопками. )