简述Android 9-Patch

什么是9-Patch

  • 安卓开发里面的一种特殊的图片,这种格式的图片在 android 环境下具有自适应调节大小的能力,文件名以.9.png结尾。

如何制作 9-Patch 文件

  • 创建:
    • 首先,将需要制作成 9-patch 的图片放进项目中
    • 点击该图片,右键调出菜单栏,选中 Create 9-Patch file
      • image
    • 指定9-Patch文件存储位置(建议重新编辑下名称,后面引用才不会冲突)
      • image
    • 点击确定后,我们就在目录下得到了一张.9图了,但是,我们还需要对图片进行编辑,这样图片的拉伸效果才会是我们想要的。
  • 编辑:
    • 编辑界面初始化完成时,我们可以看到界面分为两部分:
      • 左侧部分为编辑区域,该区域的下方是控制栏,灵活使用控制栏中的功能能让我们操作更加简单;
      • 右侧部分为预览区域,在编辑区域做的操作都会在预览区域得到体现。
      • image
    • 在我们开始编辑前,非常重要的一点!!!需要清楚我们编辑的图片矩形区域对应边的作用!!!
      • 拉伸区域:
        • 在图片矩形区域的左边为纵向拉伸区域,上边为横向拉伸区域;
        • 该区域,可以存在多段拉伸区域。
      • 内容区域:
        • 在图片矩形区域的右边为纵向内容区域,下边为横向内容区域;
        • 该区域,拉伸区域应该是连续的一段。
    • 我们回到左侧的编辑区域,可以尝试将鼠标移至图片区域,我们能看到图片出现了一层蒙板,还出现了多条灰色的线条,将鼠标移至任意一条线条上,鼠标指针会变成可左右或上下拖动的模式,按住鼠标左键就可以进行拖动了。
      • image
    • 拖动后我们可以发现,图片原本周围有一圈白灰相间的区域,发生了变化,一部分变成了黑色,该黑色部分就是我们设置的可拉伸区域。编辑中我们会发现,拉伸区域可以是一个范围,也可以只有一个点,根据我们的需要去设置就可以了。
      • image
    • 接着我们继续拖动不同的线条,或直接点击在图片周围的灰白相间区域,获得拉伸区域,在进行拖动扩大拉伸范围。
    • 在图片矩形区域需要拉伸的边上设置拉伸区域,这时我们可以看预览区域的效果,在进行微调,直到达到你想要的效果。
  • 技巧:
    • 这部分我们将使用到前面提到的控制栏,现在我们来看看控制栏能帮我们做些什么。
    • Zoom
      • 在编辑可拉伸区域时,我们可以利用控制栏中的 Zoom 放大编辑区域,提高我们编辑的精度。
      • image
      • image
    • Patch scale
      • 当我们编辑完成,预览区域的效果无法让我们看大更大的拉伸效果时,我们可以利用控制栏中的 Patch scale 调整预览区域显示效果。
      • image
      • image
    • Show content
      • 但预览图达到了我们想要的效果时,运行起来,内容都显示不完整,此时我们就需要使用 Show content 查看内容显示区域是否足够大。
      • 开启后,预览区域中紫色区域就是我们内容显示区域,该区域为图片矩形相邻的右下两边区域的重叠部分,如果该区域偏小,我们需要再次编辑内容区域,使重叠部分增大。
      • image
    • Show patches
      • 编辑拉伸区域时,我们可以开启 Show parches 后,在编辑区域拉伸区域会呈现粉红色,非拉伸区域会呈现绿色,这样方便我们预览到拉伸区域的变化。
      • image
    • Show bad patches
      • 编辑完成后,我们可以开启 Show bad patches,它会把非正常拉伸区域用红色框圈起来,我们可以根据提示进行调整,消除非正常拉伸区域。
      • 错误例子:
        image
      • 修正以后:
        image
  • 控制栏功能说明
    • Zoom
      • 调整绘图区域中图形的缩放级别
    • Patch scale
      • 调整预览区域中图像的比例
    • Show lock
      • 在鼠标悬停时可视化图形的不可绘制区域
    • Show content
      • 突出显示预览图像中的内容区域(紫色是允许内容的区域)。
    • Show patches
      • 在绘图区域中预览可伸展的修补程序(粉红色是可伸缩的修补程序)
    • Show bad patches
      • 在补丁区域周围添加红色边框,在拉伸时可能会在图形中产生伪影。如果消除所有不良补丁,将保持拉伸图像的视觉一致性。

遇到的问题

  • 问题 1
    •   Android resource compilation failed
        error: too many padding sections on right border.
        
        Android资源编译失败
        错误:右边框上的填充部分太多。
      
      • 原因: 没区分拉伸区域和内容区域,简单来说就是图片矩形区域的右边或下边出现了多个或不连续的拉伸区域造成的。
  • 问题 2
    •   [drawable/img] ...\app\src\main\res\drawable\img.png    
        [drawable/img] ...\app\src\main\res\drawable\img.9.png: 
        Error: Duplicate resources
      
      • 原因:创建.9图片时,和源文件命名冲突,修改其中一个的名称就可以了。
  • 问题 3
    • 设置背景后,内容无法居中
      • 原因:当我们编辑内容区域时,该区域与原图片已经不会重合了,因此产生了内边距,当然我们可以通过在代码中设置内边距为0,这样一来就解决了无法居中问题。
  • 问题 4
    • 拉伸区域为图片矩形的左边和上边,但如果我们需要拉伸的区域在图片的右边或者下边时,我们应该怎么处理?
      • 处理方法:前面我们说过,可拉伸区域是允许存在多段拉伸区域的,那么我们也就可以设置多个拉伸区域,让其中一个区域对准对边需要拉伸的位置,这样就实现了拉伸效果了。
      • image

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335