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

Моя идея состоит в том, чтобы иметь два поверхностных экрана. Один объект surfaceView, который будет содержать изображение (скажем, ImageSurgaceView) и вторую поверхность, лежащую поверх первой, которая содержит аннотации (например AnnotationSurfaceView), такие как круг, прямоугольник и т.д. Теперь мне нужно сопоставить эти поверхностные виды, чтобы высота, ширина и то же самое, и поверхностный вид должен двигаться на перетаскивании, то есть делиться событиями касания. Если быть точным, когда я перемещаю изображение, аннотации также должны перемещаться вверх.

Теперь я не уверен, что это возможно в Android. Может ли кто-нибудь рассказать или поделиться какой-либо информацией об этом. У меня нет идеи реализации, и поэтому у меня нет никакого конкретного кода. Более того, я не мог найти ничего подобного.

Спасибо за помощь.

Ответ 1

Да, это возможно. Вы можете добавить оба SurfaceView в качестве дочерних элементов FrameLayout. Вы также захотите вызвать setZOrderMediaOverlay на одном или обоих ваших SufaceView, чтобы указать, как они слоируются.

Кроме того, это может быть графический интенсивный алгоритм, который вы описываете. Подумайте о добавлении атрибута приложения AndroidManifest.xml android:hardwareAccelerated="true".

Наконец, просто настройте пользовательский OnTouchListener для обработки событий перетаскивания. Используйте MotionEvent.getRawX() и MotionEvent.getRawY(), чтобы получить точку касания, и используйте это, чтобы манипулировать холстами.