我有一个将图像渲染为纹理的 GLSurfaceView。我已将 GestureDetector 附加到 GLSurfaceView。当用户点击屏幕时,我想在 GLSurfaceView 顶部显示线性布局。
目前,当用户点击 GLSurfaceView 时,linearlayout 会显示,但随后会在大约 2-3 秒内自行消失。它时不时地会在屏幕上闪烁一瞬间。所有这一切都无需用户进行任何交互。
对正在发生的事情有任何见解吗?这是我尝试过的和一些有用的信息。
- 我的 GLSurfaceView 设置为 Render_When_Dirty 模式,我确保用户点击后不会调用 onDrawFrame 方法。我通过在方法中记录一个语句来知道这一点。
- 我还验证了线性布局的 setVisibility(boolean) 方法没有被恶意调用。
下面是如何创建 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);
PS这是在Android 4.0上