•引言

  9.png 可以保证图片在合适的位置进行局部拉伸,避免了图片全局缩放造成的图片变形问题。

  但是由于Android Studio对于.9图片的检查更加严格,所以不符合AS要求的.9图片会带来很多坑。

  不过,AS也提供了制作点9图片的便捷入口,并且会检查你的.9图是否有不合理的拉伸区域。

•为什么要制作 .9 图片?

  Nine-Patch 图片到底有什么实际作用呢?

  我们通过一个例子来看一下;

  从网上下载一张气泡样式的图片 message_left.png,如下图所示:

    

  将该图片放置到 res/drawable 文件夹下;

  我们将这张图片设置为 LinearLayout 的背景图片,修改 activity_main.xml 中的代码,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/message_left"> </LinearLayout>

  将 LinearLayout 的宽度指定为 match_parent,然后,将他的背景图片设置为 message_left;

  现在运行程序,效果图如下所示:

    

  

  可以看到,由于 message_left 的宽度不足以填满整个屏幕的宽度;

  整张图片被均匀地拉伸了;

  这种效果非常差,也是后我们就可以使用 Nine-Patch 图片来进行改善;

•如何制作.9图片?

  首先《第一行代码中》的方法过时了,这项功能已经被集成到AS当中了;

  两种方式制作.9图片:

  1. 将图片放入到 drawable 文件夹中,将图片后缀改为.9.png,然后点击图片,直接进入点9图片制作视图
  2. 我们在 res/drawable 下找到这张图片,右击该图片选择 Create 9-Patch file 选项

      

      

    点击 OK 即可创建 message_left.9 图片,打开 .9 图片,如下图所示:

      

  我们可以在图片的四个边框绘制一个个的小黑点;

  使用鼠标在图片的边缘拖动就可以进行绘制:

    

  按住 shift 键拖动可以进行擦除:

    

  绘制完成后的效果图如下图所示:

    

•说明

  以下内容为转载内容,原文链接:如何在Android Studio中潇洒的使用.9.png

•在AS中使用.9.png要点

  1. 点9图片每个边都必须有黑线标记;
  2. 点9图片每个边只能一条黑线标记;
  3. 左边和上边的线用于限制可以拉伸的区域,右边和下边的线用于限制内容可以显示的区域;
  4. AS中可以直接制作点9图片;
  5. AS中点9图片要放在drawable中而不是mipmap中;

•.9.png中四条黑线的意义

  

  1:黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域
  2:黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域
  3:黑色条位置向上覆盖的区域表示图片纵向显示内容的区域(在手机上主要是文字区域)
  4:黑色条位置向左覆盖的区域表示图片横向显示内容的区域(在手机上主要是文字区域)

•.9.png制作工具解析

  

  • Zoom : 左边原图的缩放比例
  • Patch scale : 右边 .9图 缩放后的效果
  • show lock : 勾选后,鼠标放到原图上,会显示红色斜线部分,表示 .9图 锁定的区域
  • show content :
    • 勾选后,右边图中的蓝色区域表示可以填充内容,绿色区域便是不可填充内容
    • 移动原图中右边和下边的修改可填充内容的区域,规则如上
  • show patches : 显示原图中可以缩放的区域
  • show bad patches : 显示原图中不规范的缩放区域
    • 比如带弧度中部分是不应该缩放的,如下图中红线标记的区域
    • 遇到这种情况,需要调整1,2位置的黑线,不标记弧度部分,红线就会取消

•.9.png的常见bug

  1. .9图片每个边只能一条黑线标记;
  2. .9图片每个边都必须有黑线标记;

