9.png

 一、什么是9.png:         可能做过任务栏美化的同学都会知道,我靠,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。 千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会  看不见摸不着(详情见下面具体内容)。         9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子了,哈哈,这就是9.png图片不能轻易碰的神奇所在,不过不要紧,下面看完你就会了,安卓美化大师就是你了。        首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域  只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被  打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。 

       当我们制作出9.png图片的时候你还有惊奇的发现一个几KB或者几十KB的图片,变得非常的小,一般只有几百个字节那么大,              

系统加载起来当然会更加的流畅咯。 

重要声明,该制作工具均需要搭建java运行环境,就是下载jdk安装,并在计算机属性中搭建环境变量,具体操作本帖就不讲了, 

网上找一下如何搭建环境变量就有了。 

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

       1、下载工具:  draw9patch.zip 该工具SDK中自带。 

       2、解压,执行draw9patch.bat,会出现如图: 

       3、将你用PS制作的图片素材,拖到该窗口中,出现如图: 

            解释:中间黑红条纹部分表示不能编辑,边缘白色透明框就是上述介绍的增加的一像素边框。 

       4、将鼠标放在白色边框,点住左键不放拖动,会出现黑色线条如图: 

             解释:1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域 

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

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

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

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

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

         6、右边3个黑色图形区域为显示当前拉伸效果 

         7、选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png,此时图片效果为: 

解释:我们可以看见图片的周围多了4个黑色条,不要急这个图片还不能用,这就是原始的9.png图片,当我们进行下一步操作后,这个图片就变得正常了。 去黑边: 解压xUltimate-d9pc-x86.rar压缩包 1.把预处理黑边的图片到目录example1\res\drawable-hdpi下 2.双击xUltimate-d9pc.exe,听到电脑滴的一声,即可完成去黑边(此时的9.png图片内部加载了黑边信息) 3.根目下会自动生成done文件,在done\example1\res\drawable-hdpi下,就是我们经过处理的9.PNG图片 4.这个图片就是我们要美化替换的图片

======================================反编辑出来的图片作黑边模版=====================================

1. 解压apktool.zip 压缩包,点安装.bat”,此时会在系统c盘生成几个文件。

3、将你要修改的framework-res.apk(当然也可以是其他系统程序apk文件,如music.apk)重命名为update.apk,并放到c:盘根目录(必须放c:,因为后面执行的批处理文件编写的是在c:工作)

4、执行c:根目录下unpack.bat,此时会在c:生成一个update的文件夹,里面的内容就是你要修改的APK文件,并且当你打开drawable-hdpi文件夹时你会发现里面的9.png图片变得和我们上面制作的相像了,都有4条黑边,这就是该工具将其还原了。

=======================按AIT+TAB键,转换窗口。对照黑边模版,画的黑边速度快,准===============================

  在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开发的一种特殊的图片格式,它的好处在于可以用简单的方式把一张图片中哪些区域可以拉伸,哪些区域不可以拉伸设定好,同时可以把显示内容区域的位置标示清楚。

  本文结合一些具体的例子来看下.9.png的具体用法。

  首先看下普通的.png资源与.9.png的资源区别:

  普通的png资源就不多介绍了,可以明显看到.9.png的外围是有一些黑色的线条的,那这些线条是用来做什么的呢?我们来看下放大的图像:

  放大后可以比较明显的看到上下左右分别有一个像素的黑色线段,这里分别标注了序号。简单来说,序号1和2标识了可以拉伸的区域,序号3和4标识了内容区域。当设定了按钮实际应用的宽和高之后,横向会拉伸1区域的像素,纵向会拉伸2区域的像素。如下图:

  拉伸的含义应该比较容易理解,但是内容区域的标注有什么意义呢?我们来看下图:

  这里程序设置的文字垂直居中,水平居左的对齐方式。对齐方式是没有问题的,但是对于这种大圆角同时又有些不规则边框的的图形来说,错误的标注方式会让排版看起来很混乱。所以我们需要修正内容区域的线段位置和长度。

  把横向的内容区域缩短到圆角以内,纵向的内容区域控制在输入框的高度以内,这样文字就可以正常显示了。

  这里还有一种特殊情况,就是本身是.9.png的资源,但是在修改过程中你希望这张.9.png不能被拉伸(在做皮肤的情况中有可能会遇到),那怎么办呢?只要把拉伸区域的点点在透明像素的地方就可以了,这样拉伸的时候会拉伸透明部分的像素,而不会拉伸图像本身。如下图:

  大家可以看到拉伸区域的黑点是可以不连续的。

  说了半天.9.png的用法,那.9.png如何输出呢?有很多种方式可以输出.9.png,比如说用draw9patch.bat这个工具,或者简单一点,用photoshop直接输出。输出的方式是先输出普通的png资源,然后扩大画布大小,上下左右各空出一个像素,再用一个像素的铅笔工具(颜色选择纯黑色),上下左右分别画点就可以了,保存的时候注意把后缀修改为.9.png。

  有两点需要特别注意下:

1.最外围的一圈像素必须要么是纯黑色,要么是透明,一点点的半透明的像素都不可以有,比如说99%的黑色或者是1%的投影都不可以有;

2.文件的后缀名必须是.9.png,不能是.png或者是.9.png.png,这样的命名都会导致编译失败。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • android EventBus 3.0使用指南

    Enventbus的作用和好处我就不多说了,这里介绍下怎么使用。 2.+版本的使用方法 public void onEvent(MessageEvent eve...

    xiangzhihong
  • Java 8新特性

    编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。 在Java Code Geeks上已经有大量的关于Java 8 的...

    xiangzhihong
  • 实战卷积神经网络

    在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题。但是对于大多数人来说,CNN仿佛戴上了神秘的面纱。 CN...

    xiangzhihong
  • Java异常 知识点速查

    linxinzhe
  • golang 的channels 行为

    当我第一次使用 Go 的 channels 工作的时候,我犯了一个错误,把 channels 考虑为一个数据结构。我把 channels 看作为 gorouti...

    李海彬
  • 基于云端的嵌入式开发环境

    随着大数据云技术的发展和推广,越来越多的嵌入式厂商都推出了基于云技术的在线开发环境,今天我们就来简单介绍下microchip的 MPLABX Press在线开发...

    用户1605515
  • RNA-seq(4):下载参考基因组及基因注释

    那下载哪个基因组呢?先了解一下: https://bitesizebio.com/38335/get-to-know-your-reference-genom...

    Y大宽
  • Redis的过期键删除策略和数据逐出策略

    在实际生产环境中使用Redis时,偶然会觉得Redis的内存占用要比自己预想的大。事实上,Redis占用的内存除了保存键值对所需的开销外,还有一些运行时产生的额...

    全菜工程师小辉
  • 大话设计模式--第二章 策略设计模式

    现在有一个需求: 给商场做一个收银软件. 营业员根据客户购买的产品的单价和数量, 向客户打印小票。

    用户7798898
  • Redis过期策略以及内存淘汰机制

    如果你的 Redis 只能存10G数据,你写了12G,那么 Redis 会怎么淘汰那2G数据呢?

    ITer.996

扫码关注云+社区

领取腾讯云代金券