mpandroid 实现这个效果,下方代码内 垂直线的起始位置无法设置到 折线图y起始点到y最大值 ,园点无法同时在两条曲线上展示
public DashedLineMarkerView(Context context, int layoutResource, LineChart chart) {
super(context, layoutResource);
lineChart = chart;
Paint dashedLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
dashedLinePaint.setStyle(Paint.Style.STROKE);
dashedLinePaint.setColor(Color.BLACK);
dashedLinePaint.setStrokeWidth(5f);
textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(12);
circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setStyle(Paint.Style.FILL);
circlePaint.setColor(Color.WHITE);
circleMaxPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circleMaxPaint.setStyle(Paint.Style.FILL);
circleMaxPaint.setColor(Color.RED);
}
@SuppressLint("SetTextI18n")
@Override
public void refreshContent(Entry e, Highlight highlight) {
textView= findViewById(R.id.textView);
if (e instanceof CandleEntry) {
textView.setText("High: " + ((CandleEntry) e).getHigh());
} else {
textView.setText("Value: " + e.getY());
}
LineDataSet dataSet = (LineDataSet) lineChart.getLineData().getDataSetByIndex(0); // 假设这里是第一条曲线
int entryCount = dataSet.getEntryCount();
Entry lastEntry = dataSet.getEntryForIndex(entryCount - 1);
// 设置 Marker 的位置为最近加入的数据点的位置
double xPos = lineChart.getTransformer(YAxis.AxisDependency.LEFT).getPixelForValues(lastEntry.getX(), 0f).x;
double yPos = lineChart.getTransformer(YAxis.AxisDependency.LEFT).getPixelForValues(0f, lastEntry.getY()).y;
// 设置 Marker 的偏移量
setOffset(-(getWidth() / 2), -getHeight());
// 设置 Marker 的位置
// setPosition(xPos, yPos);
super.refreshContent(e, highlight);
}
@Override
public void draw(Canvas canvas, float posX, float posY) {
// canvas.drawLine(posX, 0f, posX, lineChart.getMeasuredHeight(), dashedLinePaint);
canvas.drawCircle(posX, posY, 10f, circleMaxPaint);
canvas.drawCircle(posX, posY, 5f, circlePaint);
canvas.drawText(textView.getText().toString(), posX, posY - 10, textPaint);
super.draw(canvas, posX, posY);
}