Эффективный способ запросить сенсорный фокус от WindowManager? - PullRequest
0 голосов
/ 21 августа 2011

Я создал два представления для FrameLayout и запросил фокус на секунду.Когда я запускаю действие, сенсорные события на некоторое время зависают, а затем переходят в мой вид GL.Я думаю, что это занимает случайное время (обычно 5-10 секунд).Есть ли способ очистить очередь событий?

У меня есть GLSurfaceView, и я хочу нарисовать оверлей SurfaceView над ним.SurfaceView должен быть нарисован поверх GLSurfaceView, но входные события должны быть доставлены на поверхность opengl.Это моя деятельность,

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGLView= new SFView(this);
    mCanvas= new SFCanvas(this);

    mLayout=new FrameLayout(this);
    mLayout.addView(mCanvas);
    mLayout.addView(mGLView);

    setContentView(mLayout);


    mGLView.post(new Runnable() {
        public void run() {
        while( mGLView.isFocused() == false )
           {
                mGLView.requestFocus();
           }
        }
    });
}

и мой Logcat выглядит следующим образом.

KeyInputQueue        Enqueueing touch event1
KeyInputQueue        Enqueueing touch event0
KeyInputQueue        Enqueueing touch event1
KeyInputQueue        Enqueueing touch event0
KeyInputQueue        Enqueueing touch event1
KeyInputQueue        Enqueueing touch event0
..
WindowManager        Delivering pointer 1 > Window{com.myapplication/com.myapplication.activity}
WindowManager        Delivering pointer 0 > Window{com.myapplication/com.myapplication.activity}
WindowManager        Delivering pointer 1 > Window{com.myapplication/com.myapplication.activity}
KeyInputQueue        Enqueueing touch event0
WindowManager        Delivering pointer 0 > Window{com.myapplication/com.myapplication.activity}
KeyInputQueue        Enqueueing touch event1
WindowManager        Delivering pointer 1 > Window{com.myapplication/com.myapplication.activity}
..

Я также пробовал один запрос requestFocus (), но он дал тот же эффект. Приложение перестает отвечать на запросы в первые секунды.Где я ошибся?Спасибо за все предложения.Я прошу прощения за неправильное объяснение и за мой язык.Я новичок для платформы Android, и этот сайт.

1 Ответ

0 голосов
/ 22 августа 2011

Я нашел ошибку, которую сделал.Я загружал ресурсы в конструктор представлений.Он блокировал Android, чтобы делать вещи.Я перенес загрузку ресурсов в дочерний поток, и проблема немного исправлена.

...