Android:是否可以让两个表面 View 相互叠加?

标签 android surfaceview

我的想法是有两个表面 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/

相关文章:

java - 魔石: converting JSON to Java object when the class has a List<Object> field

android - 带有 aidl 的 bindService 返回 false

android - 使用android登录解析云代码

android - SurfaceView 上的摄像头 : set orientation of picture taken

android 在 surfaceview onDraw 中显示 toast

android - 从 Android 中的 Ride Request Uber 小部件迁移,因为它已被弃用

Android SurfaceView Canvas 呈现错误的颜色

Android:如何为surfaceview添加滚动条?

android - 如何在Android中修复相机预览(surfaceview)的正确纵横比?

java - android 解析查询参数时转义编码