$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>
显示效果如下:

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

可见严重变形,因为chat.png的宽度不足以填满整个屏幕的宽度,整张图片被均匀拉伸了,这是不能容忍的!于是我们就要把它处理成Nine-Patch图片。
(二)Nine-Patch图片的制作方法
1、在Android SDK的tools文件夹下,有一个draw9patch.bat的文件,就用它来制作Nine-Patch图片。
2、打开这个软件后,点击File—>Open 9-patch将chat.png加载进来,如下:

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

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

5、注意:制作Nine-Patch图片时每条边的黑线必须是连续的,不能断开,否则图片会失效。
随机推荐
- Java并发编程(九)安全发布
之前讨论是如何将对象封闭在线程之中,这样可以减少一些并发带来的同步和可见性问题.但是在有些时候,我们希望在多个线程间共享对象,此时必须确保安全地进行共享. [不安全发布的示例] 可见性问题:其他线程看 ...
- django 类通用视图详解
view() : 该类为所有类视图的父类,处于最底层,仅仅只对请求参数做校验后,给特定请求方法做特定调用. 用法: url中定位到类方法:Aa.as_view() ——> View.as ...
- iOS-毛玻璃、navigationBar滑动颜色渐变
1.毛玻璃实现 iOS8以上,官方提供了系统方法实现毛玻璃,代码如下: // iOS8 UIVisualEffectView UIImageView *bgView = [[UIImageView a ...
- JAVA学习第六十三课 — 关于client服务端 && URL类 & URLConnection
常见的client和服务端 client: 浏览器:IE:弹窗体,猎豹:弹窗体.多标签,争强效果 服务端: server:TomCat:1.处理请求 2.给予应答 想让TomC ...
- Linux C 获取系统时间信息
比如获取当前年份: /* 获取当前系统时间 暂时不使用 ; ; time_t now; struct tm *timenow; time(&now); timeno ...
- GIT快速学习
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513ae ...
- java中通过配置文件的方式(Jedis驱动)使用Redis
在java中使用Redis,实际上是将Redis的一些命令封装到Jedis的实体类中,然后进行调用.
- [MongoDB]学习笔记--Linux 安装和运行MongoDB
背景知识 MongoDB 是用C++写的, 开源的, NoSQL(Not Only SQL)文档数据库. 特点:high performance(高性能), high availability(高可靠 ...
- EasyNVR智能云终端硬件使用场景分析:如何实现软硬一体的视频上云整体解决方案
背景分析 在于众多的客户交流中,经常会被客户问到,"EasyNVR到底是软件还是硬件?"."EasyNVR能否出一个硬件的版本,摆脱自建服务器的压力?".&qu ...
- 巨蟒django之权限6: 权限控制表设计&&登录权限
1.权限控制表设计 内容 . 什么是权限? . 为什么要有权限? 不同用户拥有不同的功能 . 在web开发中,什么是权限? url 代表 权限 . 开发一个权限的组件,为什么要开发组件? . 表结构的 ...