能不能贴下效果图看看,,,

解决方案 »

  1.   

    package com.dms.demo;import android.annotation.SuppressLint;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Rect;
    import android.graphics.Paint.Align;
    import android.graphics.Paint.FontMetrics;
    import android.graphics.drawable.BitmapDrawable;
    import android.view.View;public class ChartView extends View {
    public int XPoint = 60; // 原点的X坐标
    public int YPoint = 580; // 原点的Y坐标
    public int XScale = 85; // X的刻度长度
    public int YScale = 150; // Y的刻度长度
    public int XLength = 456; // X轴的长度
    public int YLength = 370; // Y轴的长度
    public String[] XLabel; // X的刻度
    public String[] YLabel; // Y的刻度
    public String[] Data; // 数据
    public String Title; // 显示的标题
    private Bitmap yellowDot;
    private Bitmap blueDot;
    private Rect yellowDotRect;
    private Rect blueDotRect;
    private Paint mTextPaint;
    private Paint mPointPaint;
    private Paint mbackLinePaint; public ChartView(Context context) {
    // 行了,改回自定义的了
    super(context);
    } public void SetInfo(String[] XLabels, String[] YLabels, String[] AllData,
    String strTitle) {
    XLabel = XLabels;
    YLabel = YLabels;
    Data = AllData;
    Title = strTitle;
    } @SuppressLint({ "DrawAllocation", "ResourceAsColor" })
    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);// 重写onDraw方法 canvas.drawColor(R.color.blue1);// 设置背景颜色
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setAntiAlias(true);// 去锯齿
    paint.setColor(Color.rgb(245, 131, 69));// 颜色
    paint.setStrokeWidth(8);
    Paint paint1 = new Paint();
    paint1.setStyle(Paint.Style.STROKE);
    paint1.setAntiAlias(true);// 去锯齿
    paint1.setColor(Color.DKGRAY); mTextPaint = new Paint();
    mTextPaint.setAntiAlias(true);
    mTextPaint.setColor(Color.WHITE);
    mTextPaint.setTextSize(25F);
    mTextPaint.setTextAlign(Align.CENTER); FontMetrics fontMetrics = mTextPaint.getFontMetrics();
    // 计算文字高度
    float fontHeight = fontMetrics.bottom - fontMetrics.top; mPointPaint = new Paint();
    mPointPaint.setStyle(Paint.Style.STROKE);
    mPointPaint.setAntiAlias(true);
    mPointPaint.setColor(Color.BLUE);
    mPointPaint.setStrokeWidth(8);


    mbackLinePaint = new Paint();
    mbackLinePaint.setColor(Color.rgb(45, 119, 206));


    this.yellowDot = ((BitmapDrawable) getContext().getResources()
    .getDrawable(R.drawable.yellow_dot)).getBitmap();
    this.blueDot = ((BitmapDrawable) getContext().getResources()
    .getDrawable(R.drawable.blue_dot)).getBitmap();
    this.yellowDotRect = new Rect(0, 0, this.yellowDot.getWidth(),
    this.yellowDot.getWidth());
    this.blueDotRect = new Rect(0, 0, this.blueDot.getWidth(),
    this.blueDot.getWidth());
    // 设置Y轴
    float n = 12;
    Paint mPaint = new Paint();
    mPaint.setColor(R.color.bottom_end);
    // 画背景图片
    canvas.drawLine(XPoint, YPoint - YLength, XPoint, YPoint, mPointPaint); // 轴线
    for (int i = 0; i * YScale < YLength; i++) {
    // 刻度
    canvas.drawLine(XPoint, YPoint - i * YScale, XPoint + XLength, YPoint - i
    * YScale, mbackLinePaint);
    try {
    canvas.drawText(YLabel[i], XPoint - 32,
    YPoint - i * YScale + 5, mTextPaint); // 文字
    } catch (Exception e) {
    }
    }
    /*
     * canvas.drawLine(XPoint, YPoint - YLength, XPoint - 3, YPoint -
     * YLength + 6, paint); // 箭头
     *//*
     * canvas.drawLine(XPoint, YPoint - YLength, XPoint + 3, YPoint -
     * YLength + 6, mPointPaint);
     */
    // 设置X轴
    canvas.drawLine(XPoint, YPoint, XPoint + XLength, YPoint, mPointPaint); // 轴线
    for (int i = 0; i * XScale < XLength; i++) {
    canvas.drawLine(XPoint + i * XScale, YPoint, XPoint + i * XScale,
    YPoint - 5-YLength, mbackLinePaint); // 刻度
    try {
    canvas.drawText(XLabel[i], XPoint + i * XScale - 10,
    YPoint + 60, mTextPaint); // 文字
    // 数据值
    float w = XPoint + i * XScale - yellowDot.getWidth() / 2;
    float h = YCoord(Data[i]) - yellowDot.getHeight() / 2;
    if (i > 0 && YCoord(Data[i - 1]) != -999
    && YCoord(Data[i]) != -999) // 保证有效数据
    canvas.drawLine(XPoint + (i - 1) * XScale,
    YCoord(Data[i - 1]), XPoint + i * XScale,
    YCoord(Data[i]), paint);
    /*
     * canvas.drawCircle(XPoint + i * XScale, YCoord(Data[i]), 2,
     * paint);
     */

    canvas.drawBitmap(yellowDot, w, h, paint);
    canvas.drawText(Data[i], w , h
    - fontHeight, mTextPaint);
    } catch (Exception e) {
    }
    }
    /*
     * canvas.drawLine(XPoint + XLength, YPoint, XPoint + XLength - 6,
     * YPoint - 3, paint); // 箭头
     */canvas.drawLine(XPoint + XLength, YPoint, XPoint + XLength - 6,
    YPoint + 3, mPointPaint); paint.setTextSize(16);
    canvas.drawText(Title, 150, 50, mTextPaint); } private int YCoord(String y0) // 计算绘制时的Y坐标,无数据时返回-999
    {
    int y;
    try {
    y = Integer.parseInt(y0);
    } catch (Exception e) {
    return -999; // 出错则返回-999
    }
    try {
    return YPoint - y * YScale / Integer.parseInt(YLabel[1]);
    } catch (Exception e) {
    }
    return y;
    }
    }