我有一个GLSurfaceView,它将图像渲染为纹理。我已将GestureDetector附加到GLSurfaceView。当用户点击屏幕时,我想在GLSurfaceView顶部显示线性布局。
目前,当用户点击GLSurfaceView时,线性布局显示但在约2-3秒后自行消失。它偶尔会在屏幕上闪烁一瞬间。所有这些都没有来自用户的任何交互。
对正在发生的事情的任何见解?这是我尝试过的和一些有用的信息。
以下是一些如何创建GLSurfaceView的代码。
glSurfaceView = new GLSurfaceView(context) {
public void surfaceDestroyed(SurfaceHolder holder) {
super.surfaceDestroyed(holder);
Logger.w("Surface Destroyed");
if (sprite != null) {
// readerBitmap =sprite.bitmap;
time = sprite.time;
}
//glSurfaceView.setBackgroundColor(color.black);
if (myHandler != null) {
myHandler.sendEmptyMessage(9);
}
}
};
gestureDetector = new GestureDetector(context, new MyGestureDetector());
glSurfaceView.setOnTouchListener(touchListener);
// set our renderer to be the main renderer with
sprite = new GlRenderer(context,Global.PICTURES.get(Global.currentPictureIndex),myHandler, tempTime);
glSurfaceView.setRenderer(sprite);
glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
TextView tv = (TextView)findViewById(R.id.customTextView1);
tv.setVisibility(View.GONE);
//add to the view
mainLayout.removeView(glSurfaceView);
mainLayout.addView(glSurfaceView, 0);
P.S。这是在Android 4.0上
答案 0 :(得分:0)
当您将渲染模式设置为RENDERMODE_WHEN_DIRTY时,您需要请求或使GLSurfaceView无效以告知它重绘自身。它通常由一个包含请求渲染的循环的线程完成。你在做吗?
注释掉setRenderMode行,看看你是否得到了预期的结果,因为默认情况下不断自我绘制。
希望有所帮助。