AchartEngine getScreenPosition在用户点击点附近显示Toast

时间:2013-10-15 12:58:22

标签: android achartengine toast

enter image description here你好我想在用户点击显示值的achartengine Point时显示一个toast。我试图使用toScreenPoint方法获取屏幕位置值,但是如果我平移屏幕(移动图表)之后它将给出错误的值,之后它给出正确的屏幕点并且我将此值设置为Toast。我的代码如下所示。

       chart=new TimeChart(dataset, charthelper.getXYMultipleSeriesRenderer());
           graphview.setOnClickListener(new OnClickListener() { 
        @Override
        public void onClick(View v) {
            SeriesSelection ss=graphview.getCurrentSeriesAndPoint();
              if (ss == null) {
                  } else {

                double[] screenPoint = chart.toScreenPoint(new double[] {
                        ss.getXValue(),ss.getValue() },0);
                toast_textview.setText(ss.getValue()+"");
                Toast toast=new Toast(getApplicationContext());
                toast.setGravity(Gravity.TOP|Gravity.LEFT, (int)screenPoint[0],(int)screenPoint[1]);
                toast.setView(toast_layout);
                toast.show();       
                  }
                }
    });
    container_layout.addView(graphview,0);

[UPDATE]  我用这种方式解决了它

 /**
     * set ontouch listener for double tap
     */
    graphview.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            x = event.getX();
            y = event.getY();
            detector.onTouchEvent(event);
            detector.setIsLongpressEnabled(true);
            return false;
        }
    });
    graphview.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            SeriesSelection ss = graphview.getCurrentSeriesAndPoint();
            if (ss == null) {
            } else {
                /**
                 * toast display only series of value which index is
                 * zero
                 */
                if (ss.getSeriesIndex() == 0) {
                    toast_textview.setText(ss.getValue() + "");
                    Toast toast = new Toast(getApplicationContext());
                    DecimalFormat formatter = new DecimalFormat("##.##");
                    toast_textview.setText(formatter.format(ss.getValue()) + "");
                    toast.setGravity(Gravity.TOP | Gravity.LEFT, (int) x,
                            (int) y);
                    toast.setView(toast_layout);
                    toast.setDuration(Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
        }
    });

0 个答案:

没有答案