У меня была похожая проблема. Я исправил это. Вот решение.
Создайте только один макет для заставки, но создайте разные изображения для LANDSCAPE
и PORTRAIT
. Поскольку у вас есть только один макет, то есть портрет, действие не будет воссоздано. Но фоновое изображение будет меняться, обеспечивая эффект изменения ориентации.
Запишите следующий код в onCreate.
setContentView(R.layout.splash);
splashImage = (ImageView) findViewById(R.id.splash_img);
int orient = getWindowManager().getDefaultDisplay().getOrientation();
if (orient == 0) {
splashImage.setBackgroundResource(R.drawable.splash_portrait);
} else {
splashImage.setBackgroundResource(R.drawable.splash_landscape);
}
Переопределить onConfigurationChanged
Метод
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int orient = getWindowManager().getDefaultDisplay().getOrientation();
if (orient == 0) {
splashImage.setBackgroundResource(R.drawable.splash_portrait);
} else {
splashImage.setBackgroundResource(R.drawable.splash_landscape);
}
}
SplashActivity в манифесте должно выглядеть следующим образом
<activity
android:name="SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>