当前位置: 首页 > news >正文

bitmap requires a valid src attribute

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载

目录

  • 一、导读
  • 二、概览
  • 三、问题记录
  • 四、 推荐阅读

在这里插入图片描述

一、导读

我们继续总结学习遇到的问题,温故知新。

今天遇到一个线上问题,启动就闪退,比较坑,在此做一个记录,防止掉坑。

二、概览

我们在启动时做了一个启动图的优化,启动时让用户看到公司的logo,同时解决黑屏、白屏问题,这时也给用户一个假象,感觉启动起来很快一样。

但是上线后包了一些错误, 如下:

java.lang.RuntimeException:Unable to start activity ComponentInfo{com.qxx/com.qxx.Activity}: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
2
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:26913)Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #51: <bitmap> requires a valid src attribute
java.lang.RuntimeException:Unable to start activity ComponentInfo{com.xx/com.xx.Activity}: android.content.res.Resources$NotFoundException: File res/xyadx.xml from drawable resource ID #xxxx
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:25211)
......
Caused by:
org.xmlpull.v1.XmlPullParserException:Binary XML file line #91: <bitmap> requires a valid src attribute

# main(1)org.xmlpull.v1.XmlPullParserExceptionBinary XML file line #9: <bitmap> requires a valid 'src' attributejava.lang.RuntimeException:Unable to start activity ComponentInfo{com.xxx/com.xxxActivity}: android.content.res.Resources$NotFoundException: Drawable com.xxx:drawable/loading_bg with resource ID #0x7xxf2
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:27681)
......
Caused by:
org.xmlpull.v1.XmlPullParserException:Binary XML file line #19: <bitmap> requires a valid 'src' attribute

三、问题记录

配置上中下三个image,再配个背景,更显高大上,

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">全局背景<item><color android:color="#FFFFFF" /></item>配置上中下三个image<item><bitmapandroid:gravity="top"android:src="@drawable/loading_bg" /></item><itemandroid:bottom="@dimen/dp_10"><bitmapandroid:gravity="center"android:src="@drawable/loading_slogan" /></item><item><bitmapandroid:gravity="bottom"android:src="@drawable/loading_buttom_logo" /></item>
</layer-list>

我们一起看看源码报错的地方 BitmapDrawable.java

/*** Updates the constant state from the values in the typed array.*/private void updateStateFromTypedArray(TypedArray a, int srcDensityOverride)throws XmlPullParserException {final Resources r = a.getResources();final BitmapState state = mBitmapState;final int srcResId = a.getResourceId(R.styleable.BitmapDrawable_src, 0);if (srcResId != 0) {...一系列的操作后,根据resid去获取bitmap,如果bitmap为空,则会抛出异常Bitmap bitmap = null;try (InputStream is = r.openRawResource(srcResId, value)) {ImageDecoder.Source source = ImageDecoder.createSource(r, is, density);bitmap = ImageDecoder.decodeBitmap(source, (decoder, info, src) -> {decoder.setAllocator(ImageDecoder.ALLOCATOR_SOFTWARE);});} catch (Exception e) {}if (bitmap == null) {throw new XmlPullParserException(a.getPositionDescription() +": <bitmap> requires a valid 'src' attribute");}}...}

一系列的操作后,根据resid去获取bitmap,如果bitmap为空,则会抛出异常,

分析原因后,我们得出结论

  1. bitmap 使用 src来引用, android:src
  2. 的src不允许为xml drawables
  3. src引用的图片资源在多分辨率下都要有,不让容易出问题

四、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

未经允许不得转载

ddd

相关文章:

bitmap requires a valid src attribute

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、问题记录四、 推…...

Java刷题-基础篇

目录 题目1&#xff1a;打印1~100内奇数和、偶数和 题目2&#xff1a;计算5的阶乘 题目3&#xff1a;计算 1!2!3!4!5! 的和 题目4&#xff1a;找1~100之间即能被3整除&#xff0c;又能被5整除的数字&#xff0c;要求必须使用break/continue 题目5&#xff1a;实现猜数字小…...

Linux——mysql运维篇

回顾基本语句&#xff1a; 数据定义语言 ( DDL ) 。这类语言用于定义和修改数据库的结构&#xff0c;包括创建、删除和修改数据库、表、视图和索引等对象。主要的语句关键字包括 CREATE 、 DROP 、 ALTER 、 RENAME 、 TRUNCATE 等。 create database 数据库 &…...

力扣每日一题-统计已测试设备-2024.5.10

力扣题目&#xff1a;统计已测试设备 题目链接: 2960.统计已测试设备 题目描述 代码思路 根据题目内容&#xff0c;第一感是根据题目模拟整个过程&#xff0c;在每一步中修改所有设备的电量百分比。但稍加思索&#xff0c;发现可以利用已测试设备的数量作为需要减少的设备电…...

代码+视频,R言语处理数据中的缺失值

在SCI论文中&#xff0c;我们不可避免和缺失数据打交道&#xff0c;特别是在回顾性研究&#xff0c;对于缺失的协变量&#xff08;就是混杂因素&#xff09;&#xff0c;我们可以使用插补补齐数据&#xff0c;但是对于结局变量和原因变量的缺失&#xff0c;我们不能这么做。部分…...

PGSync安装使用教程(PostgreSQL数据实时同步至Elasticsearch)

说明 pgsync项目有两个&#xff0c;一个是ankane/pgsync&#xff0c;用于pgsql之间的数据同步&#xff0c;另一个是toluaina/pgsync&#xff0c;用于pgsql的数据同步至es&#xff0c;本教程适用于第二个项目。 pgsync应该是目前为止唯二支持es8的数据同步工具&#xff0c;另一…...

