我的想法是有两个表面 View 。一个 surfaceView 将保存图像(比如 ImageSurgaceView),第二个表面位于第一个表面之上,第一个表面保存注释(比如 AnnotationSurfaceView),如圆形、矩形等。现在我必须映射这些表面 View ,以便高度、宽度是相同的,而且,两个表面 View 都应该在拖动时移动,即共享触摸事件。准确地说,当我向上移动图像时,注释也应该向上移动。
现在,我不确定这在 android 中是否可行。任何人都可以告诉或分享一些这方面的信息。我对此没有任何实现想法,因此我没有任何具体代码。而且,我找不到任何类似的东西。
感谢您的帮助。
最佳答案
是的,这是可能的。您可以将这两个 SurfaceView
添加为 FrameLayout
的子项。您还需要调用 setZOrderMediaOverlay在您的一个或两个 SufaceView
上,以指定它们的分层方式。
此外,这可能是您描述的图形密集型算法。考虑添加 AndroidManifest.xml
application 属性 android:hardwareAccelerated="true"
。
最后,只需设置自定义 OnTouchListener
来处理拖动事件。使用 MotionEvent.getRawX()
和 MotionEvent.getRawY()
获取触摸点,并使用它来操作 Canvas 。
关于Android:是否可以让两个表面 View 相互叠加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18358852/