【问题标题】:How to add buttons on camera preview如何在相机预览上添加按钮
【发布时间】:2016-08-28 19:54:41
【问题描述】:

我是 Android 新手,我正在尝试构建一个相机应用程序。 我构建了一个相机预览,它扩展了 SurfaceView 并实现了 SurfaceHolder.Callback 以在相机活动上预览相机。 这是承包商:

public CameraPreview(Context context) {
    super(context);
    mContext = context;
    mStartRequested = false;
    mSurfaceAvailable = false;
    mCamera = null;
    mHolder = getHolder();
    mHolder.addCallback(this);
}

以及初始化布局的 onCreate(in CameraActivity.java) 方法:

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_camera);
    mPreview = new CameraPreview(this);
    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
    preview.addView(mPreview);
}

最后是布局 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<FrameLayout
    android:id="@+id/camera_preview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal|bottom" />
</FrameLayout>
</LinearLayout>

AndroidMainifest.xml:

<application
    ...
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" >

如您所见,我尝试在相机预览上添加一个按钮,但在应用程序启动时我看不到该按钮。 有人能看出错误吗??

谢谢!

【问题讨论】:

    标签: android camera android-camera surfaceview


    【解决方案1】:

    预览可能位于按钮的顶部(按 Z 顺序)。这一行:

    preview.addView(mPreview);
    

    将 CameraPreview 添加到 FrameLayout 的内部子视图列表的end。 FrameLayout 按顺序呈现其子视图;因此,预览是在按钮之后绘制的,或者“覆盖”它。试试这个:

    preview.addView(mPreview, 0);
    

    您还可以通过使用具有完全限定类名的标签来从 XML 中扩展来订购 CameraPreview,如下所示:

    <com.yourdomain.CameraPreview
    .../>
    

    ...尽管您需要覆盖 View(Context context, AttributeSet attrs);构造函数来完成这项工作。

    【讨论】:

    • 谢谢!我会试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多