2013-08-21 3 views
10

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

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

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

ответ

20

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

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

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

+0

Я не могу добавить оба вида поверхности в рамку. В нем говорится, что я должен называть ** removeView() ** перед добавлением другого ребенка. Кроме того, при установке ** android: HardwareEnabled = "true" **, я получаю еще одну ошибку, которая говорит ** ошибка: идентификатор ресурса не найден для атрибута 'HardwareEnabled' в пакете 'android' **. – Shobhit

+0

@Shobhit, атрибут был опечаткой, которую я исправил. Попробуйте 'android: hardwareAccelerated =" true "'. Что касается вашей первой проблемы - это похоже на то, что вы используете 'ScrollView'. Можете ли вы добавить свой макет ('XML' или программный) к вопросу? – Phil

+0

эй, Фил, была небольшая ошибка, и теперь я смог получить эту работу, но только частично. Я должен по-прежнему реализовать пользовательский OnTouchListener. У вас есть какая-либо ссылка на пример кода? Если да, не могли бы вы поделиться? Я отправлю текущий код в качестве своего ответа. Благодаря! :) – Shobhit

Смежные вопросы