android - 表面 View + glsurfaceview + 框架布局

标签 android surfaceview

我是 java 和 OpenGL 的新手。

我正在尝试让相机预览屏幕能够 同时显示 3d 对象。已经在 api 演示,我想将示例的代码组合在 api演示就足够了。但不知何故它不起作用。强制我 在启动时关闭并且错误被称为空指针 异常(exception)。有人可以和我分享我哪里出了问题以及如何解决 从那里开始。如图所示,我是如何组合代码的 下面:

我的概览.xml


<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <android.opengl.GLSurfaceView 
            android:id="@+id/cubes" 
            android:orientation="horizontal" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"/> 
    <SurfaceView 
            android:id="@+id/camera" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"/> 
</FrameLayout>

我的概览.java


import android.app.Activity; 
import android.os.Bundle; 
import android.view.SurfaceView; 
import android.view.Window; 
public class MyOverView extends Activity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       // Hide the window title. 
       requestWindowFeature(Window.FEATURE_NO_TITLE); 
       // camera view as the background 
       SurfaceView cameraView = (SurfaceView) findViewById(R.id.camera); 
       cameraView = new CameraView(this); 
       // visual of both cubes 
       GLSurfaceView cubesView = (GLSurfaceView) findViewById(R.id.cubes); 
       cubesView = new GLSurfaceView(this); 
       cubesView.setRenderer(new CubeRenderer(false)); 
       // set view 
       setContentView(R.layout.myoverview); 
    } 
}

GLSurfaceView.java


import android.content.Context; 
class GLSurfaceView extends android.opengl.GLSurfaceView { 
    public GLSurfaceView(Context context) { 
            super(context); 
    } 
} 

注意:

  • 我没有列出其余文件,因为它们只是 api演示。 cameraView 引用 camerapreview.java 示例 而 CubeRenderer 指的是 CubeRenderer.java 和 Cube.java 例子。任何帮助,将不胜感激。

  • 抱歉,没有意识到由于格式错误导致编码不正确。

最佳答案

使用 .xml 时出现空指针异常的原因是因为您实际上是在 Java 代码中创建新 View .. 而不是使用 .xml 文件中您可能已传入属性的 View (如果你确实传递了属性......)..新 View 显然会有一个空值..因此抛出一个空指针异常......例如 -

cubesView = new GLSurfaceView(this);

如果您已经在包含 FrameLayout 的 .xml 文件中创建了 View ,则代码中实际上不需要。

关于android - 表面 View + glsurfaceview + 框架布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2108600/

相关文章:

android - 用于相机预览的隐形 SurfaceView

android - 使用 Android 上的搜索 View 小部件创建搜索界面以在同一 Activity 中的 ListView 中显示结果

java - 对列表中的所有项目执行一个任务,然后在 RxJava 中执行另一个任务

java - 测试第 3 方 Java SDK 的静态方法

android - 生成的 ListView 应用程序的 Intent 停止工作

android - 在 SurfaceView 加载相机预览时显示我的布局

android - 如何在 surfaceview android 中捕获图像后重新加载相机?

android - DrawerLayout 不适用于 Android 4.4 和 SurfaceView

android - Surfaceview 闪烁

Android 和支持多屏幕布局