android 9.png小结
2013-12-23 13:50
239 查看
转自:http://www.apkbus.com/android-56849-1-1.html
一、什么是9.png:
[align=left] 9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧)[/align]
[align=left] 首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域[/align]
[align=left]只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被[/align]
[align=left]打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。[/align]
[align=left]当我们制作出9.png图片的时候你还有惊奇的发现一个几KB或者几十KB的图片,变得非常的小,一般只有几百个字节那么大,[/align]
[align=left]系统加载起来当然会更加的流畅咯。[/align]
.9图片的制作工具在解压的sdk目录下tools:draw9patch,双击即可打开。
将你用PS制作的图片素材,拖到该窗口中,出现如图:
解释:中间黑红条纹部分表示不能编辑,边缘白色透明框就是上述介绍的增加的一像素边框。
[align=left] 将鼠标放在白色边框,点住左键不放拖动,会出现黑色线条如图:[/align]
[align=left] 解释:1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域
2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域
3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域
4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域
没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色。[/align]
[align=left] 右边3个黑色图形区域为显示当前拉伸效果[/align]
[align=left] 选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png[/align]
我们可以看见图片的周围多了4个黑色条,不要急这个图片还不能用,这就是原始的9.png图片,当我们进行下一步操作后,这个图片就变得正常了。
[align=left]去黑边:
[/align]
解压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.这个图片就是我们要美化替换的图片
[align=left]======================================[/align]
[align=left]反编辑出来的图片作黑边模版[/align]
[align=left]=====================================
[/align]
[align=left]解压[/align]
[align=left]apktool.zip[/align]
[align=left]压缩包[/align]
[align=left]点安装.bat”,此时会在系统c盘生成几个文件。[/align]
[align=left] 3、将你要修改的framework-res.apk(当然也可以是其他系统程序apk文件,如music.apk)重命名为update.apk,并放到c:盘根目录[/align]
[align=left](必须放c:,因为后面执行的批处理文件编写的是在c:工作)[/align]
[align=left] 4、执行c:根目录下unpack.bat,此时会在c:生成一个update的文件夹,里面的内容就是你要修改的APK文件,并且当你打开drawable-hdpi[/align]
[align=left]文件夹时你会发现里面的9.png图片变得和我们上面制作的相像了,都有4条黑边,这就是该工具将其还原了。[/align]
[align=left]=======================[/align]
[align=left]按AIT+TAB键,转换窗口。对照黑边模版,画的黑边速度快,准[/align]
[align=left]===============================[/align]
android,图片,程序
4b26d01d-c056-3b85-9fe7-4f56209009d9.jpg(174.82
KB, 下载次数: 15)
![](http://www.apkbus.com/data/attachment/forum/201206/27/1157406cainn6bvicbugwg.jpg)
3e9b5a41-c532-3e6b-b4e9-7fe07e6dba99.jpg(170.78
KB, 下载次数: 4)
![](http://www.apkbus.com/data/attachment/forum/201206/27/115951t9mctzovlrcggcdd.jpg)
转自:http://blog.sina.com.cn/s/blog_62f1fc0701019v9s.html
与传统的png格式图片相比, 9.png格式图片在图片四周有一圈一个像素点组成的边沿,该边沿用于对图片的可扩展区和内容显示区进行定义。
这种格式的图片在android环境下具有自适应调节大小的能力。
例如,我们经常看到的android系统的按钮,还有各种短信应用中使用的对话背景图片的效果,就是使用的.9图片。
下面,就介绍一下如何使用android自带的工具,制作.9图片。
1
运行android SDK中tools路径下的draw9patch.bat文件。运行界面如下:
![](http://www.devdiv.com/data/attachment/album/201205/07/1530569c9ru79rq1c199r9.jpg)
2选择一张图片(.png格式)添加进来。你会发现本来边缘没有透明区域的图片,四周多出了一像素的空隙,这四个空隙是给.9图片划线用的
![](http://www.devdiv.com/data/attachment/album/201205/07/154008qjuru5z69uplbulb.jpg)
。
3所谓给.9图片划线,指的是通过划线,决定图片的可拉伸区域和显示文本信息的区域。
其中,上方和左方的线是控制图片的可拉伸区域的,也就是说,上方的线控制图片横向可拉伸,左侧的线控制纵向可拉伸。下方的线和右侧的线控制图片的文本区域,也就是说,如果图片上有text,就会把位置控制在下方和右侧的线围城的区域里。
4 直接通过鼠标在边缘一像素区域的拖动划线。如果想删除划线,按住shift + 鼠标左键,删除划
![](http://www.devdiv.com/data/attachment/album/201205/07/155158nop7pxnx6hbh463a.jpg)
线。
5右侧会有三个图片展示,第一张为左侧线产生的纵向可拉伸效果图,第二张为上方线产生的横向可拉伸效果图,第三张为横纵向同时拉伸的效果图,完成划线之后点击保存。
![](http://www.devdiv.com/data/attachment/album/201205/07/155158w0ypqa03a9zx0ct0.jpg)
至此,.9图片制作完成。至于使用.9图片的效果,需要在实践中验证,不再赘述。同时,要注意工具下方功能选项和拖动条的使用。
----------------------------------------------------------------------------
启动9妹:
在你Android SDK 路径下 X:\android sdk\tools ,你会找到一个【draw9patch.bat】,没错这就是9妹啦、官方名 NinePatch ;
![](http://dev.10086.cn/cmdn/bbs/attachments/editorimg/10-12-30/18-08-22_ohjp0221ul)
提示导入一张png图片,然后真正进入"9妹"的操作界面(如下图): (图1)
![](http://dev.10086.cn/cmdn/bbs/attachments/editorimg/10-12-30/18-08-45_q1b7uhb35u)
序 列 ① :在拉伸区域周围用红色边框显示可能会对拉伸后的图片产生变形的区域,如果完全消除该内容则图片拉伸后是没有变形的,也就是说, 不管如何缩放图片显示都是良
好的。 (实际试 发现NinePatch编辑器是根据图片的颜色值来区分是否为badpatch的,一边来说只 要色差不是太大不用考虑这个设置。)
序列 ② :区域是导入的图片,以及可操作区域。
序 列 ③ :这里 zoom:的长条bar是对导入的图放大缩小操作,这里的放大缩小只是为了让使用者更方便操作,毕竟是对像素点操作比较费 眼,下面的
patch scale 是序列④区域中的三种形态的拉伸后的一个预览操作,可以看到操作后的图片拉伸后的效果。
序列 ④: 区域这里从上到下,依次为:纵向拉伸的效果预览、横向拉伸的效果预览,以及整体拉伸的效果预览
序列 ⑤: 这里如果你勾选上,那么当你鼠标放在 ②区域内的时候并且当前位置为不可操作区域就会出现lock的一张图,就是显示不可编辑区域 ;
序列 ⑥: 这里勾选上,那么在④ 区域中你就会看到当前操作的像素点在拉伸预览图中的相对位置和效果。
序列 ⑦: 在编辑区域显示图片拉伸的区域;
如何操作:
鼠标左键选取需要拉伸的像素点; shift+鼠标左键取消当前像素点。
操作区域:
![](http://dev.10086.cn/cmdn/bbs/attachments/editorimg/10-12-30/18-08-57_vuwyld5d1b)
大家看到导入的png图片默认周围多了一像素点,也就是这一圈一像素点就是咱们的可操作区域。但是因为下方和右方可操作区域属于可选区域,不用理会;主要大家注意Left和 top 操作区域;
Top操作区域的一排像素点,表示横向拉伸的像素点;
Left操作区的一排像素点,表示纵向拉伸的像素点;
以上摘自李华明博客
首先说一下9 path是什么。9path是android特殊格式的png图,它以.9.png为后缀名。
它用在使用图片做背景时做拉伸使用的,9path会选择一个背景图片中的一部分在拉伸时做平铺,其他区域保持原始大小,来组合成一张新的背景。当然也可以用在设置图片的时候设置的图片超过原始大小时,将其中的部分做平铺,其他区域保持不变。
怎么得到9path图片?
使用android sdk中自带的工具
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb1.png)
双击打开。
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb2.png)
点击file,打开一张普通的png图片。
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb3.png)
序列 ①:在拉伸区域周围用红色边框显示可能会对拉伸后的图片产生变形的区域,如果完全消除该内容则图片拉伸后是没有变形的,也就是说,不管如何缩放图片显示都是良好的。 (实际试 发现NinePatch编辑器是根据图片的颜色值来区分是否为badpatch的,一边来说只要色差不是太大不用考虑这个设置。)
序列 ② :区域是导入的图片,以及可操作区域。
序列 ③ :这里 zoom:的长条bar是对导入的图放大缩小操作,这里的放大缩小只是为了让使用者更方便操作,毕竟是对像素点操作比较费眼,下面的 patch scale 是序列④区域中的三种形态的拉伸后的一个预览操作,可以看到操作后的图片拉伸后的效果。
序列 ④: 区域这里从上到下,依次为:纵向拉伸的效果预览、横向拉伸的效果预览,以及整体拉伸的效果预览
序列 ⑤: 这里如果你勾选上,那么当你鼠标放在 ②区域内的时候并且当前位置为不可操作区域就会出现lock的一张图,就是显示不可编辑区域 ;
序列 ⑥: 这里勾选上,那么在④ 区域中你就会看到当前操作的像素点在拉伸预览图中的相对位置和效果。
序列 ⑦: 在编辑区域显示图片拉伸的区域;
操作:鼠标左键选取需要拉伸的像素点; shift+鼠标左键取消当前像素点。
如下图:新导入的png文件在周围会多出一个像素点,这一圈一像素点是我们的操作区域
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb4.png)
这里需要注意一点就是,必须左边和上边都得有黑线,如果只有一边有黑线的话,生成的png文件在eclipse中会报错。另外要注意内容区域的标记不能有间断,也就是说标记要连续且仅有一处,否则.9.png图片在放入项目下会报错。
主要大家注意Left 和 top 操作区域;
Top操作区域的一排像素点,表示横向拉伸的像素点;
Left操作区的一排像素点,表示纵向拉伸的像素点;
保存:点击file中的保存,直接写文件名即可,默认会保存在“我的文档”目录下,这个目录可以调整,保存完成之后就可以看到一个以.9.png为后缀的图片了,如下图:
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb5.png)
可以看到这张图的左侧和上部都有一条黑线。
使用:直接放在你的功能下的drawable目录或者其他drawable目录下即可。使用的时候直接在xml文件中使用,例如:
<TextViewandroid:id="@+id/swithCity"
android:background="@drawable/cityswitchback"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:text="切换城市"
style="@style/text03"android:gravity="center">
</TextView>
效果图如下:
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb6.png)
转载请注明出自”百度MUX”
本文链接:http://www.yixieshi.com/ucd/9142.html
时间:2011-09-08 02:05来源:百度MUX 作者:百度MUX 围观: 4389
次
“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png
智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。
我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真。
OK,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果。
【普通拉伸和点九拉伸效果对比】
![](http://www.yixieshi.com/uploads/allimg/110908/020RQB7-0.jpg)
对比很明显,使用点九后,仍能保留图像的渐变质感,和圆角的精细度。
从中我们也可以理解为什么叫“点九PNG”,其实相当于把一张png图分成了9个部分(九宫格),分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的清晰状态,而2条水 平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样
二.“点九”的制作方法
方法1:使用 “draw9patch”工具绘制,流程如下
![](http://www.yixieshi.com/uploads/allimg/110908/020RQ532-1.jpg)
1. 安装工具
首先你需要给自己的电脑安装上java于系统的默认目录下。没有安装java的同学可以在百度搜索:jdk-6u20-windows-i586,安装包大小80M左右。 一些事
然后使用andriod模拟器—android-sdk-windows,打开SDK/tools目录下的“draw9patch.bat”文件,出现载入窗口:
![](http://www.yixieshi.com/uploads/allimg/110908/020RV249-2.jpg)
2.导入并编辑
将png图片拖拽到该窗口中
如下图,自动进入编辑界面。图中介绍了每个区域的内容及功能注释。
![](http://www.yixieshi.com/uploads/allimg/110908/020RVZ2-3.jpg)
预览右侧的视图发现,图片的边缘处于普通拉伸状态。
现在我们在图片边缘点击左键,绘制出黑线,即图片需要被拉伸的部分。如下图,对4条黑线做了注释。
![](http://www.yixieshi.com/uploads/allimg/110908/020RW320-4.jpg)
如果失误多绘的部分,可按住shift键的同时点击鼠标左键擦除)。
如图所见,三种拉伸结果均已完美显示,已实现我们想要的拉伸效果,假设这是一个有显示文字的窗体,那么文字显示的区域,程序也会控制在黑线对应范围。 互联网的一些事
![](http://www.yixieshi.com/uploads/allimg/110908/020RU3b-5.jpg)
以下这些图片,包括异性(非规则图形)图片,也可以通过点九PNG实现横纵向的自然拉伸。 互联网的一些事
![](http://www.yixieshi.com/uploads/allimg/110908/020RWJ8-6.jpg)
![](http://www.yixieshi.com/uploads/allimg/110908/020RWS1-7.jpg)
【draw9patch.bat其他功能说明】
② Show lock:显示不可绘区域
② Show patches:预览这个绘图区中的可延伸宫格(粉红色代表一个可延伸区域)
③ Show patches:预览视图中的高亮区域(紫色区域) 一些事
④ Show bad patches:在宫格区域四周增加一个红色边界,这可能会在图像被延伸时产生人工痕迹。如果你消除所有的坏宫格,延伸视图的视觉一致性将得到维护。
3.保存和输出 互联网的一些事
点击左上file- save,保存文件,自动生成一张后缀名为“*.9.png”格式的图片,图片上下左右各增加了1px的黑线。
方法2:直接使用 PS等平面工具绘制,流程图如下 yixieshi
![](http://www.yixieshi.com/uploads/allimg/110908/020RR003-8.jpg)
如流程图所示,相对与方法1,只需2个步骤就可得到.9.png图片,具体步骤为:
1. 确定切图后直接改变图片的画布大小,
2. 手动将上下左右各增加1px
3. 使用铅笔工具,手动绘制拉伸区域,色值必须为黑色(#000000)。 一些事
4. 存储为web所用格式,选择png-24,储存时手动将后缀名改为.9.png
不过这种方法的缺点是不能实时预览,判断并测试拉伸区域的准确性。
使用此方法需要注意以下2点:
1. 手绘的黑线拉伸区必须是#000000,透明度100%,并且图像四边不能出现半透明像素;
2. 你的.9.png必须绘有拉伸区域的黑线; 一些事
否则,图片不会通过android系统编译,导致程序报错。还有,有同学疑惑解压缩apk文件后,.9.png图片里的黑线怎么没了? 一些事
那是因为andriod程序在把文件打包成apk的时候,程序会自动把*.9.png图片边缘的黑线去掉,所以解压缩apk后看到的.9.png文件是没有黑线的。
三.使用“点九”的意义 互联网的一些事
关于下图,经过测试发现使用普通png的显示效果出现明显的变色横纹。而.9.png图片的显示效果明显优于普通png。
![](http://www.yixieshi.com/uploads/allimg/110908/020RW501-9.jpg)
使用.9.png格式后,横纹问题基本已解决。因为对于.9.png图片,android系统程序有对其优化的算法。
由于android手机屏幕的材质质量差距大。很多屏幕不支持16位以上的颜色显示。
所以渲染后结果出现丢失颜色,故造成横纹显示。
经与多款android手机对比后发现,屏幕越次的手机横纹越明显。
而使用了*.9.png图片技术后,只需要采用一套界面切图去适配不同的分辨率,而且大幅减少安装包的大小。而且这样程序不需要专门做处理的就可以实现其拉伸,也减少了代码量和开发工作量。
相信每个人android平台的切图工作,会有不同的技巧和心得,非常欢迎大家能在评论中留下自己的个人经验及心得。相互交流会让我们的工作模式更灵活,更高效,同时带给大家更多优质的移动端应用:) 互联
一、什么是9.png:
[align=left] 9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧)[/align]
[align=left] 首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域[/align]
[align=left]只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被[/align]
[align=left]打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。[/align]
[align=left]当我们制作出9.png图片的时候你还有惊奇的发现一个几KB或者几十KB的图片,变得非常的小,一般只有几百个字节那么大,[/align]
[align=left]系统加载起来当然会更加的流畅咯。[/align]
.9图片的制作工具在解压的sdk目录下tools:draw9patch,双击即可打开。
将你用PS制作的图片素材,拖到该窗口中,出现如图:
解释:中间黑红条纹部分表示不能编辑,边缘白色透明框就是上述介绍的增加的一像素边框。
[align=left] 将鼠标放在白色边框,点住左键不放拖动,会出现黑色线条如图:[/align]
[align=left] 解释:1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域
2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域
3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域
4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域
没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色。[/align]
[align=left] 右边3个黑色图形区域为显示当前拉伸效果[/align]
[align=left] 选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png[/align]
我们可以看见图片的周围多了4个黑色条,不要急这个图片还不能用,这就是原始的9.png图片,当我们进行下一步操作后,这个图片就变得正常了。
[align=left]去黑边:
[/align]
解压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.这个图片就是我们要美化替换的图片
[align=left]======================================[/align]
[align=left]反编辑出来的图片作黑边模版[/align]
[align=left]=====================================
[/align]
[align=left]解压[/align]
[align=left]apktool.zip[/align]
[align=left]压缩包[/align]
[align=left]点安装.bat”,此时会在系统c盘生成几个文件。[/align]
[align=left] 3、将你要修改的framework-res.apk(当然也可以是其他系统程序apk文件,如music.apk)重命名为update.apk,并放到c:盘根目录[/align]
[align=left](必须放c:,因为后面执行的批处理文件编写的是在c:工作)[/align]
[align=left] 4、执行c:根目录下unpack.bat,此时会在c:生成一个update的文件夹,里面的内容就是你要修改的APK文件,并且当你打开drawable-hdpi[/align]
[align=left]文件夹时你会发现里面的9.png图片变得和我们上面制作的相像了,都有4条黑边,这就是该工具将其还原了。[/align]
[align=left]=======================[/align]
[align=left]按AIT+TAB键,转换窗口。对照黑边模版,画的黑边速度快,准[/align]
[align=left]===============================[/align]
android,图片,程序
4b26d01d-c056-3b85-9fe7-4f56209009d9.jpg(174.82
KB, 下载次数: 15)
![](http://www.apkbus.com/data/attachment/forum/201206/27/1157406cainn6bvicbugwg.jpg)
3e9b5a41-c532-3e6b-b4e9-7fe07e6dba99.jpg(170.78
KB, 下载次数: 4)
![](http://www.apkbus.com/data/attachment/forum/201206/27/115951t9mctzovlrcggcdd.jpg)
转自:http://blog.sina.com.cn/s/blog_62f1fc0701019v9s.html
与传统的png格式图片相比, 9.png格式图片在图片四周有一圈一个像素点组成的边沿,该边沿用于对图片的可扩展区和内容显示区进行定义。
这种格式的图片在android环境下具有自适应调节大小的能力。
例如,我们经常看到的android系统的按钮,还有各种短信应用中使用的对话背景图片的效果,就是使用的.9图片。
下面,就介绍一下如何使用android自带的工具,制作.9图片。
1
运行android SDK中tools路径下的draw9patch.bat文件。运行界面如下:
![](http://www.devdiv.com/data/attachment/album/201205/07/1530569c9ru79rq1c199r9.jpg)
2选择一张图片(.png格式)添加进来。你会发现本来边缘没有透明区域的图片,四周多出了一像素的空隙,这四个空隙是给.9图片划线用的
![](http://www.devdiv.com/data/attachment/album/201205/07/154008qjuru5z69uplbulb.jpg)
。
3所谓给.9图片划线,指的是通过划线,决定图片的可拉伸区域和显示文本信息的区域。
其中,上方和左方的线是控制图片的可拉伸区域的,也就是说,上方的线控制图片横向可拉伸,左侧的线控制纵向可拉伸。下方的线和右侧的线控制图片的文本区域,也就是说,如果图片上有text,就会把位置控制在下方和右侧的线围城的区域里。
4 直接通过鼠标在边缘一像素区域的拖动划线。如果想删除划线,按住shift + 鼠标左键,删除划
![](http://www.devdiv.com/data/attachment/album/201205/07/155158nop7pxnx6hbh463a.jpg)
线。
5右侧会有三个图片展示,第一张为左侧线产生的纵向可拉伸效果图,第二张为上方线产生的横向可拉伸效果图,第三张为横纵向同时拉伸的效果图,完成划线之后点击保存。
![](http://www.devdiv.com/data/attachment/album/201205/07/155158w0ypqa03a9zx0ct0.jpg)
至此,.9图片制作完成。至于使用.9图片的效果,需要在实践中验证,不再赘述。同时,要注意工具下方功能选项和拖动条的使用。
----------------------------------------------------------------------------
启动9妹:
在你Android SDK 路径下 X:\android sdk\tools ,你会找到一个【draw9patch.bat】,没错这就是9妹啦、官方名 NinePatch ;
提示导入一张png图片,然后真正进入"9妹"的操作界面(如下图): (图1)
序 列 ① :在拉伸区域周围用红色边框显示可能会对拉伸后的图片产生变形的区域,如果完全消除该内容则图片拉伸后是没有变形的,也就是说, 不管如何缩放图片显示都是良
好的。 (实际试 发现NinePatch编辑器是根据图片的颜色值来区分是否为badpatch的,一边来说只 要色差不是太大不用考虑这个设置。)
序列 ② :区域是导入的图片,以及可操作区域。
序 列 ③ :这里 zoom:的长条bar是对导入的图放大缩小操作,这里的放大缩小只是为了让使用者更方便操作,毕竟是对像素点操作比较费 眼,下面的
patch scale 是序列④区域中的三种形态的拉伸后的一个预览操作,可以看到操作后的图片拉伸后的效果。
序列 ④: 区域这里从上到下,依次为:纵向拉伸的效果预览、横向拉伸的效果预览,以及整体拉伸的效果预览
序列 ⑤: 这里如果你勾选上,那么当你鼠标放在 ②区域内的时候并且当前位置为不可操作区域就会出现lock的一张图,就是显示不可编辑区域 ;
序列 ⑥: 这里勾选上,那么在④ 区域中你就会看到当前操作的像素点在拉伸预览图中的相对位置和效果。
序列 ⑦: 在编辑区域显示图片拉伸的区域;
如何操作:
鼠标左键选取需要拉伸的像素点; shift+鼠标左键取消当前像素点。
操作区域:
大家看到导入的png图片默认周围多了一像素点,也就是这一圈一像素点就是咱们的可操作区域。但是因为下方和右方可操作区域属于可选区域,不用理会;主要大家注意Left和 top 操作区域;
Top操作区域的一排像素点,表示横向拉伸的像素点;
Left操作区的一排像素点,表示纵向拉伸的像素点;
以上摘自李华明博客
首先说一下9 path是什么。9path是android特殊格式的png图,它以.9.png为后缀名。
它用在使用图片做背景时做拉伸使用的,9path会选择一个背景图片中的一部分在拉伸时做平铺,其他区域保持原始大小,来组合成一张新的背景。当然也可以用在设置图片的时候设置的图片超过原始大小时,将其中的部分做平铺,其他区域保持不变。
怎么得到9path图片?
使用android sdk中自带的工具
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb1.png)
双击打开。
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb2.png)
点击file,打开一张普通的png图片。
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb3.png)
序列 ①:在拉伸区域周围用红色边框显示可能会对拉伸后的图片产生变形的区域,如果完全消除该内容则图片拉伸后是没有变形的,也就是说,不管如何缩放图片显示都是良好的。 (实际试 发现NinePatch编辑器是根据图片的颜色值来区分是否为badpatch的,一边来说只要色差不是太大不用考虑这个设置。)
序列 ② :区域是导入的图片,以及可操作区域。
序列 ③ :这里 zoom:的长条bar是对导入的图放大缩小操作,这里的放大缩小只是为了让使用者更方便操作,毕竟是对像素点操作比较费眼,下面的 patch scale 是序列④区域中的三种形态的拉伸后的一个预览操作,可以看到操作后的图片拉伸后的效果。
序列 ④: 区域这里从上到下,依次为:纵向拉伸的效果预览、横向拉伸的效果预览,以及整体拉伸的效果预览
序列 ⑤: 这里如果你勾选上,那么当你鼠标放在 ②区域内的时候并且当前位置为不可操作区域就会出现lock的一张图,就是显示不可编辑区域 ;
序列 ⑥: 这里勾选上,那么在④ 区域中你就会看到当前操作的像素点在拉伸预览图中的相对位置和效果。
序列 ⑦: 在编辑区域显示图片拉伸的区域;
操作:鼠标左键选取需要拉伸的像素点; shift+鼠标左键取消当前像素点。
如下图:新导入的png文件在周围会多出一个像素点,这一圈一像素点是我们的操作区域
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb4.png)
这里需要注意一点就是,必须左边和上边都得有黑线,如果只有一边有黑线的话,生成的png文件在eclipse中会报错。另外要注意内容区域的标记不能有间断,也就是说标记要连续且仅有一处,否则.9.png图片在放入项目下会报错。
主要大家注意Left 和 top 操作区域;
Top操作区域的一排像素点,表示横向拉伸的像素点;
Left操作区的一排像素点,表示纵向拉伸的像素点;
保存:点击file中的保存,直接写文件名即可,默认会保存在“我的文档”目录下,这个目录可以调整,保存完成之后就可以看到一个以.9.png为后缀的图片了,如下图:
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb5.png)
可以看到这张图的左侧和上部都有一条黑线。
使用:直接放在你的功能下的drawable目录或者其他drawable目录下即可。使用的时候直接在xml文件中使用,例如:
<TextViewandroid:id="@+id/swithCity"
android:background="@drawable/cityswitchback"android:layout_width="wrap_content"
android:layout_height="wrap_content"android:text="切换城市"
style="@style/text03"android:gravity="center">
</TextView>
效果图如下:
![](http://henzil.easymorse.com/wp-content/uploads/2011/04/image_thumb6.png)
转载请注明出自”百度MUX”
本文链接:http://www.yixieshi.com/ucd/9142.html
android平台下使用点九PNG技术
时间:2011-09-08 02:05来源:百度MUX 作者:百度MUX 围观: 4389次
“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png
智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。
我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真。
OK,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果。
【普通拉伸和点九拉伸效果对比】
![](http://www.yixieshi.com/uploads/allimg/110908/020RQB7-0.jpg)
对比很明显,使用点九后,仍能保留图像的渐变质感,和圆角的精细度。
从中我们也可以理解为什么叫“点九PNG”,其实相当于把一张png图分成了9个部分(九宫格),分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的清晰状态,而2条水 平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样
二.“点九”的制作方法
方法1:使用 “draw9patch”工具绘制,流程如下
![](http://www.yixieshi.com/uploads/allimg/110908/020RQ532-1.jpg)
1. 安装工具
首先你需要给自己的电脑安装上java于系统的默认目录下。没有安装java的同学可以在百度搜索:jdk-6u20-windows-i586,安装包大小80M左右。 一些事
然后使用andriod模拟器—android-sdk-windows,打开SDK/tools目录下的“draw9patch.bat”文件,出现载入窗口:
![](http://www.yixieshi.com/uploads/allimg/110908/020RV249-2.jpg)
2.导入并编辑
将png图片拖拽到该窗口中
如下图,自动进入编辑界面。图中介绍了每个区域的内容及功能注释。
![](http://www.yixieshi.com/uploads/allimg/110908/020RVZ2-3.jpg)
预览右侧的视图发现,图片的边缘处于普通拉伸状态。
现在我们在图片边缘点击左键,绘制出黑线,即图片需要被拉伸的部分。如下图,对4条黑线做了注释。
![](http://www.yixieshi.com/uploads/allimg/110908/020RW320-4.jpg)
如果失误多绘的部分,可按住shift键的同时点击鼠标左键擦除)。
如图所见,三种拉伸结果均已完美显示,已实现我们想要的拉伸效果,假设这是一个有显示文字的窗体,那么文字显示的区域,程序也会控制在黑线对应范围。 互联网的一些事
![](http://www.yixieshi.com/uploads/allimg/110908/020RU3b-5.jpg)
以下这些图片,包括异性(非规则图形)图片,也可以通过点九PNG实现横纵向的自然拉伸。 互联网的一些事
![](http://www.yixieshi.com/uploads/allimg/110908/020RWJ8-6.jpg)
![](http://www.yixieshi.com/uploads/allimg/110908/020RWS1-7.jpg)
【draw9patch.bat其他功能说明】
② Show lock:显示不可绘区域
② Show patches:预览这个绘图区中的可延伸宫格(粉红色代表一个可延伸区域)
③ Show patches:预览视图中的高亮区域(紫色区域) 一些事
④ Show bad patches:在宫格区域四周增加一个红色边界,这可能会在图像被延伸时产生人工痕迹。如果你消除所有的坏宫格,延伸视图的视觉一致性将得到维护。
3.保存和输出 互联网的一些事
点击左上file- save,保存文件,自动生成一张后缀名为“*.9.png”格式的图片,图片上下左右各增加了1px的黑线。
方法2:直接使用 PS等平面工具绘制,流程图如下 yixieshi
![](http://www.yixieshi.com/uploads/allimg/110908/020RR003-8.jpg)
如流程图所示,相对与方法1,只需2个步骤就可得到.9.png图片,具体步骤为:
1. 确定切图后直接改变图片的画布大小,
2. 手动将上下左右各增加1px
3. 使用铅笔工具,手动绘制拉伸区域,色值必须为黑色(#000000)。 一些事
4. 存储为web所用格式,选择png-24,储存时手动将后缀名改为.9.png
不过这种方法的缺点是不能实时预览,判断并测试拉伸区域的准确性。
使用此方法需要注意以下2点:
1. 手绘的黑线拉伸区必须是#000000,透明度100%,并且图像四边不能出现半透明像素;
2. 你的.9.png必须绘有拉伸区域的黑线; 一些事
否则,图片不会通过android系统编译,导致程序报错。还有,有同学疑惑解压缩apk文件后,.9.png图片里的黑线怎么没了? 一些事
那是因为andriod程序在把文件打包成apk的时候,程序会自动把*.9.png图片边缘的黑线去掉,所以解压缩apk后看到的.9.png文件是没有黑线的。
三.使用“点九”的意义 互联网的一些事
关于下图,经过测试发现使用普通png的显示效果出现明显的变色横纹。而.9.png图片的显示效果明显优于普通png。
![](http://www.yixieshi.com/uploads/allimg/110908/020RW501-9.jpg)
使用.9.png格式后,横纹问题基本已解决。因为对于.9.png图片,android系统程序有对其优化的算法。
由于android手机屏幕的材质质量差距大。很多屏幕不支持16位以上的颜色显示。
所以渲染后结果出现丢失颜色,故造成横纹显示。
经与多款android手机对比后发现,屏幕越次的手机横纹越明显。
而使用了*.9.png图片技术后,只需要采用一套界面切图去适配不同的分辨率,而且大幅减少安装包的大小。而且这样程序不需要专门做处理的就可以实现其拉伸,也减少了代码量和开发工作量。
相信每个人android平台的切图工作,会有不同的技巧和心得,非常欢迎大家能在评论中留下自己的个人经验及心得。相互交流会让我们的工作模式更灵活,更高效,同时带给大家更多优质的移动端应用:) 互联
相关文章推荐
- 初学Android:数据存储技术小结
- Android处理图片OOM的若干方法小结
- Android学习WebView使用小结
- Android中的soundpool小结
- Android处理图片OOM的若干方法小结
- Android时间日期类小结
- [android反编译小结]apktool/ AXMLPrinter2.jar/ dex2jar.bat/ jd-gui/ Jodeclipse/ JadClipse
- Android状态check、focused、pressed、selected小结
- Android Bluetooth用法小结
- Android开发之—.9.png图片的制作
- Android 中下载文件到sdcard和进度条小结
- android工程导入ADT缺default.properites、JDK版本和Unknown command crunch等问题小结
- Android 大文件上传时处理上传进度问题小结
- Android把Bitmap保存为PNG图像文件的简单方法(同步)
- Android 开发学习小结(四)
- Android:Sqlitedatabase学习小结
- android Task小结
- android 加载图片oom若干方案小结
- Android沉浸式状态栏小结
- 查询方法android的CursorLoader用法小结