从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值,但无济于事:它有点太低,或者有点太高。
有没有办法在闪屏中获取位图的位置?有没有办法让两个徽标都具有相同的位置?
答案 0 :(得分:0)
最终对我有用的是我在“活动布局”中添加了
android:layout_marginTop="24dp"
然后我的图标在同一位置上绘画。