【记录】研究Android中的9 patch的图片的原理以及如何去生成对应图片

【背景】

折腾Android期间,遇到过很多次的,比如:

【记录】Android中自定义ActionBar的背景色等样式style

那种背景色(不是通过color指定而)是通过Android中一种特殊的图片:

9 patch

来控制的。

此处就好好去研究研究这个东西,搞清楚基本原理,以及如何生成这种图片。

【折腾过程】

1.参考:

Android Asset Studio – Simple Nine-patch Generator

Android界面制作中最重要最强大的武器: 9-patch | Freewind @ Thoughtworks

Draw 9-patch | Android Developers

2.官网的解释:

Canvas and Drawables | Android Developers – 9 Patch

 

9 Patch是一种Android中的(普通的二维的)图片。

Android会自动根据当前内容,而去缩放该图片,以适应所要显示的内容;

一般都是用做背景(背景色,背景图片等等)的;

后缀名是.9.png

一般是放在res/drawable/下面的;

9Patch图片,就是一种普通的png图片,额外加上一个像素宽的的边框;

这个边框,就是用于指定哪些部分是可以自动缩放(扩展)的,哪些部分是静态不变的;

边框中用黑色像素指定内容,余下部分应该是保持透明或白色;

具体的作用是:

  • 边框的左面和上面:用于指定可以缩放,重复的部分;
  • 边框的右边和下面:用于指定缩放的内容所允许的放在哪个位置;

3.然后去试试官网:

Draw 9-patch | Android Developers

提到的工具:

打开此处的:

D:\DevRoot\android\adt-bundle-windows\sdk\tools\draw9patch.bat

android adt-bundle-windows sdk tools draw9patch.bat file

然后去打开:

draw 9-patch tool open 9 patch

去随便打开了一个9patch的png,但是感觉还是不会编辑:

draw 9patch tool set left

draw 9patch mouse can not edit

4.网上也找到一个工具:

Android Asset Studio – Simple Nine-patch Generator

然后试试能不能用好:

结果需要先选择一个png图片。

我此处,想要一个淡蓝色的背景色,所以估计需要找个淡蓝色的图片。

所以去别处截个淡蓝色的png图片出来,加载图片:

rocksensor_light_blue

后,就可以生成所需要的ppatch图片:

Simple Nine-patch Generator generate the 9 patch for light blue

了。

 

5.本来不是太懂,只算基本懂了。。。

需要后续多多实践才能彻底搞懂的。

但是看了:

Android界面制作中最重要最强大的武器: 9-patch | Freewind @ Thoughtworks

后,就很清晰明白了。

 

【总结】

这个9patch,有点意思,抽空好好研究研究。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量