我正在通过更改
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
主题的属性。
这个 drawable/background_splash 看起来像这样
<?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/colorPrimary"/>
<item>
<bitmap
android:src="@drawable/ic_logo_black"
android:gravity="center"/>
</item>
</layer-list>
对于我的启动器 Activity ,它会在后面进行一些计算,然后有条件地导航到其他 Activity 。此计算需要服务器,因此它将在此 Activity 上停留一段时间。
为了让体验更好,我希望这个 Activity 看起来和闪屏一样。
所以我基本上是为布局做的。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_splash"
android:orientation="vertical">
</RelativeLayout>
但是,有了这个设置。我可以注意到,一旦 Logo 从启动屏幕转到启动器 Activity ,它就会向上移动大约 5-10 像素。
我的问题是,我该怎么做才能让这种转变完全消失?我显然可以硬编码一些边距。但我不确定这是否适用于所有设备尺寸。
那个 5-10px 的偏移是什么?我基本上使用确切的图像作为布局中的背景。
我注意到,如果我没有为 splashActivity 布局设置任何背景,这个问题就解决了。但我仍然想要一个背景,因为在我的用户工作流程中,用户可能会被重定向到这个屏幕。我不希望他们看到一个空的空白屏幕 =/
最佳答案
谢谢你的好问题
我找到了一种方法,将“drawable/background_splash”更改为
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
<item>
<color android:color="@color/colorPrimary" />
</item>
<item android:bottom="48dp">
<bitmap
android:src="@drawable/ic_logo_black"
android:layout_width="wrap_content"
android:tileMode="disabled"
android:layout_height="wrap_content"
android:scaleType="fitCenter"/>
</item>
</layer-list>
似乎启动布局中的条形高度(48dp)未绑定(bind)!
关于Android 使 Activity 布局看起来与可绘制的初始屏幕相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642113/