Поведение onclick в android imageview

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

Посмотри на этот stackoverflow.com/a/4023317/6055194

Zhebzhik Babich 17.09.2018 09:52

возможный дубликат stackoverflow.com/questions/16670774/clickable-area-of-image

Muhammad Zahab Ahmad Khan 17.09.2018 09:52

Возможный дубликат кликабельная область изображения

cakan 17.09.2018 09:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
78
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

если у вас есть фиксированные разделы в вашем просмотре изображения, вы можете использовать макет кадра и добавить 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);
        }
    };

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

Другие вопросы по теме