Android: возможно ли иметь два вида поверхности друг на друга?
Моя идея состоит в том, чтобы иметь два SurfaceViews. Один поверхностный вид, который будет содержать изображение (скажем, ImageSurgaceView) и вторую поверхность, которая лежит поверх первой, которая содержит аннотации (скажем, AnnotationSurfaceView), такие как круг, прямоугольник и т. Д. Теперь мне нужно отобразить эти виды поверхности так, чтобы высота, ширина одинаковы и более того, оба вида поверхности должны двигаться при перетаскивании, т.е. делиться событиями касания. Чтобы быть точным, когда я перемещаю изображение вверх, аннотации также должны двигаться вверх.
Теперь я не уверен, возможно ли это в Android. Может ли кто-нибудь рассказать или поделиться информацией об этом. У меня нет идеи реализации этого, и, следовательно, у меня нет конкретного кода. Более того, я не смог найти ничего похожего.
Спасибо за помощь.
1 ответ
Да, это возможно. Вы можете добавить оба SurfaceView
как дети FrameLayout
, Вы также захотите вызвать setZOrderMediaOverlay на одном или обоих ваших SufaceView
с тем, чтобы указать, как они наслоены.
Кроме того, это может быть графический алгоритм, который вы описываете. Рассмотрите возможность добавления AndroidManifest.xml
атрибутприложения android:hardwareAccelerated="true"
,
Наконец, просто настройте OnTouchListener
обрабатывать события перетаскивания. использование MotionEvent.getRawX()
а также MotionEvent.getRawY()
чтобы получить точку соприкосновения, и использовать это, чтобы управлять холстами.