我想知道如何更改活动意图,同时保留相机预览作为我的应用程序的背景。
目前,我使用addView()在MainActivity上的相机SurfaceView上覆盖我的xml布局(膨胀)并覆盖onBackPressed()并使用removeViewAt()和addView()填充它以在我的视图中移回。
我认为我当前的代码非常混乱,因为我只使用一个类(MainActivity类)来切换我的视图。
我想使用Intents,因为我认为我的代码会更有条理,所以我不会有覆盖onBackPressed()的问题,因为每个活动都会“回堆叠”。
答案 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。这解决了这个问题。