Android画布和图形绘制---Canvas and Drawables(五)
2012-06-12 08:49
281 查看
Nine-patch
NinePatchDrawable图形是可拉伸的位图图片,Android系统会根据View对象中的内容来自动的调整背景图片。使用NinePatch图片的一个例子就是标准Android按钮的背景图片---按钮必须根据字符串的长度来拉伸背景图片。NinePathc图形绘制的是一个标准的PNG图片,它包含了一个像素宽的边框。图片文件的扩展名必须是.9.png,并且要保存到工程的res/drawable/目录中。
边框被用于定义图片的拉伸和静态区域。通过在边框的左边和上边(其他边框的像素应该完成透明或是白色的)绘制一个或多个1像素宽的黑线来指定一个可拉伸的区域。可有多个可拉伸的区域,但它们的相对尺寸都相同,最大的区域始终要保持最大的区域。
还可以通过绘制右边线和底边线来定义一个图片的可选绘制区域(有效的填充线)。如果一个View对象设置NinePatch图片作为它的背景,并且给该View对象指定了文本,那么它就会自我拉伸,以便所有的文本都能够被填充在由右边线和底边线(如果包括的话)所设计的内部区域,如果不包括填充线,Android系统会使用左边线和上边线来定义该绘制区域。
要澄清不同边线间的差异,为了拉伸图片,左边线和上边线定义的图片的像素被允许复制。底边线和右边线定义了图片内相对区域,View对象的内容被允许放到这个区域内。
下图是用于定义按钮的一个NinePatch图片文件:
![](http://my.csdn.net/uploads/201206/12/1339462339_2331.PNG)
这个NinePatch图片用左边线和上边线定义了一个可拉伸的区域,用右边线和底边线定义了一个可绘图的区域。为了拉伸图片,在上面的那个图片中,灰色的点划线定指定了图片将要被重复的区域。在下面的那个图片中,粉色的矩形指明了View的内容被允许放置的区域。如果该区域不同完全填充View对象的内容,那么该图片就会被拉伸,直到内容被完全填充。
Draw 9-patch工具,使用WYSIWYG图形编辑器,提供非常方便的创建NinePatch图片的方法。如果定义的可拉伸区域在绘制构件的过程中存在像素复制的风险,它甚至会产生一个警告。
示例XML
该布局XML演示了如何把一个NinePatch图片添加到一对按钮中(NinePatch图片被保存在res/drawable/my_button_background.9.png中):
<Buttonid="@+id/tiny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:text="Tiny"
android:textSize="8sp"
android:background="@drawable/my_button_background"/>
<Buttonid="@+id/big"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:text="Biiiiiiig
text!"
android:textSize="30sp"
android:background="@drawable/my_button_background"/>
要注意的是,宽度和高度属性都被设置成了”wrap_content”,以便按钮能够根据文本尺寸来调整大小。
以下是使用上面显示的图片和XML定义所展现的两个按钮。注意,按钮的宽度和高度是如何根据文本的尺寸来拉伸背景图片的。
NinePatchDrawable图形是可拉伸的位图图片,Android系统会根据View对象中的内容来自动的调整背景图片。使用NinePatch图片的一个例子就是标准Android按钮的背景图片---按钮必须根据字符串的长度来拉伸背景图片。NinePathc图形绘制的是一个标准的PNG图片,它包含了一个像素宽的边框。图片文件的扩展名必须是.9.png,并且要保存到工程的res/drawable/目录中。
边框被用于定义图片的拉伸和静态区域。通过在边框的左边和上边(其他边框的像素应该完成透明或是白色的)绘制一个或多个1像素宽的黑线来指定一个可拉伸的区域。可有多个可拉伸的区域,但它们的相对尺寸都相同,最大的区域始终要保持最大的区域。
还可以通过绘制右边线和底边线来定义一个图片的可选绘制区域(有效的填充线)。如果一个View对象设置NinePatch图片作为它的背景,并且给该View对象指定了文本,那么它就会自我拉伸,以便所有的文本都能够被填充在由右边线和底边线(如果包括的话)所设计的内部区域,如果不包括填充线,Android系统会使用左边线和上边线来定义该绘制区域。
要澄清不同边线间的差异,为了拉伸图片,左边线和上边线定义的图片的像素被允许复制。底边线和右边线定义了图片内相对区域,View对象的内容被允许放到这个区域内。
下图是用于定义按钮的一个NinePatch图片文件:
这个NinePatch图片用左边线和上边线定义了一个可拉伸的区域,用右边线和底边线定义了一个可绘图的区域。为了拉伸图片,在上面的那个图片中,灰色的点划线定指定了图片将要被重复的区域。在下面的那个图片中,粉色的矩形指明了View的内容被允许放置的区域。如果该区域不同完全填充View对象的内容,那么该图片就会被拉伸,直到内容被完全填充。
Draw 9-patch工具,使用WYSIWYG图形编辑器,提供非常方便的创建NinePatch图片的方法。如果定义的可拉伸区域在绘制构件的过程中存在像素复制的风险,它甚至会产生一个警告。
示例XML
该布局XML演示了如何把一个NinePatch图片添加到一对按钮中(NinePatch图片被保存在res/drawable/my_button_background.9.png中):
<Buttonid="@+id/tiny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:text="Tiny"
android:textSize="8sp"
android:background="@drawable/my_button_background"/>
<Buttonid="@+id/big"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:text="Biiiiiiig
text!"
android:textSize="30sp"
android:background="@drawable/my_button_background"/>
要注意的是,宽度和高度属性都被设置成了”wrap_content”,以便按钮能够根据文本尺寸来调整大小。
以下是使用上面显示的图片和XML定义所展现的两个按钮。注意,按钮的宽度和高度是如何根据文本的尺寸来拉伸背景图片的。
相关文章推荐
- Android画布和图形绘制---Canvas and Drawables(五)
- Android画布和图形绘制---Canvas and Drawables(四)
- Android画布和图形绘制---Canvas and Drawables(三)
- Android画布和图形绘制---Canvas and Drawables
- Android画布和图形绘制---Canvas and Drawables(四)
- Android画布和图形绘制---Canvas and Drawables(二)
- Android画布和图形绘制---Canvas and Drawables(一)
- Android画布和图形绘制---Canvas and Drawables(一)
- Android画布和图形绘制---Canvas and Drawables(一)
- Android画布和图形绘制---Canvas and Drawables(三)
- Android画布和图形绘制---Canvas and Drawables(一)
- Android画布和图形绘制---Canvas and Drawables(二)
- Android Canvas and Drawables (android 图形绘制 canvas 和 Drawables)
- Android画布和图形绘制---Canvas and Drawables
- android学习4-25 使用canvas绘制几何图形(在View内)
- 第三部分:Android 应用程序接口指南---第四节:动画和图形---第三章 Canvas和 Drawables
- 千呼万唤 HTML 5 (8) - 画布(canvas)之绘制图形
- Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)
- Android软件开发:在Canvas中利用Path绘制基本图形
- Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)