在运行时设置平移启用

时间:2014-03-27 15:17:57

标签: android touch achartengine

我正在使用achartengine。首次创建时,我禁用了触摸事件。但我想在运行时重新启用它们。这是我的代码:

private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
private GraphicalView graphView;
public void setFreeStyle(boolean isFree) {
        if (isFree) {
            mRenderer.setClickEnabled(true);
            mRenderer.setInScroll(true);
            mRenderer.setPanEnabled(true);
            graphView.repaint();
        } else {
            mRenderer.setClickEnabled(false);
            mRenderer.setInScroll(false);
            mRenderer.setPanEnabled(false);
            graphView.repaint();
        }
}

我认为我应该以某种方式更新我的GraphicalView。但我不知道怎么做。我使用了“graphView.repaint();”,但它似乎不起作用。

---- ----编辑

我认为通过这种方式重新激活触摸事件。但潘不是。我想重新启动平移。

2 个答案:

答案 0 :(得分:2)

我解决了这个问题。我不知道为什么,但如果你使用" mRenderer.setPanEnabled(FALSE,FALSE); "在初始化中,您永远不能重新激活平移。所以我试着以不同的方式进行初始化:

    XYMultipleSeriesRenderer mRenderer;
    GraphicalView graphView;

public GraphicalView getView(Context context) {

... some initialization code ...

    mRenderer.setPanEnabled(true, false); //first you should left x-axis pan enabled

    graphView = ChartFactory.getTimeChartView(context, dataset, mRenderer,
                "HH:mm:ss");

    mRenderer.setPanEnabled(false,false); //After you created GraphicalView you can disable pan                safely

    return graphView;

}

重新启用/禁用pan的代码:

public void setFreeStyle(boolean isFree){
    if (isFree) {
        mRenderer.setPanEnabled(true, true);
        graphView.repaint();
    }else {
        mRenderer.setPanEnabled(false,false);
        graphView.repaint();
    }
}

答案 1 :(得分:1)

尝试

修改

  public void setFreeStyle(boolean isFree)
    {
        if(isFree)
        {
            view.setClickable(true);
            mRen.setClickEnabled(true);
            mRen.setPanEnabled(true, true);
            mRen.setZoomEnabled(true, true);
            view.repaint();
        }
        else
        {
            view.setClickable(false);
            mRen.setClickEnabled(false);
            mRen.setPanEnabled(false, false);
            mRen.setZoomEnabled(false, false);
            view.repaint();
        }
    }

view.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0)
            {
                System.out.println("LINE GRAPH CLICKED ###");

            }
        });