【问题标题】:Drawing on top of Camera Surface View在相机表面视图上绘图
【发布时间】:2011-05-17 20:15:16
【问题描述】:

好的,所以我在这里遇到了一个奇怪的问题....我的目标是在相机预览上绘图。我目前正在这样做:

    <FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">

    <com.brayden.icamera.DrawingSurfaceView
        android:id="@+id/drawingSurface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <SurfaceView
        android:id="@+id/cameraSurface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</FrameLayout>

在 DrawingSurfaceView 上绘图允许我在预览之上绘图...起初。但。如果先调用 onPause(),然后调用 onResume(),我的绘图将不再显示在预览顶部。

更奇怪的是,如果我这样做:

    <FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">

    <SurfaceView
        android:id="@+id/cameraSurface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <com.brayden.icamera.DrawingSurfaceView
        android:id="@+id/drawingSurface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</FrameLayout>

翻转它们的堆叠方式,然后当应用程序启动时,您无法在预览顶部看到我的绘图,但是,如果 onPause() 然后 onResume() 被调用,那么我的绘图开始显示。所以与其他方式完全相反的行为。

此外,这只发生在第一个暂停/恢复周期。所以第一种方式,你看到我的画,直到你暂停并恢复应用程序,然后再也不会。第二种方式,一开始你看不到它,但如果你暂停/恢复,那么从那时起你就会看到这幅画。什么鬼?

【问题讨论】:

  • 您是否尝试过使用 Hierarchy Viewer (developer.android.com/guide/developing/tools/…) 查看暂停/恢复周期是否会改变您的布局?
  • 是的,它以我期望的顺序显示所有内容,它不会改变它们的堆叠顺序。

标签: android xml layout android-camera


【解决方案1】:

据我了解,任何类型的 SurfaceView 都不应与其他事物重叠,因为 Android 人员尚未实现对此的支持。见this thread

【讨论】:

  • 那么在表面视图上绘制的建议方法是什么?我应该将 ImageView 放在表面视图的顶部并使用它吗?
  • 好的。改用 ImageView 并解决了我的问题。不知道多个 SurfaceView 的事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多