安卓启动画面拉伸问题

3

我正在尝试使用这篇教程来创建一个启动画面,通过添加额外的主题实现。

这是我在styles.xml中的启动主题:

    <style name="AppTheme.Launcher" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <item name="android:windowBackground">@drawable/ic_launch_screen</item>
        <item name="colorPrimaryDark">@color/color_white</item>
    </style>

这是ic_launch_screen.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/color_white" />
    <item>
        <bitmap android:src="@drawable/ic_splash_screen" />
    </item>
</layer-list>
ic_splash_screen文件已经是一个9-patch文件,外观如下:

enter image description here

在Android Studio中的9-patch预览中,如果拉伸,图标不会被缩放,看起来完美对齐。
然而,当我将它与其他组件结合使用时,在华为和三星上,启动屏幕看起来被拉伸了,但在Pixel 2模拟器上看起来完美无缺:
华为Mate 10 Pro和三星Galaxy s9+(它们被以相同的方式拉伸):

enter image description here

在模拟器上,它看起来像这样:

enter image description here

问题不是由于系统导航。即使我在华为上使用与模拟器相同的三键导航,它仍然看起来被拉伸了。
我已经尝试过在ic_launch_screen.xml中使用<nine-patch>元素或gravity:center属性进行调整,但看起来更混乱了。

@tripleee 谢谢你的帮助。我该如何让图片更小一些?我只是点击了图片,然后从我的电脑中选择了一个。 - René Jörg Spies
1
有四种不同的尺寸可供选择;用户界面很遗憾没有为您发现此功能提供任何帮助。请访问 https://meta.stackoverflow.com/questions/253403/how-to-reduce-image-size-on-stack-overflow。 - tripleee
这个在另一个帖子上的答案对我来说最有效:https://dev59.com/wVsW5IYBdhLWcg3wk34q#60124091 - Luc
1个回答

4

我不确定为什么九宫格拉伸(9 patch)效果不好,但我可以提供一个解决方案。你可以创建两个drawable,第一个带有文本pass13,另一个带有logo。现在你可以创建以下图层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/color_white" />
    <item>
        <bitmap
            android:gravity="center" 
            android:src="@drawable/drawable1" />
    </item>
    <item>
        <bitmap
            android:gravity="center|bottom" 
            android:src="@drawable/drawable2" />
    </item>
</layer-list>

现在它应该能够良好地缩放。

你的方法很好用,谢谢。但是现在我的标志不够清晰,可以看这里:https://imgur.com/TohqwjD。你有什么关于如何让它们更清晰的技巧吗?如果我使用大于256像素的图像大小,它会再次缩放得很糟糕。 - René Jörg Spies
1
@RenéSpies 你的可绘制资源有在所有5个维度(mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi)中吗? - UrosKekovic
不行,我怎么能实现这个? - René Jörg Spies
1
没有捷径可以实现这一点。设计师使用他们的工具以不同的尺寸导出资源。此外,如果您的资源是SVG(矢量资源),则在缩放时不会失去质量。 - UrosKekovic
我无法使用内置工具创建矢量资源。在谷歌搜索错误代码时,我找不到任何解决方案,因此我在这里打开了一个新问题:https://stackoverflow.com/questions/59911183/android-studio-vector-asset-tool-content-not-allowed-in-prolog - René Jörg Spies
1
我解决了这个问题。我让我的平面设计师将标志制作成SVG格式,他也做到了。然后我就能够在Android Studio中使用内置工具通过这个SVG文件创建矢量资产,而不需要任何努力,现在看起来非常棒。 - René Jörg Spies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接