2016-11-04 8 views
3

Я разрабатываю приложение для Android, но у меня есть некоторые сомнения относительно возможности моего проекта.Как нарисоватьBitmap на дисплее в Android

Я должен реализовать пользовательский макет, составленный из ImageView, который отображает изображение, в частности VectorDrawable.

Перекрытие ImageView существует SurfaceView, что:

  • Capture каждые координаты прикосновений;
  • Нарисуйте растровое изображение (в определенном месте) каждый раз, когда я касаюсь экрана.

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

Возникает вопрос:

Есть другой метод лучше сделать это? Я реализовал еще, идея работает, но у меня есть некоторые ограничения в SurfaView (например, я не могу вставить ее в ScrollView).

И наконец:

Принимая во внимание доводов, сделанные до сих пор, предполагая иметь ImageView, которые показывают VectorDrawable, можно создать функцию, которая возвеличивать и уменьшить изображение (VectorDrawable)?

p.s. Я прошу прощения за то, что задал два вопроса, но все тесно связано, я думал, что было глупо открывать два потока.

ответ

1

Задача 1: Ваша задача выполнима с использованием SurfaceView, но я предполагаю, что после того, как вы нарисуете свое изображение, хотите, чтобы он остался, если это так, вам, возможно, придется отслеживать каждое изображение отдельно. Если ваша задача просто рисует изображение, вы также можете переопределить View, который может выполнять одну и ту же задачу, но также обеспечит прозрачность и основные реализации макета. Разница между View и SurfaceView - это производительность, SurfaceView довольно низкий уровень с двойным буфером и дает вам больше контроля. Кроме того, если количество изображений невелико, вы можете переопределить FrameLayout и порождать ImageView. Это не очень эффективно, но его будет проще реализовать.

Задача 2: Вы можете легко масштабировать ImageView с помощью setScaleX и setScaleY. Но это может отражать изображение. Загрузка большого Bitmap, а затем рисование его на пользовательском представлении было бы лучшим способом.