android 折线图
时间: 2023-07-22 10:29:49 浏览: 41
要在 Android 中绘制折线图,可以使用 Android 提供的图形库 Canvas 和 Paint,或者使用第三方库 MPAndroidChart。
以下是使用 Canvas 和 Paint 绘制折线图的基本步骤:
1. 在布局文件中添加一个自定义 View。
2. 在自定义 View 中重写 onDraw() 方法,获取 Canvas 对象和 Paint 对象。
3. 使用 Paint 对象设置折线的颜色、宽度等属性。
4. 使用 Canvas 对象绘制坐标轴和网格线。
5. 使用 Canvas 对象绘制折线,可以使用 drawLine() 方法或者 Path 对象。
6. 如果需要添加标记、文字等,可以再次使用 Paint 对象进行设置和绘制。
以下是一个简单的示例代码:
```
public class LineChartView extends View {
private Paint mAxisPaint;
private Paint mGridPaint;
private Paint mDataPaint;
private float[] mData = {10, 20, 30, 25, 40, 35, 50};
public LineChartView(Context context) {
super(context);
init();
}
public LineChartView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public LineChartView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mAxisPaint = new Paint();
mAxisPaint.setColor(Color.BLACK);
mAxisPaint.setStrokeWidth(2);
mGridPaint = new Paint();
mGridPaint.setColor(Color.GRAY);
mGridPaint.setStrokeWidth(1);
mGridPaint.setPathEffect(new DashPathEffect(new float[]{5, 5}, 0));
mDataPaint = new Paint();
mDataPaint.setColor(Color.BLUE);
mDataPaint.setStrokeWidth(4);
mDataPaint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
// 绘制坐标轴
canvas.drawLine(100, height - 100, width - 100, height - 100, mAxisPaint);
canvas.drawLine(100, height - 100, 100, 100, mAxisPaint);
// 绘制网格线
int gridWidth = (width - 200) / (mData.length - 1);
for (int i = 0; i < mData.length - 1; i++) {
canvas.drawLine(100 + i * gridWidth, height - 100, 100 + i * gridWidth, 100, mGridPaint);
}
int gridHeight = (height - 200) / 10;
for (int i = 1; i <= 10; i++) {
canvas.drawLine(100, height - 100 - i * gridHeight, width - 100, height - 100 - i * gridHeight, mGridPaint);
}
// 绘制折线
Path path = new Path();
path.moveTo(100, height - 100 - mData[0] * gridHeight / 10);
for (int i = 1; i < mData.length; i++) {
path.lineTo(100 + i * gridWidth, height - 100 - mData[i] * gridHeight / 10);
}
canvas.drawPath(path, mDataPaint);
}
}
```
在布局文件中添加该自定义 View,即可看到绘制的折线图。