NinePatchDrawable图像是可伸展的位图。当你将它作为背景时,Android会自动适应View的大小。NinePatch的一个案例是背景使用标准Android按钮。按钮必须能根据不同的长度自动伸展。NinePatch drawable是标准的PNG格式,在最外面一圈额外增加1px的边框。
它必须以.9.png为扩展名,并且保存在res/drawable/目录下。
这个1px的边框就是用来定义图片中可扩展的和静态不变的区域。在边框的左上角画一个1像素的黑线来表面伸缩区域。你想要多少伸缩区域都可以:他们的绝对尺寸保持相同,所以最大的区域永远是最大的。
你也可以定义一个可选的可移动部分在图片上,通过下面和右边的线。如果一个View对象设置NinePatch作为背景,然后改变View上的文字, 它会自己伸展,所有的文字将会适应你通过右边和下面的线定义的区域。如果不包括填充线, Android使用左边和上面的线定义可绘区域。
为了阐明这两条线的不同,左和上的线定义图片像素允许被复制以便拉伸图片。下方和右边的线定义相对区域在图片的内容区域。
下面是简单的按钮使用例子:
NinePatch通过左上线来定义伸缩区域,并且通过下右线来定义可绘区域。第一幅图,灰色虚线确定的图片区域将会被拉伸。第二幅图的粉色区域 确定一个View里的内容显示区域。如果内容不适合这个区域,图片将会被拉伸。
Draw 9-patch工具提供了简便的方法来创建我们的NinePatch图片,使用WYSIWYG图形工具。
Example XML注意宽和高设置为wrap_content使按钮内容自动调整。
相关推荐
android Canvas 绘图系列(1)
android Canvas 绘图系列(一) 首先解释一下:Canvas、Paint 、Rect. Canvas绘图有三个要点(你完全可以开一下脑洞): 1.Canvas画布,就像是我们画画用的纸。图形绘制在Canvas画布之上。 2.Paint画笔,就像现实中的画笔一样,可以设置颜色,字体,透明度等。 3.Rect绘画路径,用于绘制不同形状如:矩形、椭圆形等。 这里主要讲述的是View中
android Canvas 绘图系列(2)
android Canvas 绘图系列(二) 这里主要讲Paint 画笔。还是搬运和翻译官方文档吧。 1.setAlpha(int a) 设置透明度,参数范围是0-255。 如需要设置改属性:建议改成(0-1),然后乘以255. 2.setColor(int color) 设置画笔颜色其中包含透明度,参数为0xff777777类型,0x是16进制标识,后两个f
javascript 获取元素样式必杀技
Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div style="color:#369">hello</div>),可以直接使用element.style.color来直接获取css属性的值; 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏
Android游戏之文件读写类跟绘图类设计
Android游戏之文件读写类和绘图类设计 Android游戏之文件读写类和绘图类设计 1、基础知识: A. FileInputStream FileOutputStream
canvas通过matrix绘图有关问题
canvas通过matrix绘图问题 1、自定义一个mViewextendedImageView,重写他的ondraw函数 把一个原始drawable资源decode成bitmap,缩小为0.667 然后直接用canvas.drawbitmap绘制出来,效果非常差,画笔设置了paint.setA
Android札记二十八.Android绘图深度解析
Android笔记二十八.Android绘图深度解析 Android绘图深度解析
Delphi 的绘图功能[5] - 获取 Canvas 对象
在窗体上添加 Panel1、PaintBox1 和 Button1, 代码如下: procedure TForm1.Button1Click(Sender: TObject); var cvs: TCanvas; begin {PaintBox1 就像窗体一样, 也有 Canvas 属性} PaintBox1.Canvas.Brush.Color := clRed; PaintBox1.Canv
Android - Canvas java.lang.UnsupportedOperationException
Android -- Canvas java.lang.UnsupportedOperationException 干货 java.lang.UnsupportedOperationException at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:287) at br.com.iba.view.PageCurlView.draw
Android自定义控件1_Canvas分析
Android自定义控件一_Canvas分析 自定义控件分为两种一种是自定义ViewGroup控件,一种是自定义View控件;跟踪View的步伐其实能跟到Java实现的最下面我们能发现的也就只有Canvas了,再下去就是C++或C实现了;所以本文主要是站在设计的的角度讲解一下Canvas跟View的关系,再简单分析一下Canvas用法; View作为Android中一切显示视图的父类,我们
Android Graphics课题(1)- Canvas基础
Android Graphics专题(1)--- Canvas基础 作为Android Graphics专题的开篇,毫无疑问,我们将讨论Android UI技术的核心概念——Canvas。 Canvas是Android UI框架的基础,在Android的控件体系中,所有容器类、控件类在实现上都依赖于Canvas,界面的绘制实质上都是Canvas绘制的。本文将讨论Canvs的由来,并通过实例展示C
Android绘图及简略动画
Android绘图及简单动画 在java中,我们要实现绘图,一般通过继承IFrame或者是在JFrame上窗体来画图,或在窗体上加入面板在上面进行画图。而android上也有几种画图方法。 1)在界面上加入一个图片组件,再在该图片组件上画图。 2)定义一个类继承View类来实现自定义画图组件,重写当中的构造方法
Android:使用Canvas合并Bit地图
Android:使用Canvas合并Bitmap 关键点 canvas.drawBitmap(bitmap, srcRect, dstRect, null); 将bitmap的srcRect区域绘制到canvas的dstRect区域 Demo main.xml <?xml version="1.0" encoding="utf-8"?>
Delphi 的绘图功能[15] - 再谈文字的高度与宽度: Canvas.TextExtent
procedure TForm1.Button1Click(Sender: TObject); var str: string; wh: TSize; w,h: Integer; begin {前面用过 Canvas.TextWidth、Canvas.TextHeight} str := '万'; w := Canvas.TextWidth(str); h := Canvas.TextHeight
Android Canvas实现点击输入文字