3

我正在尝试将 Google Maps Android API v2 中的 MapFragment 与相机预览结合使用。我需要能够在相机预览和 MapFragment 之间切换,但我无法让它工作。

对于相机预览,我从示例指南中复制了 CameraPreview 类。当我想查看相机预览时,我将 CameraPreview 类的一个实例添加到我的活动中,使用

CameraPreview mPreview = new CameraPreview(this); 
addContentView(mPreview, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

当我不使用 MapFragment 时,这可以正常工作。

对于 MapFragment,我已通过以下方式将其添加到我的活动布局中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >


    <fragment
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</LinearLayout> 

没有 CameraPreview 也能正常工作。我可以使用(例如隐藏)隐藏和取消隐藏 MapFragment:

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(map_fragment);
ft.commit();

但是,当我尝试将两者结合使用时,问题就出现了,即隐藏 MapFragment,然后将 CameraPreview 实例添加到我的活动中。隐藏不起作用,似乎 MapFragment 以某种方式劫持了 CameraPreview 并具有优先权。一个奇怪的功能是,如果我强制屏幕进入睡眠状态然后将其唤醒,当它唤醒时,CameraPreview 就在那里。如果我反过来做,即先添加CameraPreview,然后隐藏MapFragment,行为是一样的。

仅供参考:我正在运行 Android 版本 4.1.1 的三星 Galaxy Note 2 LTE 上测试该应用程序。

谁能告诉我我做错了什么?

4

1 回答 1

0

在您的相机预览上使用 setZOrderOnTop(boolean),例如 mPreview.setZOrderOnTop(true);。这个对我有用。

于 2013-08-09T08:45:00.103 回答