我同时拥有多达12个可见的折线图。每个人都实时显示1个模拟或数字信号。现在我想用捏合来缩放X分辨率(这已经在单线图上工作)但是现在所有的线图都应该同时缩放相同的比例因子。
我在每个线图上都使用onTouchListener进行了尝试,如果有人触摸并缩放,则说明它是另一个的缩放。
LineChartObject ob = mLineChartObj.get(lineChartObj);
if (ob.lineChart == null)
// new LineChart
ob.lineChart = new LineChart(mContext);
ob.lineChart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float[] val = {ob.lineChart.getScaleX(), ob.lineChart.getScaleY(), ob.lineChart.getX(), ob.lineChart.getY()};
for(int i=0; i<mLineChartObj.size(); i++){
if(i == lineChartObj)
continue;
mLineChartObj.get(i).lineChart.setScaleX(val[0]); //zoom(val[0], val[1], val[2], val[3]);
}
return false;
}
});
我取实际触摸的折线图的scaleX,并将其交给另一个,但这不起作用。
也许你知道如何解决这个问题。
编辑1:############################################ ##########
我试过这段代码......我观察过printLines并注意到scaleX越大,我用触摸手势放大的越多。正如预期的那样,scaleX越小,我用手势缩小的越多。在Y方向上,scaleY也会变大或变小。
但是!!我称之为zoom(val [0],val [1],....)的折线图只是放大,虽然scaleX / scaleY变小!!
ob.lineChart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float[] val = {ob.lineChart.getScaleX(), ob.lineChart.getScaleY(), ob.lineChart.getWidth() / 2, ob.lineChart.getHeight() / 2};
for (int i = 0; i < mLineChartObj.size(); i++) {
if (i == lineChartObj)
continue;
mLineChartObj.get(i).zoomCounter++;
// zoomCounter to get a slower zoom
if (mLineChartObj.get(i).zoomCounter % 10 == 0) {
System.out.println("§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§");
System.out.println("scaleX: " + val[0]);
System.out.println("scaleY: " + val[1]);
System.out.println("Width/2: " + val[2]);
System.out.println("Height/2: " + val[3]);
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
mLineChartObj.get(i).lineChart.zoom(val[0], val[1], mLineChartObj.get(i).lineChart.getWidth() / 2, mLineChartObj.get(i).lineChart.getHeight() / 2); //zoom(val[0], val[1], val[2], val[3]);
System.out.println(val[0] + " " + val[1] + " " + val[2] + " " + val[3]);
System.out.println(val[0] + " " + val[1] + " " + mLineChartObj.get(i).lineChart.getWidth() / 2 + " " + mLineChartObj.get(i).lineChart.getHeight() / 2);
}
}
return false;
}
});
答案 0 :(得分:0)
我建议你阅读tutorial on interaction with the charts。该库提供了一个侦听器概念(OnChartGestureListener
),允许对图表上执行的平移或缩放等手势做出反应。
所以你可以做的是设置一个监听器到缩放的图表,然后在监听器的回调方法中也缩放其他图表。