Android CANVAS绘制折线图
时间: 2023-08-05 10:37:41 浏览: 146
要在 Android 上绘制折线图,可以使用 Canvas 和 Paint 类来实现。
首先,你需要创建一个自定义 View 组件,并在其 onDraw() 方法中实现绘图逻辑。在绘制折线图时,你需要先计算出每个数据点的坐标,然后使用 Path 类绘制连接这些点的线条。
下面是一个简单的示例代码,实现了一个基本的折线图绘制:
```java
public class LineChartView extends View {
private List<Float> mData = new ArrayList<>();
public LineChartView(Context context) {
super(context);
}
public LineChartView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineChartView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setData(List<Float> data) {
mData = data;
invalidate(); // 通知 View 进行重新绘制
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 设置画笔颜色和样式
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
// 计算每个数据点的坐标
int width = getWidth();
int height = getHeight();
float xInterval = width / (mData.size() - 1);
float yInterval = height / Collections.max(mData);
Path path = new Path();
for (int i = 0; i < mData.size(); i++) {
float x = i * xInterval;
float y = height - mData.get(i) * yInterval;
if (i == 0) {
path.moveTo(x, y);
} else {
path.lineTo(x, y);
}
}
// 绘制折线图
canvas.drawPath(path, paint);
}
}
```
在 Activity 中,你可以通过调用 setData() 方法来设置折线图的数据,并将自定义 View 组件添加到布局中:
```java
List<Float> data = new ArrayList<>();
data.add(10f);
data.add(20f);
data.add(50f);
data.add(30f);
data.add(40f);
LineChartView lineChartView = new LineChartView(this);
lineChartView.setData(data);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
linearLayout.addView(lineChartView, layoutParams);
```
上述代码会在 LinearLayout 中添加一个折线图,其中数据为 [10, 20, 50, 30, 40]。你可以根据自己的需求来修改上述代码,实现更加复杂的折线图绘制。
阅读全文