У меня есть GLSurfaceView, который визуализирует изображение как текстуру. Я подключил GestureDetector к GLSurfaceView. Когда пользователь удаляет экран, я хочу отобразить линейный макет поверх GLSurfaceView.Макет поверх GlSurfaceView исчезает и появляется сам по себе
В настоящее время пользователь забирает GLSurfaceView на дисплеи linearlayout, но затем исчезает сам по себе примерно через 2-3 секунды. Время от времени он будет мигать на экране в течение секунды. Все это без каких-либо взаимодействий с пользователем.
Любое понимание того, что происходит? Вот что я пробовал и какую-то полезную информацию.
- В моем GLSurfaceView установлен режим Render_When_Dirty, и я гарантировал, что после отладки пользователя нет вызовов метода onDrawFrame. Я знаю это, регистрируя инструкцию в методе.
- Я также проверил, что метод setVisibility (boolean) метода linearlayout не злонамеренно называется.
Вот какой код создается 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