Android 自定义View画圆

来源:互联网 发布:python timer缺点 编辑:程序博客网 时间:2024/05/20 20:18

引入布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.bwie.test.xuejian1508a20170928.MainActivity">    <com.bwie.test.xuejian1508a20170928.ViView        android:layout_width="match_parent"        android:layout_height="match_parent"         /></RelativeLayout>
自定义View的java类,继承View

public class ViView extends View{    Paint paint;    Context context;    //构造方法    public ViView(Context context) {        super(context);    }    public ViView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public ViView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    public ViView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {        super(context, attrs, defStyleAttr, defStyleRes);        this.context=context;    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);    }    @Override    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {        super.onLayout(changed, left, top, right, bottom);    }    /*绘图*/    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        //得到屏幕宽高        int width = getWidth();        int radius = width - 450/2;        int height = getHeight();//        创建画笔        Paint paint1 = new Paint();        Paint paint2 = new Paint();        Paint paint3= new Paint();//        消除锯齿        paint1.setAntiAlias(true);        paint2.setAntiAlias(true);        paint3.setAntiAlias(true);        //画笔颜色        paint1.setColor(Color.RED);        paint2.setColor(Color.WHITE);        paint3.setColor(Color.BLUE);//        画圆。确定位置//        canvas.drawRect(100,100,width/2,height/2,paint1);//        canvas.drawCircle(100,100,100,paint1);//        canvas.drawCircle(250,250,200,paint2);//        canvas.drawCircle(500,500,300,paint3);        //设置圆环形状和大小        RectF oval = new RectF(width-radius,width-radius,width+radius,width+radius);        paint1.setStrokeWidth(450);        canvas.drawArc(oval,-90,90,false,paint1);        canvas.drawCircle(width/2,height/2,450,paint1);        canvas.drawCircle(width/2,height/2,300,paint2);        canvas.drawCircle(width/2,height/2,200,paint3);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        return super.onTouchEvent(event);    }}
效果图:






原创粉丝点击