- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试制作我的第一个 Android 应用程序。我被这个奇怪的问题困扰了。过去有很多人遇到过同样的问题(例如 here 、 here 、 here 和很多其他地方),但似乎没有一个解决方案对我有用。
我的问题是,如果我设置像 setContentView(R.layout.MainActivity)
这样的布局文件,应用程序会在此函数上崩溃,但如果我直接设置 GLSurfaceView
作为内容 View 应用程序工作正好。我希望在同一屏幕上有一个 ListView
和 GLSurfaceView
这就是我尝试将其添加到 XML 中的原因。
这是我的布局文件
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.camerafilters.CameraGLSurfaceView
android:id="@+id/CameraGLSurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<!-- <ListView
android:id="@+id/ShaderList"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
-->
</LinearLayout>
这是主要 Activity 的相关部分。请注意,CameraGLSurfaceView
是一个内部类。
public class CameraMainActivity extends Activity implements
SurfaceTexture.OnFrameAvailableListener
{
private CameraGLSurfaceView _cameraGLView;
/**
* Captures frames from an image stream as an OpenGL ES texture. The image stream may come from either camera preview or video decode.
* A SurfaceTexture may be used in place of a SurfaceHolder when specifying the output destination of a Camera or MediaPlayer object
*/
private SurfaceTexture _surface;
CameraGLRenderer _renderer;
private Camera _camera;
private ListView _shaderListView;
class CameraGLSurfaceView extends GLSurfaceView
{
CameraGLRenderer renderer;
public CameraGLSurfaceView(Context context, AttributeSet attrs)
{
super(context, attrs);
// Create an OpenGL ES 2.0 context
setEGLContextClientVersion(2);
// Set the Renderer for drawing on the GLSurfaceView
renderer = new CameraGLRenderer((CameraMainActivity)context);
setRenderer(renderer);
// Render the view only when there is a change in the drawing data
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
public CameraGLRenderer getRenderer()
{
return renderer;
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
_cameraGLView = new CameraGLSurfaceView(this, null);
// Create a GLSurfaceView instance and set it
// as the ContentView for this Activity.
setContentView(R.layout.activity_main);
_cameraGLView = (CameraGLSurfaceView) findViewById(R.id.CameraGLSurfaceView);
_renderer = _cameraGLView.getRenderer();
}
有什么地方我错了吗?
最佳答案
首先,查看 logcat 中的异常堆栈跟踪以找到确切的问题。
然后,猜测问题是 XML 中指定的 View 无法实例化:您的内部类需要是 public static
并且您需要在 XML 中正确引用它,例如
com.example.camerafilters.CameraMainActivity$CameraGLSurfaceView
尽管将其作为单独的类而不是内部类更清晰。
关于java - setContentView() 与 GLSurfaceView 一起使用时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336444/
我有一个增强现实应用程序,它显示相机 View 和一个带有多边形的 GLSurfaceView,该多边形可以在触摸屏幕时旋转。我的应用程序的主要布局是 FrameLayout。 frameLayout
我对 EGL 感到困惑。 我的 GLSurfaceView 创建了一个 EGLContext。现在我创建一个共享上下文。现在我需要使用 EGLExtension。 我必须使用的方法被称为(>=API1
是否可以在 GLSurfaceView 上添加 LinearLayout?如何在 GLSurfaceView 上叠加 LinearLayout?也许 GLSurfaceView 是 Game play
请,有人可以提供使用带有 GLSurfaceView 的 CameraX 库的好例子,找不到任何信息。 最佳答案 不存在将 CameraX 与自定义表面/TextureView 一起使用的文档。在 C
我尝试在我的 GLSurfaceView 上使用 setRotation(),但 View 似乎没有围绕屏幕中心的枢轴旋转。代码如下: class MyGLSurfaceView extends GL
我正在尝试运行 android 示例 http://developer.android.com/training/graphics/opengl/index.html 我必须向 View 添加一些控件
我有 GLSurfaceView 和顶部带有按钮的小型 LinearLayout,代表菜单。此布局默认隐藏,并在用户点击某个按钮时从屏幕底部(通过 TranslateAnimation)显示。 (也尝
我在我的应用程序中使用开放式 GL。我还在我的 Activity 中创建了一个操作栏,将其 View 设置为表面 View 。但是我无法获得操作栏。它在我的表面后面吗?我不知道。我只是无法得到它。我当
实际上,我有一个项目正在使用 GLSurfaceView。此时此组件作为主控件放置在整个屏幕上。在此配置中,我能够正确处理绘图功能。 在下一步中,我想更改 GLSurfaceView 的大小和位置。我
根据标题,从暂停状态恢复后 GLSurfaceView 为空白。 Renderer的onSurfaceCreated、onSurfaceChanged和onDrawFrame在恢复后被调用,但是屏幕还
我有一个带有可绘制对象作为背景的 GLSurfaceView,但是在没有 surfaceView.setZOrderOnTop(true) 的情况下渲染时只有背景可见 我需要避免使用 setZOrde
我正在尝试在 Android 上使用 GLSurfaceView 并遇到问题。我正在使用 this OpenGL article 中的代码.它运行良好,但当我旋转设备时,我注意到分配的内存在增长。 所
我有一个 GLSurfaceView,我在其中使用 OpenGL 显示一些动画。 我现在想给这个 View 添加一个按钮。这是如何实现的? 不涉及xml布局能不能做到? 最佳答案 您可以手动构建 Vi
我正在做一个项目,我们需要记录渲染的 OpenGL 表面。 (例如,如果我们使用 GLsurfaceView,我们需要记录表面以及来自 MIC 的音频) 目前我通过将视频源设置为 VIDEO_SOUR
我尝试使用 GLSurfaceView 进行渲染,并通过 docs我设置格式: getHolder().setFormat(PixelFormat.TRANSLUCENT); 我使用的是 GLSurf
我的程序在两个 Activity 之间切换,每个 Activity 都会膨胀一个使用 VBO 的派生 GLSurfaceView。 在两个Activity之间来回切换几次后,程序崩溃并抛出如下异常:
我正在尝试在 android 上开始使用 opengl。 我找到的所有教程都假定 GLSurfaceView 可用。当我尝试编译我的项目时,我得到了 GLSurfaceView cannot be r
我目前正在开发一个 Android 应用程序,我希望在单击按钮时重新启动 glSurfaceView。即当单击按钮时,应再次将图像读入程序并重置所有纹理。我应该怎么办?谢谢。 最佳答案 听起来您只想在
虽然我发现了一个关于 Sharing the GLES20 context... 的问题,我觉得我的情况比较宽泛一些。 我有两个 GLSurfaceView 在 FrameLayout 中彼此分层。
我正在尝试使用 MediaCodec 播放视频并通过 GLSurfaceView 呈现它,以便我可以进行帧回调。 package com.alwaysinnovating.aimediacodec;
我是一名优秀的程序员,十分优秀!