Android Splashcreen和MainActivity:应用程序图标未居中

时间:2017-08-17 09:07:22

标签: android splash-screen

从SplashScreen转换为MainActivity时,我很难让应用徽标正确居中。

对于SplashScreen,我使用以下内容:一个主题,背景XML由图层列表组成:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:opacity="opaque">

    <item android:drawable="@color/blue_accent"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_logo_big"/>
    </item>
</layer-list>

Manifest中声明的MainActivity主题是R.style.AppThem_Launcher,使用上面的XML:

<style name="AppTheme.Launcher">
    <item name="android:windowBackground">@drawable/splash_background</item>
</style>

然后在MainActivity onCreate()中,以下是诀窍:

// do some heavy stuff, like dependancy injection, lib initialisation etc,
setTheme(R.style.AppTheme); 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

这样做是完美的。不需要SplashActivity。徽标和主要颜色在整个启动时间和初始化时间内显示。

无论如何,我的问题在于徽标位置。实际上,我的MainActivity布局有一个居中的ImageView,其徽标可绘制,但位置不匹配。我相信,对于闪屏,徽标基于整个屏幕(包括系统栏)居中,而对于MainActivity,它不是(系统栏不包括在内)。

我尝试了各种技巧,例如在运行时将系统条高度的一半添加到徽标的Y值,但无济于事:它有点太低,或者有点太高。

有没有办法在闪屏中获​​取位图的位置?有没有办法让两个徽标都具有相同的位置?

1 个答案:

答案 0 :(得分:0)

最终对我有用的是我在“活动布局”中添加了

android:layout_marginTop="24dp"

然后我的图标在同一位置上绘画。