27
2017
09

【Android】自定义View

一、概述
我们在工作中经常会因为产品经理的需求自定义一个界面,这个界面可能是对系统控件的扩展或者完全是一个新的东西,这时候我们就需要根据需求来自定义一个。下面我将对TextView进行简单的扩展,我需要自定义一个自带边框的View.

这里写图片描述

二、知识说明

1. 如果我们需要重新绘制View的显示内容,那么我们需要重写onDraw()方法。
2. 如果我们需要重新测量View的显示大小,那么我们需要重写onMeasure()方法。
3. 如果需要设置自定义attrs属性,一般会把自定义的属性写在declare-styleable中。

另外自定义的View都需要实现三个基本的构造函数,每个构造函数分别调用基类的构造函数。

这里写图片描述

三、实现示例

我们简单分析一下需求,因为我需要在TextView原生控件的基础上面添加一个边框,那么我需要创建一个新的类继承自TextView,新类我自定义为CustomView。我需要重新绘制TextView的视图内容,所以我需要重写onDraw()方法。

这里写图片描述

需要注意的是super.onDraw(canvas)方法来实现原生控件的功能,我们必须在调用super.onDraw()方法之前实现自己的视图绘制。我这里创建了两个画笔,一个画笔设置为蓝色,绘制整个矩形控件。第二个画笔设置为黄色,缩进10dp绘制一个内部的矩形,这样子就实现了一个蓝色的边框。

四、布局代码

这里写图片描述

五、运行效果

这里写图片描述

上一篇:算法 下一篇:解决Eclipse新版本出现An error has occurred,See error log for more details的错误