在不同高度的设备上执行启动屏幕

时间:2019-01-02 23:40:27

标签: android android-drawable splash-screen

因此,我使用android:windowBackground属性实现了启动屏幕。基本上,我有LoginActivity的样式(应用程序中弹出的第一个屏幕)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyLoginTheme" parent="MyAppTheme">
        <item name="android:windowBackground">@drawable/drawable_login_background</item>
    </style>
</resources>

我有一个可绘制的drawable_login_background,它基本上是一个带有图像和蓝色覆盖层的图层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/ic_login_background_xhdpi"/>
    </item>
    <item>
        <color android:color="@color/blueOverlay"/>
    </item>
</layer-list>

在三星J7(h1280xw720,xhdpi)上看起来很完美,但在Moto G Play(h1400x720,xhdpi)上看起来还不错。事实是两个设备都是xhdpi,所以我不能使用drawable文件夹来选择不同大小的不同drawable。

有没有一种方法可以根据高度选择不同的可绘制对象?

注意

请注意,windowsBackground属性采用可绘制属性,有些人曾提到使用layout-swWIDTH-shHEIGHT布局文件夹,但是这些文件夹将根据屏幕高度和大小加载不同的布局。我并不是仅仅为了使用WindowsBackground而使用WindowsBackground,而是使用windowsBackground设置应用程序的样式可以让您更快地显示初始屏幕。

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案,我最终将Samsung 1280x720的可绘制对象拖到drawable文件夹中,将更大的Moto G Play 1440x720的可绘制对象拖到drawable-large中。我猜想,如果您想区分xhdpi,hdpi等,您只需要在末尾添加限定符即可。

我从未意识到,如果您在Android Studio上的res文件夹中单击鼠标右键,然后点击Create new Resource Directory,那么您可以从左侧选择要匹配的限定词并建立目录的名称为你。