Android自定义View利器-onDraw
扫描二维码
随时随地手机看文章
Android 自身提供了许多种控件例如:TextView、Button等各种基本控件供开发者使用,但需求是在不停的变化,Android自带的控件就无法满足美工妹子,我们就需要使用到自定义View了。
使用自定义View来绘制一个圆形的View(CircleView)
创建Class 继承自View
实现三个构造方法.
可以稍微了解一下这三个构造方法的作用:
//第一个构造函数 public CircleView(Context context) { (context) } //第二个构造函数 public CircleView(Context contextAttributeSet attrs) { (contextattrs) } //第三个构造函数 public CircleView(Context contextAttributeSet attrsdefStyleAttr) { super(context, attrs, defStyleAttr); }
第一个是在类面里实例化的时候被调用的,也就是new class();
第二个是在layout XML当中被调用。
第三个是需要主动被调用,例如放在第二个构造函数
3. 重写onDraw方法
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); }
Android控制都会在onDraw处理被绘制出来。
自定义View的两个基本工具Canvas和Paint.顾名思义就是画布和画笔的意思
下面贴出Circle的代码实现:
JAVA
** * 自定义一个圆的View * date:2018/07/01 * www.vuvps.com */ public class CircleView extends View{ private Paint mPaint; public CircleView(Context context) { super(context); } public CircleView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(ContextCompat.getColor(context,R.color.colorAccent)); } public CircleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); Toast.makeText(context,"获取自定义属性",Toast.LENGTH_SHORT).show(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(550,500,200,mPaint); } }
XML
至此,看到这里关于自定义View也已经有了一个初步的了解,如果有误还请提出。