前端主题切换的多种方式

动态link标签加载不同主题css **原理&#xff1a;**提前准备好几套CSS主题样式文件&#xff0c;在点击切换主题时&#xff0c;创建link标签动态加载到head标签中&#xff0c;或者是动态改变link标签的href属性。 缺点&#xff1a; 动态加载样式文件&#xff0c;如果文件过大网…...

使用RESTful API构建 web 应用程序

RESTful API是一种基于HTTP协议的架构风格&#xff0c;用于设计网络应用程序的 API。它强调使用标准的HTTP方法&#xff08;如GET、POST、PUT和DELETE&#xff09;对资源进行操作&#xff0c;并使用统一的资源标识符&#xff08;URI&#xff09;来唯一标识每个资源。RESTful AP…...

KaiOS Data PDN 数据建立流程

代码逻辑 APN创建 在 DataCallManager.jsm中,会对所有apnsetting创建一个datacall,其中会包含dataprofile的成员(通过apn参数来创建),在之后的流程用于直接发送到modem建立PDN。 PDN建立 1、DataCallManager.jsm -dcInterface.setupDataCall //RILNetworkInterface.c…...

Mybatis-Plus常用的增删改查坑

添加依赖 <!--实体类上加上Data注解就不用写get&#xff0c;set&#xff0c;toString&#xff0c;equals等方法了--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional…...

初识指针(4)<C语言>

前言 前面的文章&#xff0c;已经对指针的基础概念以及运用有了初步了解&#xff0c;我们可以进一步探究指针比较深入的知识&#xff0c;下文将主要介绍&#xff1a;使用指针数组模拟二维数组、字符指针变量、数组指针、二维数组传参的本质、函数指针、typedef关键字等。 目录…...

pyqt 工具栏QToolBar控件

pyqt 工具栏QToolBar控件 QToolBar控件介绍效果代码 QToolBar控件介绍 QToolBar 是 PyQt&#xff08;中的一个控件&#xff0c;它提供了一个工具栏&#xff0c;通常包含一系列的工具按钮或下拉菜单&#xff0c;用于提供对应用程序功能的快速访问。 QToolBar 通常与 QMainWind…...

SystemVerilog/Verilog中的仿真延时建模之模块路径延时

一 概要 模块路径延迟,描述的是模块中信号从源端到目的端传输的延迟。 路径以及对应的延迟是在模块中的specify块中指定的,其中信号源端一般为input或者inout,而目的端则只能为output或者inout.在specify中指定的模块路径,常见的形式主要三种,分别是: 简单路径(Simple Path…...

代码随想录算法训练营Day36 | 738.单调递增的数字、968.监控二叉树、贪心算法总结 | Python | 个人记录向

本文目录 738.单调递增的数字做题看文章 968.监控二叉树做题看文章 贪心算法总结以往忽略的知识点小结个人体会 738.单调递增的数字 代码随想录&#xff1a;738.单调递增的数字 Leetcode&#xff1a;738.单调递增的数字 做题 无思路。 看文章 例如&#xff1a;98&#xff…...

FME学习之旅---day26

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 【由于上周&#xff0c;上班状态不是很好&#xff0c;事情多又杂&#xff0c;没有学习的劲头&#xff0c;就短暂的休息了一下下。双休爬山&#xff0c;给自己上了强度&#xff0c;今天才缓过来…...

JAVA学习-练习试用Java实现电话号码的字母组合

问题: 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输…...

js代码中关于async await的滥用 async await的滥用

概念&#xff1a; 返回值&#xff1a; async返回一个promise---这个返回值是默认自发行为 async function name1(params) {console.log(params) } let result name1(lion) console.log(result) // Promise { undefined } result.then(res > console.log(res)) // undefin…...

基础算法,贪心算法,贪心策略,OJ练习

文章目录 一、概念二、OJ练习2.1 区间选点2.2 区间合并2.3 区间2.4 合并果子2.5 排队接水2.6 货仓选址2.7 防晒2.8 畜栏预定2.9 雷达设备2.10 国王游戏2.11 耍杂技的牛2.12 给树染色2.13 任务2.14 能量石 三、总结 一、概念 贪心是一种在每次决策时采取当前意义下最优策略的算…...

一文讲透亚马逊云三层架构

关于三层架构&#xff0c;我们有很多想说的话&#xff1a; &#xff08;以下内容以下都在VPC中&#xff09; cloudfront做CDN加速网关规划S3做静态网站托管APIGateway作为统一网关入口认证/限流Lambda 作为传统后端&#xff0c;并发&#xff0c;底层架构Redis缓存DDB作为持久化…...

只需3步,使用Stable Diffusion无限生成AI数字人视频(附安装包)

基本方法 搞一张照片&#xff0c;搞一段语音&#xff0c;合成照片和语音&#xff0c;同时让照片中的人物动起来&#xff0c;特别是头、眼睛和嘴。 语音合成 语音合成的方法很多&#xff0c;也比较成熟了&#xff0c;大家可以选择自己方便的&#xff0c;直接录音也可以&#…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...

Android屏幕刷新率与FPS(Frames Per Second) 120hz

Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数&#xff0c;单位是赫兹&#xff08;Hz&#xff09;。 60Hz 屏幕&#xff1a;每秒刷新 60 次&#xff0c;每次刷新间隔约 16.67ms 90Hz 屏幕&#xff1a;每秒刷新 90 次&#xff0c;…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...