很多时候,Android自身提供给我们的视图可能不能满足我们的需求,这个时候我们就需要 自定义视图 。
虽然自定义视图很多,但总体归为两个类别:
- 简单视图 。简单视图内部当然也可以很复杂,之所以称之为简单视图是因为,简单视图中不包括子视图。简单视图几乎总是用来处理定制绘制。
- 聚合视图 。聚合视图一般包括很多个子视图,在聚合视图中一般不处理绘制事件,而是对子视图进行管理,绘制的任务一般都是有子视图来完成。
一般来说,自定义视图一般可以分为两步来完成。
- 选择合适的父类。 一般来说,如果我们想在某个控件的基础上进行延伸,一般选择该控件为父类进行自定义视图。如果我们向更加自由一下,那我们一般选择
View
作为我们的父类,继承View
相当于我们在一张空白的画纸上作画,所以更加自由,所以这种方法用的最多。 - 覆盖那些我们需要使用到的方法,在其中完成绘图操作。
接下来就开始我们的工作。
先新建一个 继承自 View
的 DrawingView
的类,并覆盖 View
的构造方法和 onDraw
方法。
package com.tobetheonlyone.startandroid;
import android.content.Context;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by ToBeTheOnlyOne on 2018/2/10.
*/
public class DrawingView extends View {
public DrawingView1(Context context, AttributeSet attrs){
super(context,attrs);
}
@Override
protected void onDraw(Canvas canvas){
}
}
先在 onDraw
方法中在绘制视图颜色为0xffdfdada
,并在视图中间绘制一个半经为 100
的圆。
@Override
protected void onDraw(Canvas canvas){
//绘制背景
canvas.drawColor(0xffdfdada);
//画笔的初始化
Paint drawPaint = new Paint();
drawPaint.setColor(0xffff0000);