Disposición de superposición de Android encima de todas las ventanas que recibe toques
He creado una vista que se muestra en la parte superior de todas las aplicaciones y ventanas con el código siguiente:
//These three are our main components. WindowManager wm; LinearLayout ll; WindowManager.LayoutParams ll_lp; //Just a sample layout parameters. wm = (WindowManager) getSystemService(WINDOW_SERVICE); ll_lp = new WindowManager.LayoutParams(); ll_lp.format = PixelFormat.TRANSLUCENT; ll_lp.height = WindowManager.LayoutParams.FILL_PARENT; ll_lp.width = WindowManager.LayoutParams.FILL_PARENT; ll_lp.gravity = Gravity.CLIP_HORIZONTAL | Gravity.TOP; //This one is necessary. ll_lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; //Play around with these two. ll_lp.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; ll_lp.flags = ll_lp.flags | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; //This is our main layout. ll = new LinearLayout(this); ll.setBackgroundColor(android.graphics.Color.argb(50, 255, 255, 255)); ll.setHapticFeedbackEnabled(true); ll.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Toast.makeText(getApplicationContext(), "TOUCHED", Toast.LENGTH_SHORT).show(); return false; } }); //And finally we add what we created to the screen. wm.addView(ll, ll_lp);
Debido a que FLAG_NOT_TOUCHABLE está establecido, sólo muestra la vista pero no recibe ningún evento táctil. La aplicación detrás de la vista recibe todos los eventos táctiles. Sin embargo, si no establezco el indicador, sólo la vista recibe los toques que hacen que la aplicación detrás de él no reciba ninguno.
- Reemplazar fragmento dentro de un ViewPager
- Aplicar una máscara a una sola vista de superposición sin enmascarar toda la actividad
- LAYER_TYPE_SOFTWARE causa que WebView cargue la página en blanco
- Android ExpandableListView no se expande / no se puede hacer clic
- ExpandableListView onExpand siempre desplaza el grupo expandido hacia arriba
¿Hay alguna manera de que la vista y la aplicación detrás de ella reciban toques? He intentado volver falso pero sigue siendo lo mismo.
Cualquier ayuda sería muy apreciada!
- Cómo configurar la imagen en la vista de la imagen en android?
- Diseño de vistas personalizadas
- Android ExpandableListView - establece cierto grupo para no expandible
- ¿Hay una forma de compensar una vista desde el centro en Android?
- Extensible lista-vista de Android, establecer personalizado drawables
- Agregando un niño en un GestureOverlayView en el punto donde toqué en android?
- Widgets de Android: Cómo agregar vistas a RemoteViews en tiempo de ejecución
- Android: ¿Cómo pasar mejor los datos a una vista?
Si no estoy confundiendo, la vista que está en el fondo no está recibiendo eventos táctiles porque su ser filtrada por el sistema para evitar "click jacking" exploits.
Es posible que pueda evitar esta característica del sistema desactivando el filtrado de eventos táctiles para la vista en segundo plano mediante el método View.setFilterTouchesWhenObscured (Boolean) .
Creo que esta biblioteca puede ayudarle en lo que desea https://github.com/pingpongboss/StandOut
- Pros y contras, mantenimiento de referencias estáticas a Typeface para su reutilización a través de diseños?
- Mostrar fecha en la ubicación actual