我尝试在此https://www.bignerdranch.com/blog/splash-screens-the-right-way/之后创建启动画面,其中主活动的自定义主题用于显示启动画面。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
但是我需要在主题的layer-list项目中使用图像作为背景而不是纯色。问题是,正如许多人在其他地方指出的那样,似乎无法按比例缩放中心裁剪的背景图像填充屏幕,就像在布局中使用ImageView一样。 我试图根据屏幕尺寸以编程方式创建一个新的位图drawable,然后替换原来的drawable。 然而,这并不起作用,因为主要活动主题在启动后立即显示,并且在应用程序的构造函数或活动的构造函数或其onCreate被调用之前。 无论如何在主要活动主题的windowBackground显示在屏幕上之前替换那个drawable?
答案 0 :(得分:0)
。我试图根据屏幕尺寸以编程方式创建一个新的位图drawable,然后替换原来的drawable。但这并不起作用,因为主要活动主题在启动后立即显示,并且在应用程序的构造函数或活动的构造函数或其onCreate被调用之前。
对于您正在使用的方法,当您使用在活动开始之前调用的主题时,您的 java代码将无用与启动屏幕。所以我唯一能想到的就是在drawable 本身进行更改。
问题是,正如许多人在其他地方指出的那样,似乎无法按比例缩放中心裁剪的背景图像填充屏幕,就像在布局中使用ImageView一样。
这是棘手的地方。对于我们来说,在填充屏幕时保持比例将需要完成图像本身。最好的方法是为每个特定尺寸的屏幕(ldpi,mdpi,hdpi,xhdpi,xxhdpi)创建图像。将这些图像加载到可绘制的各种显示尺寸(例如:drawable-hdpi将存储hdpi分辨率的图像)将允许图像大小在各种屏幕分辨率下几乎保持不变。
以下链接将为各种显示提供最小屏幕尺寸。 https://stackoverflow.com/a/42177842/7550472
通过一些 试验 ,您可以在启动画面中获得所需尺寸的图片,并且需要无需更改代码从你那边。您所要做的就是为不同的显示器设置各种尺寸的图像,它将按照您的规范工作。
注意:对于图像大小调整,您可以使用Adobe Photoshop(我发现它更容易使用)。
根据偏好,您还可以使用 9 Patch image ,以便图像的边框可以拉伸以适应屏幕的大小,而不会影响图像的静态区域。
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch