Android闪屏矢量绘图
我想在我的splash sreen中显示一个矢量绘图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" />
<?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>