У меня есть 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);
P.S. Это на андроиде 4.0