如何启动新活动意图在主要活动上叠加相机surfaceview

时间:2014-02-21 02:50:52

标签: android android-intent

我想知道如何更改活动意图,同时保留相机预览作为我的应用程序的背景。

目前,我使用addView()在MainActivity上的相机SurfaceView上覆盖我的xml布局(膨胀)并覆盖onBackPressed()并使用removeViewAt()和addView()填充它以在我的视图中移回。

我认为我当前的代码非常混乱,因为我只使用一个类(MainActivity类)来切换我的视图。

我想使用Intents,因为我认为我的代码会更有条理,所以我不会有覆盖onBackPressed()的问题,因为每个活动都会“回堆叠”。

2 个答案:

答案 0 :(得分:0)

要让您的相机在整个应用程序中运行,请尝试使用CameraPreview.java类,并在每个要让相机运行的活动中调用它。

private Camera mCamera = null;
private CameraPreview mPreview;
SurfaceView surfaceView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    surfaceView = (SurfaceView)findViewById(R.id.cameralayout);
    mPreview = new CameraPreview(this, surfaceView);
}

@Override
protected void onResume() {
    super.onResume();  
    mCamera = CameraPreview.getCameraInstance();
    mPreview.setCamera(mCamera);    
}

@Override
protected void onPause() {
    super.onPause();
    if (mCamera != null) {
        mPreview.setCamera(null);
        mCamera.release();
        mCamera = null; 
    }
}

另一方面,您可以在切换活动时尝试设置标志以清除堆栈

Intent i = new Intent(ActivityA.this, ActivityB.class); 
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

答案 1 :(得分:0)

好的..我一直在阅读并发现最好的方法是使用Fragments。这解决了这个问题。