как поставить кнопку на изображении - PullRequest
0 голосов
/ 02 февраля 2012

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

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

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

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

спасибо

Ответы [ 2 ]

3 голосов
/ 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 представляет интерактивный прямоугольник внутри вашей картинки.Объект Rect предоставляет метод contains(x, y) для проверки того, находятся ли внутри него координаты, полученные из onTouchListener.

1 голос
/ 02 февраля 2012

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

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

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)

И если мой код отключен, здесь есть резервная копия Ссылка

...