【问题标题】:Splash screen error: android.content.res.Resources$NotFoundException: Drawable启动画面错误:android.content.res.Resources$NotFoundException: Drawable
【发布时间】:2019-05-31 21:23:59
【问题描述】:

我正在尝试通过以下操作在我的 android 应用程序中实现启动画面 this article。我一步一步地遵循它,但是每当我尝试运行该应用程序时,它会立即崩溃,并且我的 logcat 中出现以下错误:

2019-01-05 10:46:33.682 2265-2265/com.example.khoi.parkingapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khoi.parkingapp, PID: 2265
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.khoi.parkingapp/com.example.khoi.parkingapp.SplashActivity}: android.content.res.Resources$NotFoundException: Drawable com.example.khoi.parkingapp:drawable/splash_background with resource ID #0x7f07008d
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6938)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: android.content.res.Resources$NotFoundException: Drawable com.example.khoi.parkingapp:drawable/splash_background with resource ID #0x7f07008d
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash_background.xml from drawable resource ID #0x7f07008d
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:837)
        at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:659)
        at android.content.res.Resources.getDrawableForDensity(Resources.java:891)
        at android.content.res.Resources.getDrawable(Resources.java:833)
        at android.content.Context.getDrawable(Context.java:605)
        at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:463)
        at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203)
        at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
        at android.support.v7.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:260)
        at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
        at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
        at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
        at com.example.khoi.parkingapp.SplashActivity.onCreate(SplashActivity.kt:10)
        at android.app.Activity.performCreate(Activity.java:7183)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6938)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #8: <bitmap> requires a valid 'src' attribute
        at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:823)
        at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:754)
        at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
        at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1311)
        at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:284)
        at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:194)
        at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
        at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
2019-01-05 10:46:33.682 2265-2265/com.example.khoi.parkingapp E/AndroidRuntime:     at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1281)
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:824)
            ... 24 more

这是我的 splash_background.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
            android:drawable="@color/colorPrimary"/>

    <item>
        <bitmap
                android:gravity="center"
                android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

任何帮助将不胜感激

【问题讨论】:

  • 发布您的 splash_background.xml 和您使用它的布局
  • @EndUser 我没有根据文章为我的SplashAcitivity 创建布局
  • 知道如何在启动画面中使用 mipmap 或动画
  • 我发现使用shape 是一种更快的解决方案。

标签: android kotlin drawable splash-screen


【解决方案1】:

现在很多人都在使用带有多个图像的 mipmap - 如果您想使用矢量资产,那么将您的项目标签(在 'background_splash.xml' 中具有位图或其他名称的那个)替换为:

<item
    android:height="48dp"
    android:width="48dp"
    android:drawable="@mipmap/ic_launcher"
    android:gravity="center" />

请注意,高度/宽度是我自己的,可以替换。此外,这仅适用于 API 级别 23 及更高级别。如果使用lower,你可以这样做:

<item
    android:top="48dp"
    android:bottom="48dp"
    android:left="48dp"
    android:right="48dp"
    android:drawable="@mipmap/ic_launcher"
    android:gravity="center" />

【讨论】:

    【解决方案2】:

    就我而言,这个解决方案并没有解决问题。为了修复它,我声明了启动屏幕的背景图像,如下所示:

    <item android:drawable="@color/colorPrimary" />
    
    <item
        android:drawable="@drawable/ic_launcher"
        android:gravity="center" />
    

    【讨论】:

      【解决方案3】:

      感谢 Alexander 缩小错误范围,我发现这个 post 完全解决了我的问题:

      我将我的 splash_background.xml 修复为:

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

      显然,您需要的 src 需要位于 drawable 文件夹中,并且它是 .png 而不是 .xml

      【讨论】:

      • 当drawable位于drawable-v21等平台版本合格的drawable文件夹中并且您在Android版本较低的设备上运行应用程序时,也会出现此错误
      • @Barcode 您是否也必须将 ic_launcher 文件从 mipmap 文件夹移动到 drawable 文件夹?
      • 看起来mipmap 文件夹不能用于初始屏幕图像。
      • 今天是这样吗?
      • @Gel 是的,我刚刚确认了
      【解决方案4】:

      如果你在这里看这条线:

      原因:org.xmlpull.v1.XmlPullParserException:二进制 XML 文件第 8 行:需要有效的 'src' 属性

      问题似乎是您的布局中可绘制对象的来源无效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-16
        • 1970-01-01
        • 2022-08-16
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        相关资源
        最近更新 更多