入门级别自定义View画一个简单折线图

效果图
直接上代码



import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

/*Time:2019/4/27
 *Author:zhaozhiwei
 *Description:
 */public class ZheView extends View {

    private Paint paint;
    private int color;
    private Paint paint1,paint2,paint3,paint4;

    public ZheView(Context context) {
        super(context);
    }

    public ZheView(Context context,  AttributeSet attrs) {
        super(context, attrs);
        //自定义属性
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ZheView);
        color = typedArray.getColor(R.styleable.ZheView_pain_color, Color.WHITE);
        typedArray.recycle();

        paint = new Paint();
        paint.setStrokeWidth(5);
        paint.setColor(color);
        paint.setAntiAlias(true);//抗锯齿
        //红
        paint1 = new Paint();
        paint1.setStrokeWidth(5);
        paint1.setColor(Color.RED);
        paint1.setTextSize(20);
//黄
        paint2 = new Paint();
        paint2.setStrokeWidth(5);
        paint2.setColor(Color.YELLOW);
        paint2.setTextSize(20);
//蓝
        paint3 = new Paint();
        paint3.setStrokeWidth(5);
        paint3.setColor(Color.GREEN);
        paint3.setTextSize(20);
        //下标值
        paint4 = new Paint();
        paint4.setStrokeWidth(5);
        paint4.setColor(Color.LTGRAY);
        paint4.setTextSize(20);

    }
//绘制方法
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //X轴
        canvas.drawLine(30,800,700,800,paint);
        //X坐标
        canvas.drawLine(130,790,130,800,paint);
        canvas.drawLine(200,790,200,800,paint);
        canvas.drawLine(300,790,300,800,paint);
        canvas.drawLine(300,790,300,800,paint);
        canvas.drawLine(400,790,400,800,paint);
        canvas.drawLine(500,790,500,800,paint);
        canvas.drawLine(600,790,600,800,paint);
        canvas.drawLine(690,790,690,800,paint);
        canvas.drawText("0",30,820,paint4);
        canvas.drawText("5:00",111,820,paint4);
        canvas.drawText("10:00",200,820,paint4);
        canvas.drawText("15:00",300,820,paint4);
        canvas.drawText("20:00",400,820,paint4);
        canvas.drawText("24:00",500,820,paint4);
        canvas.drawText("XX:00",600,820,paint4);

        //Y
        canvas.drawLine(30,50,30,266,paint1);
        canvas.drawLine(30,266,30,532,paint2);
        canvas.drawLine(30,532,30,800,paint3);
        //Y轴坐标
        canvas.drawLine(30,266,44,266,paint1);
        canvas.drawLine(30,532,44,532,paint2);
        //Y轴参数差的
        canvas.drawText("600",1,60,paint1);
        canvas.drawText("差",1,160,paint1);
        canvas.drawText("400",1,266,paint1);
        //Y轴参数良好的
        canvas.drawText("良",1,400,paint2);
        canvas.drawText("200",1,540,paint2);
        //Y轴参数好的
        canvas.drawText("好",1,650,paint3);


        //折线f
        canvas.drawLine(30,800,100,600,paint);
        canvas.drawCircle(30,800,10,paint2);//画点

        canvas.drawLine(100,600,200,400,paint);
        canvas.drawCircle(100,600,10,paint1);//画点

        canvas.drawLine(200,400,300,700,paint);
        canvas.drawCircle(200,400,10,paint1);//画点

        canvas.drawLine(300,700,350,600,paint);
        canvas.drawCircle(300,700,10,paint1);//画点

        canvas.drawLine(350,600,400,400,paint);
        canvas.drawCircle(350,600,10,paint1);//画点

        canvas.drawLine(400,400,500,250,paint);
        canvas.drawCircle(400,400,10,paint1);//画点

        canvas.drawLine(500,250,600,500,paint);
        canvas.drawCircle(500,250,10,paint1);//画点

        canvas.drawLine(600,500,700,300,paint);
        canvas.drawCircle(600,500,10,paint1);//画点
        //最后一个点
        canvas.drawCircle(700,300,10,paint1);//画点


    }

    public ZheView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}


猜你喜欢

转载自blog.csdn.net/Android_Mr_Zhao/article/details/89564247