как поставить кнопку на изображение

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

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

Я нашел идею, но я не могу найти никаких руководств или инструкций, которые могли бы мне помочь. В настоящее время я смотрю на GL ES 1.0, но я не уверен, что это правильный способ сделать это.

Любая помощь будет очень признательна

Благодарность


person Martin    schedule 02.02.2012    source источник


Ответы (2)


Извините, что ответил до того, как полностью прочитал вопрос. Мое решение более простой способ, но не позволит вам формировать и формировать их так же, как ваша идея. Позвольте мне поиграть, и, возможно, я смогу обновить этот ответ. Удачи

Если я вас правильно понял, вы можете разместить кнопки поверх изображения, а затем сделать их невидимыми. Таким образом, они не видны, но все еще могут быть нажаты.

View b = findViewById(R.id.button); 
b.setVisibility(View.GONE);
//I can't remember off the top of my head but it might be
b.setVisibility(View.INVISIBLE)

И если мой код отключен, вот резервная копия Link< /а>

person sealz    schedule 02.02.2012
comment
спасибо harper89, я подумал, что если бы я мог получить цвет области, то я мог бы сделать свои области любой формы, которая мне нравится, а также было бы полезно, если бы я позволил моему изображению исказиться, если оба изображения имеют одинаковый размер, тогда любое искажение будет зеркально в нажимаемых областях. Я немного новичок в этом, я просто предположил, что изображение должно скрываться и оставаться видимым, но теперь я не понимаю, почему изображение может быть невидимым и не иметь цветов (спасибо также @Thommy) - person Martin; 02.02.2012
comment
@Martin Действие щелчка по нажатому цвету кажется гораздо более крутой и надежной идеей. Надеюсь, в итоге вы получите то, что вам нужно. Наслаждаться - person sealz; 02.02.2012

Вы можете установить OnTouchListener для своего изображения:

image.setOnTouchListener(new View.OnTouchListener() {

 @Override
 public boolean onTouch(View v, MotionEvent event) {
 event.getX();
 event.getY();
 return false;
      }
});

С помощью getX и getY вы получите координаты изображения, которое было нажато. Теперь вам просто нужен список областей, которые реагируют на «клики».
Я предлагаю вам сделать это со списком Rect — объекты. Каждый Rect-Object представляет собой интерактивный прямоугольник внутри вашего изображения. Объект Rect предоставляет метод contains(x, y) для проверки того, находятся ли внутри него координаты, полученные от onTouchListener.

person Thommy    schedule 02.02.2012