安卓自定义view进阶(1)

来源:互联网 发布:java运行环境官网下载 编辑:程序博客网 时间:2024/05/30 23:02

效果图
这里写图片描述

实现步骤

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();

此篇仅作为记录学习用,故只有效果图和代码