【发布时间】:2017-08-19 22:46:20
【问题描述】:
我有两个全屏启动图像,一个用于横向,另一个用于纵向模式。我想在应用启动时根据设备的方向将这些图像实现为启动。
例如,如果应用程序从横向模式启动,则应将横向图像显示为背景图像,如果应用程序从纵向模式启动,则应将纵向图像显示为背景图像 我参考了以下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);
}
}
现在的问题是,当应用程序从纵向模式启动时,它可以完美运行,但是当我们从横向模式启动时,它的纵向图像启动应用程序会拉伸几毫秒,然后它将横向图像设置为故障
但此解决方案不适合,因为它会在开始时显示空白屏幕几秒钟以加载图像,并且从布局加载图像需要更多时间
任何替代或适当的解决方案都会有所帮助
【问题讨论】:
-
根据您的问题中的链接 1 的解决方案应该可以工作。您是否创建了单独的文件夹并在其中添加了布局文件?图像与纵向图像不同?
-
是的...但正如我上面提到的从布局加载图像需要很多时间导致显示空白屏幕几秒钟
-
那么也许你应该优化图像。它不应该发生。
-
图像已经过优化,当我们将它们设置为主题背景时,它的工作正常......但它有一个我已经提到过的故障问题
-
为什么要投反对票??
标签: android android-layout splash-screen android-theme