Android Studio 之 制作 Nine-Patch 图片(.9图片)的更多相关文章

  1. Android Studio [ImageView/使用第三方库加载图片]

    ImageViewActivity.class package com.xdw.a122; import android.support.v7.app.AppCompatActivity; impor ...

  2. Android Studio中 图片资源存在但是运行时报错的问题

    最近看安卓遇到了了一个很头疼的问题,我明明在drawable文件夹中添加了图片资源,Android Studio 中也预加载了图片,但是在运行的时候就开始咔咔咔报错 = = 如下图所示: 图片后面显示 ...

  3. Android studio .9图片造成的错误总结

    前言,今天早晨遇到一个很奇葩的问题,导致我花费了很长的时间来解决.从eclipse 项目里复制过来4张.9图片,粘贴到android studio 项目里, 一运行发现报错,开始是 找不到这几张.9图 ...

  4. Android studio图片ERROR: 9-patch image xx .9.png malformed

    Android studio 图片错误  9-patch image error in Android ERROR: 9-patch image xx .9.png malformed 1) 异常: ...

  5. Android ImageView 不显示JPEG图片 及 Android Studio中怎样引用图片资源

    Android ImageView 不显示JPEG图片 今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里须要设置成setVisibility(View.VISIB ...

  6. android studio 报错-----R全部显示红色 ---- .9图片报错

    导入android项目后,R全部变红,控制台有下面的提示 意思是缺少一些资源,比如说图片之类的,然后我发现确实少了一张图片资源,导入图片资源后,依旧报错,如下  Error:Execution fai ...

  7. Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)

    前言:github对开发者而言无疑是个宝藏,但想利用它可不是件简单的事,用Android studio导入开源项目会遇到各种问题,今天我就以github上的一个图片轮播项目为例,解决导入过程中的常见问 ...

  8. 2.5、Android Studio添加多适配的向量图片

    Android Studio包含一个Vector Asset Studio的工具,可以帮助你添加Material图标和导入SVG(Scalable Vector Graphic)文件到你的项目中作为向 ...

  9. android studio 在使用图片的时候会检测图片的合法性

    1.当android studio 在使用png格式的时候,会报一系列的错误,甚至会显示找不到R文件,这是因为Android studio 不支持png格式的图片,检测图片的合法性的时候会报错 解决方 ...

随机推荐

  1. Big O Complexity Graph

    Big O Complexity Graph Big O === O() 算法复杂度速查表 数据结构 数组排序算法 Quicksort O(n log(n)) O(n log(n)) O(n^2) O ...

  2. js & Event Bus

    js & Event Bus global event handler (broadcast / trigger / emit / listen ) // 实现一个 EventBus类,这个类 ...

  3. js generator和yield

    function co<T>(fn: () => Generator<any, any, any>): Promise<T> { const g: Gener ...

  4. Python安装教程

    1.下载好Python安装包后,双击打开(第一个是32位,第二个是64位,根据自己电脑位数进行选择): 2.打开后如下,先将下方的Python添加到系统环境变量勾选上,再点击第一个默认安装即可: 3. ...

  5. Java基本概念:面向对象

    一.简介 面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么.第二步做什么的细节中. 面向对象的思维模式说白了就是分类思维模式.思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独 ...

  6. Vue3.0+Electron聊天室|electron跨平台仿QQ客户端|vue3.x聊天应用

    基于vue3+electron11跨端仿制QQ桌面应用实战Vue3ElectronQchat. 使用vue3+electron+vuex4+ant-design-vue+v3scroll+v3laye ...

  7. Qt update刷新之源码分析(二)

    大家好,我是IT文艺男,来自一线大厂的一线程序员 上次视频给大家从源码层面剖析了Qt update刷新机制的异步事件投递过程,这次视频主要从源码层面剖析Qt刷新事件(QEvent::UpdateReq ...

  8. LeetCode1576. 替换所有的问号

    原题链接 1 class Solution { 2 public: 3 string modifyString(string s) { 4 int lens = s.length(); 5 for(i ...

  9. Git:分支管理

    代码中至少有一个分支,就是主分支master,默认都是在主分支上开发. 多分支 分支名: 版本库中必须唯一 不能以 - 开头 可以试用/,但不能以/结尾,被/分隔的名称不能以.开头 不能有连个连续的 ...

  10. Hi3559AV100的VI细节处理说明

    因为项目后期涉及到MPP平台下的VI接口,现把有关视频输入VI模块的实现细节总结,也方便大家进一步了解. 1.整体概述 视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVD ...