主要的类
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
/**
* Created by Administrator on 2017/1/18.
*/
public class LineChart extends View {
private String[] XLabel={"1-14","1-15","1-16","1-17","1-18","1-19"};
private String[] YLabel={"","10","20","30","40","50"};
private int[] datas={5,20,15,10,30,23};
private int XPoint=50;
private int YPoint=700;
private int XLength=600;
private int YLength=600;
private int XScale=100;
private int YScale=100;
public LineChart(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
Paint circlePaint = new Paint();
paint.setColor(Color.RED);
circlePaint.setColor(Color.BLUE);
paint.setAntiAlias(true);
canvas.drawLine(XPoint,YPoint,XPoint+XLength,YPoint,paint);
canvas.drawLine(XPoint,YPoint,XPoint,YPoint-YLength,paint);
canvas.drawLine(XPoint+XLength,YPoint,XPoint+XLength-6,YPoint-6,paint);
canvas.drawLine(XPoint+XLength,YPoint,XPoint+XLength-6,YPoint+6,paint);
canvas.drawLine(XPoint,YPoint-YLength,XPoint-6,YPoint-YLength+6,paint);
canvas.drawLine(XPoint,YPoint-YLength,XPoint+6,YPoint-YLength+6,paint);
for (int i=0;i*YScale<YLength;i++){
canvas.drawLine(XPoint,YPoint-i*YScale,XPoint+5,YPoint-i*YScale,paint);
canvas.drawText(YLabel[i],XPoint-20,YPoint-i*YScale+5,paint);
}
for (int i=0;i*XScale<XLength;i++){
canvas.drawLine(XPoint+i*XScale,YPoint,XPoint+i*XScale,YPoint-5,paint);
canvas.drawText(XLabel[i],XPoint+i*XScale-10,YPoint+20,paint);
if(i<datas.length-1)
canvas.drawLine(XPoint+i*XScale,YCoord(datas[i]),XPoint+(i+1)*XScale,YCoord(datas[i+1]),paint);
canvas.drawCircle(XPoint+i*XScale,YCoord(datas[i]),4,circlePaint);
}
}
/**
* 计算数据对应的Y坐标
* @param data
* @return
*/
private int YCoord(int data) {
Log.i("打印数据",YPoint-data*YScale/Integer.parseInt(YLabel[1])+"");
return YPoint-data*YScale/Integer.parseInt(YLabel[1]);
}
}
效果预览图