我必须为用户提供在我的应用中捕获视频的选项,但我不希望在视频未录制时出现预览(或占用空间)。
因此,我根据camera2video google示例使用FragmentTransaction
构建浮动预览。
我的班级变量是:
FragmentTransaction fm = null;
Camera2VideoFragment camera2VideoFragment;
我创建了一个实例并用OnCreate
方法初始化了相机:
camera2VideoFragment = Camera2VideoFragment.newInstance();
if (null == savedInstanceState) {
fm = getFragmentManager().beginTransaction()
.replace(R.id.container, camera2VideoFragment);
}
我想使用菜单方法(onOptionsItemSelected)来隐藏和隐藏预览(片段):
case R.id.action_captureScreen:
item.setChecked(!item.isChecked());
if (item.isChecked())
{
fm.commit(); // show the preview - working
// camera2VideoFragment.captureVideo(); // start capture video
}
else
{
//camera2VideoFragment.captureVideo(); // stop the video and save to file
fm.detach(camera2VideoFragment); // hide the preview - NOT WORKING
}
我也试过fm.hide(camera2VideoFragment)
,但它也不行。
所以,问题是如何隐藏\显示预览? 谢谢!
答案 0 :(得分:2)
你混淆了一些条款。
交易仅执行"提交之后由片段系统提供。在致电commit()
之前没有任何事情发生。
所以你已经执行了两个不同的交易,一个用于显示,另一个用于隐藏。
显示:
getFragmentManager().beginTransaction().show(camera2VideoFragment).commit();
隐藏:
getFragmentManager().beginTransaction().hide(camera2VideoFragment).commit();