【问题标题】:Having overlay in Android Camera Preview在 Android Camera Preview 中有叠加层
【发布时间】:2014-02-11 20:39:34
【问题描述】:
我想在相机预览中实现如下图所示的叠加层。
我的 xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="match_parent"
android:layout_height="399dp" >
</FrameLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/camera_preview"
android:layout_marginLeft="35dp"
android:text="@string/share" />
<Button
android:id="@+id/button_capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/button1"
android:layout_marginRight="38dp"
android:text="@string/capture" />
</RelativeLayout>
如果我尝试在 framelayout 中使用 listview,它不会在执行我的代码后显示相机预览。知道如何在相机预览中有这样的叠加层吗?
【问题讨论】:
标签:
android
android-camera
【解决方案1】:
我在我的应用的相机预览顶部添加了一个按钮。我找到了完全避免使用 XML 并对其进行编程的解决方案。这可能对您有用。
相机类扩展了 Fragment。但是您可以在此处看到按钮已创建然后添加到视图中。在相机表面视图之后。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.camera_fragment,
container, false);
myCamera = getCameraInstance();
recording = false;
if (myCamera == null) {
Toast.makeText(getActivity(), "Fail to get Camera",
Toast.LENGTH_LONG).show();
}
Button button = new Button(getActivity());
//button.setBackgroundResource(R.drawable.record);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
params.width = 260;
params.height = 260;
button.setLayoutParams(params);
button.setText("Record");
myCameraSurfaceView = new GetCamera(getActivity(), myCamera);
((ViewGroup) rootView).addView(myCameraSurfaceView);
((ViewGroup) rootView).addView(button);
button.setOnClickListener(this);
return rootView;
}
【解决方案2】:
我开发的应用程序遇到了同样的问题。我需要相机预览上的按钮。
我所做的只是在 xml 布局中,在您想要的任何 View 项目上 - 只需添加属性
android:alpha"0.5"
其中 0.5 表示 50% 透明
祝你好运