Chciałbym stworzyć aplikację podobną do Swapps. Próbuję wyświetlić przycisk na górze dowolnego ekranu, który powinien pojawić się tylko na akcji przesuwającej. Próbowałem z poniższym kodemNie można uzyskać zdarzenia Touch dla TYPE_SYSTEM_OVERLAY
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.type =WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
params.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
params.format =PixelFormat.TRANSLUCENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
parentlay = new LinearLayout(this);
mybt = new Button(getApplicationContext());
bt.setText("Click to Go");
parentlay.setBackgroundColor(Color.TRANSPARENT);
parentlay.setHapticFeedbackEnabled(true);
parentlay.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// event.getAction() prints 4 and not able to get up or down event
}
});
windowmanager.addView(parentlay, params);
próbuję wyświetlić przycisk, gdy użytkownik przejeżdża od lewej do prawej poprzez uchwycenie tego zdarzenia i robi
parentlay.addView(bt);
i usunąć widok, gdy użytkownik przejeżdża od prawej do lewej strony przez
parentlay.removeView(bt);
Jak wspomniano, nie można uzyskać zdarzeń ruchu, o ile nie zmieniono typu TYPE_SYSTEM_ALERT, ale ten komunikat zamroził cały ekran i nie mógł kliknąć przycisku powrotu lub przycisku strony głównej, czy jest jakakolwiek alternatywna metoda wykonania tego.
Właśnie próbowałem poniżej modyfikacji
params.type =WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
|WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
params.width = WindowManager.LayoutParams.MATCH_PARENT;
ale nie mogłem kliknąć przycisk pod spodem, może być jej powodu MATCH_PARTENT ale jeśli mogę ustawić go wrap_content potem nie mogę dostać kliknij wydarzenia.
Dzięki za odpowiedź, muszę dodać widok przez akcję machnięcia lub dowolne zdarzenie akcji, takie jak to, co zrobiły swapy. Nie uruchomiłem mojej aplikacji.i usunąć widok przez zdarzenie akcji – ganesh
ok jak na razie i mogę zaakceptować odpowiedź DjHacktor, stąd jest to całkiem blisko moich wymagań. – ganesh
Dziękuję bardzo! – kord