Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android闪屏矢量绘图_Android_Svg_Splash Screen_Android Vectordrawable - Fatal编程技术网

Android闪屏矢量绘图

Android闪屏矢量绘图,android,svg,splash-screen,android-vectordrawable,Android,Svg,Splash Screen,Android Vectordrawable,我想在我的splash sreen中显示一个矢量绘图 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/white" android:gravity="fill" />

我想在我的splash sreen中显示一个矢量绘图

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

    <item
        android:drawable="@drawable/splash_screen"
        android:gravity="bottom|center" />
</layer-list>
我在安卓8(360dp x 640dp设备)中进行了测试,一切正常,但在安卓5.1.1(320dp x 480dp设备)中,它变形了,我的可矢量绘制的屏幕填充了,宽高比变松了,我如何修复它

和主题

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
</resources>


@可绘制/发布背景
定义静态可绘制对象。类似于SVG 格式,每个矢量图形定义为一个树层次结构,即 由路径和组对象组成。每个路径都包含该路径的几何图形 对象的大纲和组包含转换的详细信息

您可以使用可缩放的大小单位

android SDK提供了一个新的大小单位——sdp(可伸缩dp)。这 大小单位根据屏幕大小进行缩放。它可以帮助Android开发者 支持多个屏幕

将sdp添加到项目中(使用Android Studio和Gradle)
build.Gradle

dependencies {
  implementation 'com.intuit.sdp:sdp-android:1.0.6'
}
现在添加sdp而不是dp

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="@dimen/_300sdp"
    android:height="@dimen/_225sdp"
    android:viewportWidth="512"
    android:viewportHeight="512">

这个问题与API的21、22和23有关,对于那些需要将可绘制图形环绕位图的对象。您需要做的是创建两个版本的可绘制层列表,并将其中一个放入drawable-v22,另一个放入drawable-v24,如果这些文件夹不存在,只需在res/中创建它们,并注意您需要将project view设置为poject才能看到它们(请参见下图)

对于v24,您只需使用已有的版本:

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

<item

    android:gravity="center"
    android:src="@drawable/splash_screen" >
</item>

</layer-list>

对于drawable-v21,您可以使用以下内容(请注意,由于某些原因,这些drawable在API高于23的情况下不起作用)


android将根据设备的API获取第一个或第二个资产,然后您的splashscreen在所有设备上都会非常好看

顺便说一句,这是关于其他定制的文档,您不仅可以在设备API上实现,还可以在屏幕大小、分辨率等方面实现


@ManiKandan为什么是24dp??我的SVG不是一个图标,而是一个大图标illustration@ManiKandan我更新了帖子并添加了完整的矢量,我之前发布过,第一个xml是我的初始布局,第二个xml是矢量,第三,我也有同样的问题,请看我的答案,你也可以看下面我对这个问题的答案的总结版本,但是imageview在以“正确”的方式实现闪屏时真的有帮助吗?无论如何,如果它在所有API上都保留了纵横比,我想它是可以工作的
 <android.support.v7.widget.AppCompatImageView //Or androidx.appcompat.widget.AppCompatImageView
    app:srcCompat="@drawable/your_svg"
    />
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:drawable="@android:color/white"
    android:gravity="fill" />

<item

    android:gravity="center"
    android:src="@drawable/splash_screen" >
</item>

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

<item android:gravity="center">
    <bitmap
        android:gravity="center"
        android:src="@drawable/splash_screen" />
</item>

</layer-list>