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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам