Android make活动布局看起来与splash screen drawable相同

时间:2017-08-11 18:58:05

标签: android android-layout

我通过更改

制作启动画面
<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>

对于我的启动器活动,它会在后面进行一些计算,然后有条件地导航到其他活动。此计算需要服务器,因此它将保留此活动一段时间。

为了让体验更好,我希望此活动与启动画面看起来一样。

所以我基本上是为布局做了这个。

<?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>

但是,使用此设置。我注意到一旦从启动画面到启动器活动,徽标向上移动了大约5-10像素。

我的问题是,我能做些什么让这种转变完全消失?我显然可以硬编码一些边缘。但我不确定这是否适用于所有设备尺寸。

反正5-10px的转变是什么?我基本上使用了确切的图像作为布局中的背景。

我注意到如果我没有为splashActivity布局设置任何背景,则此问题已得到解决。但我仍然喜欢背景,因为在我的用户工作流程中,用户可能会被重定向到此屏幕。我不希望他们看到空白的空白屏幕= /

4 个答案:

答案 0 :(得分:0)

imageImageView联系起来总是更好,更安全。

SplashLauncher活动中,ImageViewRelativeLayout并将scaleType设置为centerCrop

答案 1 :(得分:0)

正如here

所解释的那样

android:background是视图组件的背景颜色(可绘制为精确),而android:windowBackground是视图所在的窗口(活动或对话框)的背景颜色。所以这可能是5px填充背后的原因之一。 (我不确定)。

另一方面,您可以通过执行以下操作动态设置启动器活动的主题:

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
}

请记住在setTheme

之前使用super.onCreate

答案 2 :(得分:0)

我没有为我的SplashActivity设置任何背景图片而离开了。

然后它是透明的,并且看到了初始窗口背景。

答案 3 :(得分:0)

谢谢您的提问!

我找到了一种方法,将'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)!