AndroidPlot:在点上检测触摸事件

时间:2014-09-11 08:09:02

标签: java android androidplot

我正在使用AndroidPlot编写应用程序,其中用户需要能够触摸散点图上的点并显示有关该特定点的信息。换句话说,应用程序需要识别与所触摸位置的最近点,或者以其他方式识别已触摸点,并且能够返回该点的特定标识。此散点图中的所有点将始终为一个系列,因此识别系列不是问题,但我不知道如何实现查找或识别触摸点。

我可以达到:

plot.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        PointF click = new PointF(motionEvent.getX(), motionEvent.getY());
        if(plot.getGraphWidget().containsPoint(click)) {
            AlertDialog.Builder builder = new AlertDialog.Builder(GraphView.this);
            builder.setTitle("Point: ");
            builder.setMessage("Description: ");
            AlertDialog dialog = builder.create();
            dialog.show();
        }
        return false;
    }
    });
}

只要触摸图形,就会创建AlertDialog。

1 个答案:

答案 0 :(得分:2)

DemoApp's BarPlotExampleActivity在其onPlotClicked(...)方法中实现了此功能。它当然可以改进,但应该给你一个很好的起点。

基本步骤是:

  • 过滤图表区域内的点击次数。 (你已经有了这件作品)
  • 使用XYPlot.getXVal(screenX)&amp ;;将屏幕坐标转换为域/范围值。 XYPlot.getYVal(screenY)。
  • 在模型中找到上述域/范围值的最近点。