簡體   English   中英

如何將按鈕添加到相機預覽android?

[英]how to Add button to the camera preview android?

我正在開發攝影應用程序,我的要求是疊加效果到我開發的代碼的相機預覽。在此代碼中,我將圖像疊加到表面視圖。

public class OverlayLiveCamera extends Activity {
       Camera camera;
       LayoutInflater controlInflater = null;
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);

            Preview mPreview = new Preview(this);
            DrawOnTop mDraw = new DrawOnTop(this);
            setContentView(mPreview);
            addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        }


       class Preview extends SurfaceView implements SurfaceHolder.Callback{

            SurfaceHolder mHolder;



            Preview(Context context) {
                super(context);
                // Install a SurfaceHolder.Callback so we get notified when the
                // underlying surface is created and destroyed.
                mHolder = getHolder();
                mHolder.addCallback(this);
                mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            }



            public void surfaceCreated(SurfaceHolder holder) {
                // The Surface has been created, acquire the camera and tell it where
                // to draw.
                camera = Camera.open();
                try {
                    camera.setPreviewDisplay(holder);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            public void surfaceDestroyed(SurfaceHolder holder) {
                // Surface will be destroyed when we return, so stop the preview.
                // Because the CameraDevice object is not a shared resource, it's very
                // important to release it when the activity is paused.
                camera.stopPreview();
                camera = null;
            }

            public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
                // Now that the size is known, set up the camera parameters and begin
                // the preview.
                Camera.Parameters parameters = camera.getParameters();
                parameters.setPreviewSize(w, h);
                parameters=camera.getParameters();
                camera.setParameters(parameters);
                camera.startPreview();
            }
       }
        class DrawOnTop extends View {

            public DrawOnTop(Context context) {


                super(context);

                // TODO Auto-generated constructor stub
            }

            @Override
            protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.water);
                Paint paint = new Paint();
                paint.setAlpha(100);
                canvas.drawBitmap(mBitmap, 0, 0, paint); 


                super.onDraw(canvas);
            }

        }

我的 xml 代碼

<FrameLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
    <SurfaceView android:id="@+id/surfaceView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></SurfaceView>
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>

</FrameLayout>

因為它將表面視圖和覆蓋圖像,但它不會顯示按鈕,而且當我單擊按鈕時,覆蓋視圖會捕獲並保存到 SD 卡中。

請幫我。

你可以使用下面的代碼添加按鈕..

 <FrameLayout android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="2"
  android:padding="5dip"  
  >
  <com.commonlib.controls.CameraPreview
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:layout_gravity="center"
  android:id="@+id/surface_camera"
  />
  <Button android:id="@+id/target"
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="surfacebuttonview"
    >
    </Button>
</FrameLayout>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM