我在这里一步一步地关注this tutorial,它在我的API 21模拟器上工作正常,但是在我的27上它会在应用程序加载时崩溃:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.myapp.myapp / com.myapp.myapp.ui.SplashScreenActivity}:android.content.res.Resources $ NotFoundException:Drawable com.myapp.myapp:drawable / splash_screen_background with资源ID#0x7f0700a9
我的文件drawable / splash_screen_background是这个:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:type="radial"
android:gradientRadius="100%p"
android:startColor="@color/primaryColor"
android:endColor="@color/primaryDarkColor"/>
</shape>
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_home_white_24dp"/>
</item>
</layer-list>
我试图使用app:srcCompat
,将drawable直接传递给item
,消除了bitmap
,但问题仍然存在。我见过有人说使用android:drawable=
代替,但他们说这会在<API 21上崩溃。
This answer显示了一些相当复杂的额外配置,包括gradle
选项,我不确定这将如何影响我的应用程序,它是否会改变矢量图形的性能?
什么是在Android上处理layer-list
的正确方法,它可以在几个API上运行?
就像您在评论中建议的那样,问题的解决方案是,您的资源不在drawable文件夹中。
您的所有可绘制资源文件也应该是“可绘制的”。如果你有更高的Android版本的特殊功能,你可以上传文件“drawable-v21”,“drawable-v24”,...
我希望这会有所帮助,我有同样的问题,并在将全部drawable文件夹中的不同drawable文件夹中的每个资源放入后,我的问题就解决了。