$Android制作和使用Nine-Patch图片

时间:2023-03-08 23:32:56
$Android制作和使用Nine-Patch图片

  Nine-Patch图片是一种经过特殊处理的png图片,能够指定图片的哪些区域可以被拉伸而哪些区域不可以。

  (一)普通图片被拉伸时的缺陷

  有如下xml文件,其中子LinearLayout的背景图片设置成一个名为chat的png图片:

 <?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="match_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/chat" >
</LinearLayout> </LinearLayout>

  显示效果如下:

$Android制作和使用Nine-Patch图片

  而chat.png的原图是这样的:

$Android制作和使用Nine-Patch图片

  可见严重变形,因为chat.png的宽度不足以填满整个屏幕的宽度,整张图片被均匀拉伸了,这是不能容忍的!于是我们就要把它处理成Nine-Patch图片。

  

  (二)Nine-Patch图片的制作方法

  1、在Android SDK的tools文件夹下,有一个draw9patch.bat的文件,就用它来制作Nine-Patch图片。

  2、打开这个软件后,点击File—>Open 9-patch将chat.png加载进来,如下:

$Android制作和使用Nine-Patch图片

  3、可以在图片的四个边框绘制一个个小黑点,上边框和左边框的部分表示当图片需要拉伸时就拉伸黑点标记的区域,下边框和右边框绘制的部分则表示内容会被放置的区域,如下图:

$Android制作和使用Nine-Patch图片

  4、修改好后点击File—>Save 9-patch,把绘制好的图片保存成chat.9.png,然后把chat.9.png再复制到工程的drawable目录下,并删除原来的chat.png,这时再看效果就没有拉伸变形丑陋的情况了(注意:此时xml中仍然写成:android:background="@drawable/chat"而不是:android:background="@drawable/chat.9")

  $Android制作和使用Nine-Patch图片

  5、注意:制作Nine-Patch图片时每条边的黑线必须是连续的,不能断开,否则图片会失效。

随机推荐

  1. kthreadd-linux下2号进程

    参考: 1. linux常见进程与内核线程 2. Linux下2号进程的kthreadd--Linux进程的管理与调度(七) 本文中代码内核版本:3.2.0 kthreadd:这种内核线程只有一个,它 ...

  2. poj3254 Corn Fields 利用状态压缩求方案数;

    Corn Fields 2015-11-25 13:42:33 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10658   ...

  3. git忽略已经被提交的文件,以及如何恢复追踪

    问题描述 之前在提交代码时,.gitignore 没有填写完整,导致idea编辑器的配置文件夹.idea被提交了 然后每次运行本地项目,都会在.idea文件夹下生成一堆文件,这时发现问题,将.idea ...

  4. Servlet 环境设置

    开发环境是您可以开发.测试.运行 Servlet 的地方. 就像任何其他的 Java 程序,您需要通过使用 Java 编译器 javac 编译 Servlet,在编译 Servlet 应用程序后,将它 ...

  5. 转载:Network In Network学习笔记

    转载原文1:http://blog.****.net/hjimce/article/details/50458190 转载原文2:http://blog.****.net/mounty_fsc/art ...

  6. nth-child 和 nth-of-type 的区别

    css3中有两个新的选择器可以选择父元素下对应的子元素,一个是:nth-child 另一个是:nth-of-type,它们2个的区别是: nth-of-type为什么要叫:nth-of-type?因为 ...

  7. Android Studio3.0 配置ButterKnife出错的解决

    需要注意的问题: (1)ButterKnife.bind(this);必须在设置布局之后进行初始化: 官方升级到了8.8.1了 compile 'com.jakewharton:butterknife ...

  8. Android开发:《Gradle Recipes for Android》阅读笔记1.6——使用android studio添加依赖

    有经验的gradle开发者习惯直接编辑build.gradle文件,但是IDE没有提供许多代码提示.IDE提供了一个可视的界面显示配置内容. 点击像文件夹一样的图标可以看到project struct ...

  9. VMware下安装centos6.7的步骤

    一.虚拟机的创建 1.点击创建新的虚拟机(图片红框的位置) 2.选择自定义安装.下一步(根据自己的需要有选择的进行选择) 3.新装的虚拟机的版本和虚拟机兼容的产品以及这个版本的虚拟机的限制(这个窗口没 ...

  10. 在看lua仿单继承

    --lua仿单继承 Account = { balance = } --对于成员变量,第一此访问要使用元表中的,在第一次也赋值到自己的域中了 --将不涉及到__index了 function Acco ...