0

0

Android layer-list bitmap tileMode XML图片平铺模式

月夜之吻

月夜之吻

发布时间:2026-02-25 08:39:10

|

693人浏览过

|

来源于php中文网

原创

layer-list 中 bitmap 的 tilemode 不生效,主因是结构错误、api 版本过低、资源尺寸不合理或容器尺寸不足。

android layer-list bitmap tilemode xml图片平铺模式

layer-list 里 bitmap 的 tileMode 不生效?先看是否用了错误的 root 标签

很多同学写完 tileMode="repeat" 发现图片根本没平铺,第一反应是属性写错了——其实更大概率是 XML 结构本身就不对。layer-list 是容器,它不直接支持 tileMode;真正要设平铺的必须是子节点里的 bitmap,且这个 bitmap 还得是直接子元素(不能套在 item 里再加别的包装)。

  • ✅ 正确结构:<layer-list><bitmap android:src="@drawable/pattern" android:tilemode="repeat"></bitmap></layer-list>
  • ❌ 错误结构:<layer-list><item><bitmap ...></bitmap></item></layer-list> —— 这样 tileMode 会被忽略
  • ⚠️ 注意:item 可以存在,但仅当它用 android:drawable 引用外部 drawable,而不是把 bitmap 嵌在里面

tileMode="repeat" 在 Android 低于 API 21 上会崩溃?是的,得降级处理

tileMode 的完整取值(repeatmirrorclamp)从 API 21(Lollipop)才开始支持。如果你的 minSdkVersion ,运行时遇到 <code>Resources$NotFoundExceptionXmlPullParserException,基本就是这个原因。

  • 兼容方案:为低版本单独建 res/drawable-v20/ 目录,把带 tileMode 的 XML 放进去;高版本用它,低版本回退到静态切图或代码层 Canvas 平铺
  • 别指望 tools:targetApi="21" 能绕过编译检查——它只影响 lint,运行时照样崩
  • clamp 行为在不同系统版本间也有差异:API 21–22 对宽高不整除时的边缘处理不一致,建议测试真机而非仅模拟器

为什么设置了 tileMode 却只平铺了一次?检查 bitmap 的 intrinsic size 和容器尺寸

平铺是否“可见”,取决于两个条件:一是 bitmap 自身有没有明确尺寸(intrinsic width/height),二是它所在的 View 或背景容器是否足够大。如果 @drawable/pattern 是一个 1×1 像素的纯色 PNG,系统可能把它当成“无尺寸”资源,导致平铺逻辑不触发。

Aha
Aha

全天候网红营销AI智能体平台

下载
  • 确保源图至少有合理像素尺寸(比如 8×8 或 16×16),避免单像素图
  • 别依赖 android:gravityandroid:scaleType 来“撑开”平铺效果——这些对 layer-list 背景无效
  • 如果用作 View 的 android:background,注意该 View 的实际宽高;若宽高是 wrap_content 且内容很小时,你根本看不到重复效果
  • 调试技巧:临时把 tileMode 改成 clamp,再对比显示效果,能快速判断是不是尺寸问题

XML 平铺和代码层 Canvas.drawBitmapMesh 效果不一样?因为底层机制完全不同

XML 中的 tileMode 是由 Skia 渲染引擎在 GPU 层做的纹理重复,轻量且高效;而手动用 Canvas.drawBitmap 配合循环绘制,是 CPU 层逐块提交,不仅慢,还容易因坐标计算误差导致接缝。

  • 性能上:XML 平铺几乎零额外开销;循环绘制在列表滚动时可能掉帧
  • 精度上:XML 方式自动对齐像素边界;手动画容易偏移半像素,尤其在高倍屏上出现模糊或白线
  • 例外场景:需要动态控制平铺偏移(比如视差滚动)或混合多种模式时,才值得放弃 XML,改用 Shader + BitmapShader 配合 Paint.setShader()

真正难调的不是怎么写 tileMode,而是它什么时候被静默忽略——结构嵌套、API 版本、资源尺寸、宿主 View 大小,四个点只要一个没对,就白忙活。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1934

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2109

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1135

2024.11.28

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

540

2023.10.23

android开发三大框架
android开发三大框架

android开发三大框架是XUtil框架、volley框架、ImageLoader框架。本专题为大家提供android开发三大框架相关的各种文章、以及下载和课程。

324

2023.08.14

android是什么系统
android是什么系统

Android是一种功能强大、灵活可定制、应用丰富、多任务处理能力强、兼容性好、网络连接能力强的操作系统。本专题为大家提供android相关的文章、下载、课程内容,供大家免费下载体验。

1795

2023.08.22

android权限限制怎么解开
android权限限制怎么解开

android权限限制可以使用Root权限、第三方权限管理应用程序、ADB命令和Xposed框架解开。详细介绍:1、Root权限,通过获取Root权限,用户可以解锁所有权限,并对系统进行自定义和修改;2、第三方权限管理应用程序,用户可以轻松地控制和管理应用程序的权限;3、ADB命令,用户可以在设备上执行各种操作,包括解锁权限;4、Xposed框架,用户可以在不修改系统文件的情况下修改应用程序的行为和权限。

2104

2023.09.19

android重启应用的方法有哪些
android重启应用的方法有哪些

android重启应用有通过Intent、PendingIntent、系统服务、Runtime等方法。本专题为大家提供Android相关的文章、下载、课程内容,供大家免费下载体验。

283

2023.10.18

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 18.7万人学习

Java 教程
Java 教程

共578课时 | 71.5万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号