显示的启动画面徽标质量很差

haj*_*jas 5 icons svg android imagemagick android-layout

我正在构建一个 Android 应用程序,它具有:

启动画面,显示应用程序的徽标

什么是有效的:

如果我在 SplashScreenActivity 的布局中设置 ImageView ,屏幕显示得非常好,并且将根据需要转到 FirstActivity 。

什么不是:

然而,这不是正确的方法,因为当应用程序启动时布局正在膨胀,它会产生延迟。我使用了推荐的方法如下:

启动文件

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/black" />
    <item
        android:gravity="center">
        <bitmap
            android:src="@drawable/logo"
            android:gravity="center"/>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

样式.xml

<style name="Splash" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash</item>
</style>
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml

<application
    android:theme="@style/Splash">
Run Code Online (Sandbox Code Playgroud)
  • 当我尝试从 mipmap 文件夹设置位图 src 时,它生成了一个小图像。

  • 由于我还有徽标的 SVG 文件,因此我尝试使用 Vector Asset 生成可绘制对象,但位图 src 需要图像,因此应用程序崩溃了。

  • 然后我尝试使用 ImageMagick、InkScape 和其他工具及其推荐的高质量图像选项从 SVG 生成 PNG。

但它仍然不如使用带有 Vector Drawable 作为源的 ImageView 那么清晰,最后我现在想不出任何其他方法。

那么,如何才能获得与所有其他应用程序相同的图像质量呢?还有什么方法可以让位图使用 SVG 本身吗?

hrk*_*ngh -1

你应该使用矢量而不是 png 或 jpg

在android中使用向量

app:srcCompat="@drawable/logo"
Run Code Online (Sandbox Code Playgroud)

并且您需要添加vectorDrawables.useSupportLibrary = true到您的build.gradle文件中

 // Gradle Plugin 2.0+  
   android {  
   defaultConfig {  
   vectorDrawables.useSupportLibrary = true  
  }  
}  
Run Code Online (Sandbox Code Playgroud)

有关更多信息和用法请参阅: https://www.androidhive.info/2017/02/android-working-svg-vector-drawables/