按下相机拍摄按钮后如何更改活动的布局

时间:2013-01-07 13:35:42

标签: android android-layout android-activity android-camera android-button

我正在编写一个程序,其活动使用手机的相机拍照。 相机的SurfaceView下有一个捕捉按钮。现在,当用户按下捕获按钮时,我希望表面视图显示图片的预览,并且在此预览下应该有两个按钮(接受和取消)。如果用户按下取消,则程序应返回相机预览以拍摄另一张照片。

我认为我应该为此定义两个布局,但我不知道如何在活动中从一个布局更改为另一个布局。

2 个答案:

答案 0 :(得分:1)

有多种方法可以实现这一目标。

  1. 在layout.xml文件中的ViewGroup LinearLayout visibility="gone"内定义按钮。然后拨打myButtons.setVisibility(View.VISIBLE);以使其可见。要再次隐藏它们,请致电myButtons.setVisibility(View.GONE);

  2. 以编程方式创建按钮,并在运行时将它们附加到SurfaceView。

  3. 我更喜欢选项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打开相机作为意图。意图允许用户拍摄照片(在这种情况下,它会将结果照片与您的主要活动进行通信),还有一个取消按钮,可以在不拍照的情况下返回您的应用。