繁体   English   中英

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

[英]How to change the activity's layout after pressing the camera capture button

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

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

有多种方法可以实现此目的。

  1. 在您的layout.xml文件中的ViewGroupLinearLayout定义visibility="gone"的按钮。 然后调用myButtons.setVisibility(View.VISIBLE); 使它们可见。 要再次隐藏它们,请调用myButtons.setVisibility(View.GONE);

  2. 以编程方式创建按钮,然后在运行时将其附加到SurfaceView。

我希望选择1。

您可以为此使用两个片段。

第一个片段的布局带有照相机按钮。 第二个片段具有预览,两个按钮接受/取消。

您可以使用后退堆栈,以便取消(或用户按下后退)将使您返回第一个片段。

以下是“片段”教程(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打开摄像机作为意图。 该意图将使用户可以拍照(在这种情况下,它会将生成的照片与您的主要活动进行通信),并且还具有一个取消按钮,无需拍照即可返回到您的应用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM