我有两个全屏启动图像,一个用于横向,另一个用于纵向模式。我想在应用启动时根据设备的方向将这些图像实现为启动。
例如,如果应用程序从横向模式开始,则横向图像应显示为背景图像,如果应用程序从纵向模式开始,则纵向图像应显示为背景图像 我引用了以下Example
这是我设置主题的方式:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen_1</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
我为 AndroidManifest.xml
设置此主题用于启动活动 <activity
android:name=".activities.SplashActivity"
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
两个显示陆地和港口图像我在splash_screen_1.jpg
和drawable-land-hdpi
个文件夹中放置了两个具有相同名称drawable-port-hdpi
图像的图像
活动:
public class SplashActivity extends AppCompactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
startApp();
}
private void startApp() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
HomeActivity.startHomeActivity(SplashActivity.this);
finish();
}
}, 2000);
}
}
现在的问题是,当应用程序从纵向模式启动时,它可以完美地工作,但是当我们从横向模式开始时,它的启动应用程序使用纵向图像延伸几毫秒,而不是将景观图像设置为小故障
但是这个解决方案不合适,因为它在开始时显示空白屏幕几秒钟来加载图像,并且从布局加载图像需要更多时间
任何替代或适当的解决方案都会有所帮助
答案 0 :(得分:-1)
这不是你问题的答案但是......
Spash屏幕要等到活动就绪,不要让用户等待更多
那么尝试使用不同的方式制作Splash屏幕呢,它内置了
而不是白色或黑色屏幕
转到你的清单
像这样改变你的app风格
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/splashScreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
其中splashScreenTheme是
<style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
</style>
当然你可以改变父母 并制作新的drawable“Splashscreen” 这是我的
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
<!-- The background color, preferably the same as your normal theme -->
<item android:drawable="@android:color/holo_blue_light"/>
<!-- Your product logo - 144dp color version of your app icon -->
<item>
<bitmap
android:src="@drawable/splash_logo"
android:gravity="center"/>
</item>
</layer-list>
现在您的应用样式已更改 您可以在主Activity Oncreate中重置它
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme222);
}
答案 1 :(得分:-2)