gpt4 book ai didi

android - MPAndroidChart:让一张图反射(reflect)姐妹图上的缩放/滑动

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:05 25 4
gpt4 key购买 nike

我有两个折线图,显示同一时间段内的互补数据。有没有办法将一个图形接收到的任何触摸事件发送到另一个图形?我基本上想要它,以便图表始终显示相同的查看矩形(至少在水平方向上)。因此,如果用户在顶部图表上向左滑动“n”个单位,底部图表将自动向左滚动“n”个单位以进行匹配。

最佳答案

可以使用当前的 MPAndroidChart 版本进行缩放,以滚动查看或等待我的扩展被合并: https://github.com/PhilJay/MPAndroidChart/pull/545

您需要在主图表上设置一个 OnChartGestureListener,将转换矩阵值复制到从图表:

public class CoupleChartGestureListener implements OnChartGestureListener {

private Chart srcChart;
private Chart[] dstCharts;

public CoupleChartGestureListener(Chart srcChart, Chart[] dstCharts) {
this.srcChart = srcChart;
this.dstCharts = dstCharts;
}

[...other overrides...]

@Override
public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
//Log.d(TAG, "onChartScale " + scaleX + "/" + scaleY + " X=" + me.getX() + "Y=" + me.getY());
syncCharts();
}

@Override
public void onChartTranslate(MotionEvent me, float dX, float dY) {
//Log.d(TAG, "onChartTranslate " + dX + "/" + dY + " X=" + me.getX() + "Y=" + me.getY());
syncCharts();
}

public void syncCharts() {
Matrix srcMatrix;
float[] srcVals = new float[9];
Matrix dstMatrix;
float[] dstVals = new float[9];

// get src chart translation matrix:
srcMatrix = srcChart.getViewPortHandler().getMatrixTouch();
srcMatrix.getValues(srcVals);

// apply X axis scaling and position to dst charts:
for (Chart dstChart : dstCharts) {
if (dstChart.getVisibility() == View.VISIBLE) {
dstMatrix = dstChart.getViewPortHandler().getMatrixTouch();
dstMatrix.getValues(dstVals);
dstVals[Matrix.MSCALE_X] = srcVals[Matrix.MSCALE_X];
dstVals[Matrix.MTRANS_X] = srcVals[Matrix.MTRANS_X];
dstMatrix.setValues(dstVals);
dstChart.getViewPortHandler().refresh(dstMatrix, dstChart, true);
}
}
}

}

然后像这样设置你的主/从连接:

//
// Couple chart viewports:
//

tripChart.setOnChartGestureListener(new CoupleChartGestureListener(
tripChart, new Chart[] { powerChart, energyChart }));
powerChart.setOnChartGestureListener(new CoupleChartGestureListener(
powerChart, new Chart[] { tripChart, energyChart }));
energyChart.setOnChartGestureListener(new CoupleChartGestureListener(
energyChart, new Chart[] { tripChart, powerChart }));

关于android - MPAndroidChart:让一张图反射(reflect)姐妹图上的缩放/滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28521004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com