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 条评论
登录 后参与评论

相关文章

来自专栏前端儿

Flex 布局相关用法

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中 就不容易...

15210
来自专栏hightopo

原 Web SCADA 电力接线图工控组态

43560
来自专栏熊二哥

Markdown快速入门

现在博文写作次数渐渐变多,经常看到很多园友的博文样式都非常的美观,个人虽然是个土鳖,但对美也是有很强需求的,同时由于最近将要上线一个博客项目,因此也很关心如何可...

24860
来自专栏偏前端工程师的驿站

HTML语义化:HTML5的新标签及IE5.5~9的部分兼容方案

一、前言                               本文将介绍HTML5中新增的语义化标签,及在IE5.5~9(IE9已经开始支持部分HTML...

283100
来自专栏逆向技术

逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理

我们涉及到FPS游戏.免不了说透视.自瞄什么的. 在CS1.6中. 有OpenGl.也有D3D.

1.5K20
来自专栏Vamei实验室

被解放的姜戈05 黑面管家

Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,...

22490
来自专栏微信终端开发团队的专栏

iOS 事件处理机制与图像渲染过程

致歉声明: Peter在开发公众号功能时触发了一个bug,导致群发错误。对此我们深表歉意,并果断开除了Peter。以下交回给正文时间: iOS 事件处理机制与...

1.2K90
来自专栏MasiMaro 的技术博文

SDK平台三态按钮的实现

Windows平台提供了丰富的控件,但是在使用中我们不会使用它提供的默认风格,有时候需要对控件进行改写,让它展现出更友好的一面,这次主要是说明三态按钮的实现。

14740
来自专栏阮一峰的网络日志

网页性能管理详解

你遇到过性能很差的网页吗? 这种网页响应非常缓慢,占用大量的CPU和内存,浏览起来常常有卡顿,页面的动画效果也不流畅。 ? 你会有什么反应?我猜想,大多数用户会...

30290
来自专栏柠檬先生

NEC css规范

CSS规范 - 分类方法 SS文件的分类和引用顺序 通常,一个项目我们只引用一个CSS,但是对于较大的项目,我们需要把CSS文件进行分类。 我们按照CSS的性质...

34780

扫码关注云+社区

领取腾讯云代金券