поведение при просмотре изображения - PullRequest
0 голосов
/ 17 сентября 2018

Можно ли создать разные действия для нажатия на один и тот же ImageView, но на разные части?Скажем, у меня есть ImageView, и я хочу, чтобы он работал по-другому, если я нажимаю на верхнюю часть ImageView, и по-другому, если я нажимаю на среднюю часть ImageView.Могу ли я добиться этого в Android

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

если у вас есть фиксированные секции в вашем изображении, вы можете использовать макет фрейма и добавить 3 (например) прозрачных вида в ваше изображение, а затем установить прослушиватели щелчка на этих представлениях. но если у вас есть динамические секции, вы можете справиться с ними, комбинируя onTouchListener и onClickListener, например:

 // just store the touch X,Y coordinates
    View.OnTouchListener touchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            // save the X,Y coordinates
            if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
                lastTouchDownXY[0] = event.getX();
                lastTouchDownXY[1] = event.getY();
            }

            // let the touch event pass on to whoever needs it
            return false;
        }
    };

    View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // retrieve the stored coordinates
            float x = lastTouchDownXY[0];
            float y = lastTouchDownXY[1];

            // use the coordinates for whatever or check the clickable areas
            Log.i("TAG", "onLongClick: x = " + x + ", y = " + y);
        }
    };
0 голосов
/ 17 сентября 2018

Я думаю, что лучший способ для этого - объявить frameLayout как родительское представление, затем вы можете объявить представления на вашем imageView , тогда щелкнув по каждому представлению, выполняй что хочешь.

0 голосов
/ 17 сентября 2018

Лучший способ - добавить OnTouchListener к представлению и обработать событие щелчка самостоятельно, связанное с координатой касания.Но если вам нужен простой способ, который я не предлагаю, поскольку он может привести к проблемам с производительностью, вы можете добавить прозрачные виды поверх ваших ImageView и добавить для них различные OnClickListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...