#java #android #xml #landscape
#java #Android #xml #альбомная
Вопрос:
Я отображаю начальную заставку, создав Splash_Screen
класс и установив мой манифест следующим образом:
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Splash_Screen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
мой Splash_Screen
класс выглядит следующим образом:
public class Splash_Screen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(getApplicationContext(), MainActivity.class));
}
}, 3000);
}
}
Я создал файл макета по умолчанию для заставки:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Splash_Screen">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/splash_default"/>
</RelativeLayout>
и после этого на панели предварительного просмотра я создал второй XML-файл, выбрав выпадающее меню «ориентация для предварительного просмотра» и выбрав «создать альбомную версию». В новом файле я заменил ImageView
исходный файл. Моя структура макета выглядит следующим образом:
Теперь, когда приложение отображает экран-заставку, а я нахожусь в альбомном режиме (независимо от того, запустил ли я этот способ или переключился на него из портретного режима), приложение завершает работу. Внутри приложения он не будет аварийно завершать работу в альбомном режиме.
Что я пропустил?
Комментарии:
1. Просто помните, что при каждом повороте экрана действие воссоздается. Вы должны сохранить состояние своей активности. Я предполагаю, что ваше приложение выходит из строя в этой строке (startActivity (новое намерение (getApplicationContext(), MainActivity.class ));)?? Было бы неплохо, если бы мы увидели журнал.
2. Это не то, как вы должны создавать экран загрузки… Даже ради брендинга это ужасный подход. Это лучше bignerdranch.com/blog/splash-screens-the-right-way
3. @ZUNJAE Я согласен с вами, и я сделал это так, как описано там. Но как я могу установить разные изображения для разных размеров экрана / ориентации там?
4. developer.android.com/training/multiscreen/screendensities
5. @ZUNJAE Я вижу, как эта статья помогает при разных размерах экрана, поэтому я могу использовать изображения с разными разрешениями, но у меня также разные изображения для ориентации, и я не вижу подсказки для этого в этой статье. Было бы лучше заблокировать альбомный режим во время экрана загрузки (если это вообще возможно)?