Achartengine изменить действие нажатия кнопки FitZoom - PullRequest
0 голосов
/ 12 марта 2012

Для моего приложения не очень полезна кнопка fitZoom графика, но это место было бы хорошо для отображения контекстного меню с некоторой информацией графика. Я уже изменил изображение кнопки и все такое, но я не знаю, как я могу изменить функциональность кнопки, поскольку контекстное меню будет связано с действием, а не с графиком.

Я не знаю, объяснил ли я это хорошо, может быть, это немного сумбурно, но скажите мне, какая часть недостаточно ясна!

Есть идеи?

Большое спасибо!

1 Ответ

0 голосов
/ 12 марта 2012

Я решил это сам, очень безобразно, но это работает!

Сначала вы должны отключить действие zoomFit onClick, а после того, как я сделал следующее:

Я добавил в GraphicalView в библиотеке achartengine эту функцию, которая сообщает мне, когда была нажата кнопка соответствия:

    public boolean isCompare(MotionEvent event) {
    int action = event.getAction();
    RectF zoomR = new RectF();
    zoomR =  getZoomRectangle();;
    boolean comp = false;
    if (action == MotionEvent.ACTION_DOWN) {
        oldX = event.getX(0);
        oldY = event.getY(0);
        if (mRenderer != null && mRenderer.isZoomEnabled()
                && mZoomR.contains(oldX, oldY)) {
            if (oldX < mZoomR.left + mZoomR.width() / 3) {
                comp = false;
            } else if (oldX < mZoomR.left + mZoomR.width() * 2 / 3) {
                comp = false;
            } else {
                comp= true;
            }
                // graphicalView.zoomReset();
            }
        }
    return comp;
}

И я добавил onTouchListener в свою активность:

    public void setChartListener(final GraphicalView view){
    view.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub

            view.onTouchEvent(event);
            boolean is = view.isCompare(event);
            if (is) {
                //Action to do when pressed
            } else {
                                    //null
            }
            return is;
        }
    });
}

Если кто-то знает лучший способ ...

...