2014-03-27 22 views
0

我正在使用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

我解決了這個問題。我不知道爲什麼,但如果你使用「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; 

} 

及再啓用/代碼禁用鍋:

public void setFreeStyle(boolean isFree){ 
    if (isFree) { 
     mRenderer.setPanEnabled(true, true); 
     graphView.repaint(); 
    }else { 
     mRenderer.setPanEnabled(false,false); 
     graphView.repaint(); 
    } 
} 
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 ###"); 

      } 
     }); 
+0

當我設置onClickListener這樣的,它適用於自來水。但是,當發生長時間點擊時,應用程序崩潰。我想瀏覽圖表。當我重寫onClickListener時,自然瀏覽被禁用。 – MilesDyson

+1

查看答案中的變化,我添加了一個新行,並且我不明白「瀏覽圖表」的含義。 – keshav

+0

對不起,我的英文。它有點生鏽。我想要的是重新啓用平移。感謝您發送的最後一個代碼,應用程序不會再因長時間點擊而崩潰。但泛仍然不起作用。 – MilesDyson