效果图
实现步骤
package com.joey.first.customview.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by Administrator on 2017/7/4.
*/
public class CircleView extends View implements Runnable{
private int radiu;//园的半径
private Paint paint;
private Context context;
float x,y;//圆心坐标
public CircleView(Context context) {//动态代码添加
super(context);
this.context = context;
initPaint();
}
public CircleView(Context context, @Nullable AttributeSet attrs) {//xml布局添加
super(context, attrs);
this.context = context;
initPaint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLUE);
canvas.drawCircle(x,//圆心x坐标
y,//圆心y坐标
radiu,//圆半径
paint);//画笔
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
x = w/2;
y = h/2;
}
private void initPaint(){
paint = new Paint();
paint.setAntiAlias(true);//设置抗锯齿
paint.setColor(Color.RED);//设置画笔颜色
/**
* 设置画笔样式
* Paint.Style.STROKE 描边
* Paint.Style.FILL 填充
* Paint.Style.FILL_AND_STROKE 填充并描边
*/
paint.setStyle(Paint.Style.FILL_AND_STROKE);
/**
* 设置画笔粗细 单位:PX
* 注意:当setStrokeWidth(0)的时候描边宽度并不为0而是只占一个像素
*/
paint.setStrokeWidth(10);
}
@Override
public void run() {
while (true){
try {
if (radiu<=150){
radiu += 10;
// 刷新View
postInvalidate();
}else {
radiu = 0;
}
Thread.sleep(80);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
xml布局文件
<com.joey.first.customview.view.CircleView
android:id="@+id/view"
android:layout_width="300dp"
android:layout_height="300dp" />
activity
view = ((CircleView) findViewById(R.id.view));
new Thread(view).start();
此篇仅作为记录学习用,故只有效果图和代码