Прозрачный вид наложения для рисования - PullRequest
0 голосов
/ 22 марта 2012

У меня есть приложение, состоящее из RelativeLayout, TableLayout и некоторых кнопок.Теперь я хотел бы нарисовать круг под точкой, где пользователь нажимал на экране.Один из способов - расширить представление и добавить все функциональные возможности внутри, но мне интересно, есть ли более элегантное (общее) решение?

Я думал о прозрачном наложении, которое вы добавляете в макет.и он захватывает MotionEvent, рисует кружок в точке касания и передает событие в базовый компонент View (чтобы кнопки по-прежнему можно было нажимать).

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

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Я почти уверен, что вы можете достичь того, чего хотите, используя GestureOverlayView.

Доступны ресурсы и примеры:

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

Я не знаю, является ли мое предложение лучшим решением, но я бы сделал следующее: Создайте новый класс, расширяющий Drawable.
Переопределите метод onDraw и нарисуйте круги на холсте. Добавить. addCircle (int x, int y); метод к классу рисования, который вы будете вызывать каждый раз, когда хотите добавить кружок.

Затем в своей деятельности создайте новый объект вышеупомянутого класса и установите его с context.getWindow (). SetBackgroundDrawable (ваш объект) в качестве вашего WindowBackground. Затем, где вы обрабатываете ваше motionevent, вызовите этот объект .addCircle, и ваш круг будет добавлен.

Таким образом, в вашей деятельности будет только несколько строк кода, и он будет многократно использоваться.

...