Android相机在视图与按钮和文本结束



我在我的视图中实现了一个摄像头,就像它在API演示中做的那样。但它只在横屏模式下有效。但这对我来说不太好,因为我主要想在竖屏模式下使用它。所以按钮等看起来很糟糕。怎么可能得到一个SurfaceView,它显示CameraPreview和所有一起工作在轮廓模式?

我认为没有必要发布代码,因为我只是使用了API演示中的代码!

非常感谢!

如果你没有在AndroidManifest.xml文件中指定屏幕方向,默认显示方向是横向位置,每次你旋转手机,android将改变获取的图像,以保持图像与手机对齐。因此,您有两个选项:

1.1。在AndroidManifest.xml文件中指定屏幕方向,并设置正确的屏幕方向:

AndroidManifest.xml:

        <activity
        android:label="@string/app_name"
        android:name=".CameraPreview" 
        android:screenOrientation="portrait" >

CameraPreview.java:

       mCamera.setPreviewDisplay(holder);
       mCamera.setDisplayOrientation(90);

AndroidManifest.xml:

        <activity
        android:label="@string/app_name"
        android:name=".CameraPreview" 
        android:screenOrientation="landscape" >

CameraPreview.java:

       mCamera.setPreviewDisplay(holder);
       mCamera.setDisplayOrientation(0);

1.2。不要在AndroidManifest.xml文件中指定屏幕方向,并在每次屏幕旋转时设置正确的屏幕方向:

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
      int rotation = ((Activity)mCtx).getWindowManager().getDefaultDisplay().getRotation();
      int degrees = 0;
      switch (rotation) {
        case Surface.ROTATION_0: degrees = 90; break;
        case Surface.ROTATION_90: degrees = 0; break;
        case Surface.ROTATION_180: degrees = 270; break;
        case Surface.ROTATION_270: degrees = 180; break;
      }
      mCamera.setDisplayOrientation(degrees);
      Camera.Parameters parameters = mCamera.getParameters();
      parameters.setPreviewSize(w, h);
      mCamera.setParameters(parameters);
      mCamera.startPreview();
    }

但是,看起来你已经设计了一个带有按钮等的纵向布局,我认为最好的选择是第一个。

希望能有所帮助,并致以良好的问候。

最新更新