2016-07-25 25 views
1

こんにちは私はhttps://github.com/limccn/Android-Chartsライブラリを使って、アンドロイドアプリでチャートの在庫データを表示しています。私はこのライブラリのキャンドルスティックチャートを使用しています。 1つのことを除いてすべてうまくいきます。ディスプレイデータのためにマウスの上にマウスを置いてチャートの中にスティックを置くとツールチップを表示できません。私はチャートを初期化するために以下のコードを使用しています。誰かがツールヒントを表示する方法を知っているか、ユーザーがチャートの棒にマウスを重ねたときにどのようにビューを添付できるかを知っています。Android-Charts - CandleStick Chart

private void initChart() { 
     for (int i = 0; i < chartData.size(); i++) { 
      //OHLCEntity(double open, double high, double low, double close, int date) 
      ChartData chartdata = chartData.get(i); 
      String dateString = chartdata.getT_Time().substring(0, chartdata.getT_Time().lastIndexOf("T")); 
      String timeString = chartdata.getT_Time().substring(chartdata.getT_Time().lastIndexOf("T") + 1, chartdata.getT_Time().toString().length()); 
      Pattern p = Pattern.compile(":"); 
      String[] times = p.split(timeString); 
      String dateValue = ""; 
      if (times.length >= 3) { 
       dateValue = dateString.replaceAll("-", "").trim().toString() + times[0].trim().toString() + "" + times[1].toString().trim(); 
      } else { 
       dateValue = dateString.replaceAll("-", "").trim().toString(); 
      } 
      ohlc.add(new OHLCEntity(chartdata.getT_Open(), chartdata.getHigh(), chartdata.getLow(), chartdata.getT_Close(), Integer.valueOf(dateValue))); 
     } 
     ChartData maxds = Collections.max(chartData, new ChartComparator()); 
     candlestickchart.setAxisXColor(Color.LTGRAY); 
     candlestickchart.setAxisYColor(Color.LTGRAY); 
     candlestickchart.setLatitudeColor(Color.GRAY); 
     candlestickchart.setLongitudeColor(Color.GRAY); 
     candlestickchart.setBorderColor(Color.LTGRAY); 
     candlestickchart.setLongitudeFontColor(Color.WHITE); 
     candlestickchart.setLatitudeFontColor(Color.WHITE); 
     // 最大显示足数 
     candlestickchart.setMaxSticksNum(chartData.size()); 
     // 最大纬线数 
//  candlestickchart.setLatitudeNum(5); 
//  // 最大经线数 
//  candlestickchart.setLongitudeNum(3); 
     // 最大价格 
     candlestickchart.setMaxValue(maxds.getVolume()); 
     // 最小价格 
     int minIndex = chartData.indexOf(Collections.min(chartData, new ChartComparator())); 
     candlestickchart.setMinValue(chartData.get(minIndex).getVolume()); 

     candlestickchart.setDisplayLongitudeTitle(true); 
     candlestickchart.setDisplayLatitudeTitle(true); 
     candlestickchart.setDisplayLatitude(true); 
     candlestickchart.setDisplayLongitude(true); 
     candlestickchart.setBackgroundColor(Color.BLACK); 

     candlestickchart.setDataQuadrantPaddingTop(5); 
     candlestickchart.setDataQuadrantPaddingBottom(5); 
     candlestickchart.setDataQuadrantPaddingLeft(5); 
     candlestickchart.setDataQuadrantPaddingRight(5); 
//  candlestickchart.setAxisYTitleQuadrantWidth(50); 
//  candlestickchart.setAxisXTitleQuadrantHeight(20); 
     candlestickchart.setAxisXPosition(Axis.AXIS_X_POSITION_BOTTOM); 
     candlestickchart.setAxisYPosition(Axis.AXIS_Y_POSITION_RIGHT); 
     // 为chart2增加均线 
     candlestickchart.setStickData(new ListChartData<IStickEntity>(ohlc)); 
     candlestickchart.setOnDisplayCursorListener(new IDisplayCursorListener() { 
      public void onCursorChanged(IDataCursor dataCursor, int displayFrom, 
             int displayNumber) { 
       candlestickchart.setDisplayFrom(displayFrom); 
       candlestickchart.setDisplayNumber(displayNumber); 
       candlestickchart.postInvalidate(); 
      } 
     }); 

     candlestickchart.setOnTouchGestureListener(new OnTouchGestureListener() { 

      /* (non-Javadoc) 
      * 
      * @param touchable 
      * @param event 
      * @see cn.limc.androidcharts.event.OnTouchGestureListener#onTouchDown(cn.limc.androidcharts.event.ITouchable, android.view.MotionEvent) 
      */ 
      @Override 
      public void onTouchDown(ITouchable touchable, MotionEvent event) { 
       super.onTouchDown(touchable, event); 
       candlestickchart.touchDown(new PointF(event.getX(), event.getY())); 
      } 

      /* (non-Javadoc) 
      * 
      * @param touchable 
      * @param event 
      * @see cn.limc.androidcharts.event.OnTouchGestureListener#onTouchMoved(cn.limc.androidcharts.event.ITouchable, android.view.MotionEvent) 
      */ 
      @Override 
      public void onTouchMoved(ITouchable touchable, MotionEvent event) { 
       super.onTouchMoved(touchable, event); 
       candlestickchart.touchMoved(new PointF(event.getX(), event.getY())); 
      } 

      /* (non-Javadoc) 
      * 
      * @param touchable 
      * @param event 
      * @see cn.limc.androidcharts.event.OnTouchGestureListener#onTouchUp(cn.limc.androidcharts.event.ITouchable, android.view.MotionEvent) 
      */ 
      @Override 
      public void onTouchUp(ITouchable touchable, MotionEvent event) { 
       super.onTouchUp(touchable, event); 
       candlestickchart.touchUp(new PointF(event.getX(), event.getY())); 
      } 
     }); 

     candlestickchart.setAutoCalcValueRange(true); 
     candlestickchart.setDisplayCrossXOnTouch(true); 
     candlestickchart.setDisplayCrossYOnTouch(true); 
    } 

答えて

0

あなたが選択したスティックデータのインデックスを取得したい場合は、あなたが使用することができます。

public int getSelectedIndex() 

あなたが触れたポイントを取得したい場合は、あなたが使用することができます。

インサイド
  1. setOnTouchGestureListener:

    public void onTouchMoved(ITouchable touchable, MotionEvent event){ 
        new PointF(event.getX(), event.getY()) 
    } 
    
  2. 外setOnTouchGestureListener(活動、断片、のViewGroup):より多くの機能については

    public PointF getTouchPoint() 
    

はSlipCandleStickChartを選択し、サポートしています。