我正在编写一个程序,其活动使用手机的相机拍照。 相机的SurfaceView下有一个捕捉按钮。现在,当用户按下捕获按钮时,我希望表面视图显示图片的预览,并且在此预览下应该有两个按钮(接受和取消)。如果用户按下取消,则程序应返回相机预览以拍摄另一张照片。
我认为我应该为此定义两个布局,但我不知道如何在活动中从一个布局更改为另一个布局。
答案 0 :(得分:1)
有多种方法可以实现这一目标。
在layout.xml文件中的ViewGroup
LinearLayout
visibility="gone"
内定义按钮。然后拨打myButtons.setVisibility(View.VISIBLE);
以使其可见。要再次隐藏它们,请致电myButtons.setVisibility(View.GONE);
。
以编程方式创建按钮,并在运行时将它们附加到SurfaceView。
我更喜欢选项1。
答案 1 :(得分:0)
您可以使用两个片段。
第一个片段的布局带有相机按钮。 第二个片段有预览,两个按钮接受/取消。
您可以使用backstack,以便取消(或用户按下)将带您回到第一个片段。
以下是片段教程(http://developer.android.com/guide/components/fragments.html)中的代码,其中显示了如何将片段替换为另一个片段
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
你的取消按钮可以使用popBackStack()(用户模拟Back命令)从后台堆栈中弹出片段。
还有另一种选择。如果您不需要预览的自定义布局,则可以跳过使用自定义相机并使用startActivityForResult打开相机作为意图。意图允许用户拍摄照片(在这种情况下,它会将结果照片与您的主要活动进行通信),还有一个取消按钮,可以在不拍照的情况下返回您的应用。