zoukankan      html  css  js  c++  java
  • 9 patch png 的上下左右

    9 patch png 的上下左右

     

    前言:

    9 patch png 图片,扩展名为.9.png,是一个标准的PNG图像,它包括额外的1个像素的边界,通过对这个边界的描述来达到我们预期的拉伸效果。android引入这种png的扩展格式来解决同一图片在被拉伸后变形的问题,进一步为资源重用提供了优雅的解决方式。

    工具:

    要预览或者编辑9patch图片,就要用到android sdk中自带的draw9patch工具,该工具在android sdk 的 tools 目录下。

    本文主要介绍9 patch图片中上下左右四个描边分别的作用:

    这四个描边可以分为两类:

    1)用来描述可拉伸的区域----------------------由左和上描边决定;

    2)用来描述内部间距的区域-------------------由右和下描边决定;

    实例:

    下面来看几个例子,会对各个描边的作用有更直观的认识。

    (1)无描边

    下图是一张没有任何描边的png, 对于缩放,其实就是等价于image的scale效果。  可以明显的看到右侧的三张小图,四个边均有不同程度的变形;

    QQ截图20141221191132

    (2)左描边 和  上描边-----(定制可拉伸的区域)

    只有左描边时,图片垂直方向上被如下图标注,被分为三部分,当图片被纵向拉伸时,会发现 1,3区域保持,2区域被拉伸;而当图片横向拉伸时,效果跟情况(1)是一样的。

       QQ截图2014122223505677

    只有上描边时,情况跟只有左描边类似,只不过是当图片被向拉伸时,如下图,同样有 1,3区域保持,2区域被拉伸的效果。

    QQ截图20141223001731

    当上描边和左描边同时存在时,也是我们在android中用的最多的情况,照旧先上个图看看:

    QQ截图20141223002613

    两个描边,把图片分为了9份,我想这就是9 patch 名称的由来吧o(∩_∩)o ,从效果中我们就可以看到,在横向纵向的拉伸过程中1,3,7,9始终保持不变,这也就正好保持了四个圆角在任意拉伸后不变形;2和8在纵向拉伸的时候保持;4,6在横向拉伸的时候保持;5 就是那个时刻准备着被拉伸的主角。

    (3)右描边和下描边

    这个其实是个可选的操作,这两个描边定制了拉伸效果之后内部间距的问题。这个效果在当把9patch图片用于layout或者textview等这些控件的背景的时候,才会显现出来。继续上图来说明问题。

    QQ截图20141231000615

    上面图中,标出了ABCD 四个长度,这是由右描边和下描边分割出来的,在把这张图片作为父控件背景的时候,子控件相对与父控件的上下左右padding分别对应的就是ABCD。

    实例如下:

    QQ截图20141231001212

    这张途中标出的ABCD,就上图的ABCD 区域  一一对应,这样我们就多了一个直接通过9patch图片来设置padding了。完结。。

  • 相关阅读:
    jquery validate 自定义验证方法 日期验证
    转:前端控制器是邪恶的么?
    eclipse打开文件位置Open Explorer 插件
    Eclipse标准版安装J2EE
    短网址生成思路算法
    smarty模板执行原理
    Smarty 变量使用
    Php模板引擎Smarty安装和配置
    转:PHP分页技术的代码和示例
    黑板架构模式及其常见实现方式
  • 原文地址:https://www.cnblogs.com/hudabing/p/4198060.html
Copyright © 2011-2022 走看看