Android 9-patch 九图的制作与使用

2024-05-08 22:32

本文主要是介绍Android 9-patch 九图的制作与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

惯例:先上图后说话,谢谢各位伙伴的支持! 有你们是我的福分!


每日一言:人生没有太晚的开始,一切还来得急。



一、9.PNG使用背景

        在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。

二、9.PNG简介

        九图(9.PNG)这种格式的图片是安卓开发里面的一种特殊的图片,在Android 环境下具有自适应调节大小的能力:

                  (1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展;

              (2)允许开发人员定义内容显示区,用于显示文字或其他内容 ;

         9.png图片与其它图片不同之处在于,它的四周与普通的png图片相比多了1个像素位的白色区域,因而真正显示的时候总像素会缩小2个像素(上下左右各1个像素),比如23x23像素的9.png图片真正显示的时候会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。

三、如何制作9.png图片素材: 

       1、draw9patch工具,该工具在Android SDK中都有自带,在/sdk/tools/draw9patch目录下面  

       2、执行draw9patch,会出现如下图:

          

       3.将你制作的图片拖到该窗口中,图片的边缘会增加1个像素白色透明框。将鼠标放在白色边框,点住左键不放拖动,会出现黑色点或线条,如下图:

          

       4、四周的黑色线条解释如下:
                  (a)1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域   ;

                  (b)2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域    ;

                  (c)3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域 ;

                  (d)4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域 ;

                   右边3个图形区域为显示当前拉伸效果,没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)

        5、如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色条 

        6、选择好区域后,点击左上file-> save,保存为PNG图片。保存完成后,后缀名自动为xxx.9.png。命名时只需要填写名称xxx,不需要写后缀.9.png,否则android编译的时候会报错。

四、常见错误:

       1. “No resource found that matches the given name” 

           这是因为在保存为PNG图片,命名时带了后缀.9.png。一定要注意命名只需要填写图片名称,工具会自动加上后缀。

        2. AAPT: ERROR: 9-patch image xxx.9.png malformed. AAPT: Must have one-pixel frame that is either transparent or white. 

            这是因为9.png九图的四边都需要描点,如果有一条边没有描点,有可能会报这个错误。


这篇关于Android 9-patch 九图的制作与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971619

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他