¿Cómo manejar eventos de toque en un fragmento?
Estoy construyendo una interfaz donde necesito procesar eventos táctiles . En particular, sería capaz de permitirles sólo a un área confinada en un fragmento. Para entender mejor el problema, respetar los estándares y el objetivo de mi aplicación, planeé el cajón de navegación, que asume la presencia de muchos fragmentos (en lugar de actividades). Una actividad con eventos táctiles se implementa muy fácilmente, por otro lado he leído en Internet que con los fragmentos puede convertirse en un problema .
Mi aplicación, a nivel arquitectónico, es la siguiente: – MainActivity.java – NavigationDrawer.java – TestFragment.java (para un solo fragmento ahora, a la espera de resolver el problema)
- Manejo del evento de toque Intercept sin extender ViewGroup
- PopupWindow TouchInterceptor no funciona
- Tiempo de aumento de OnLongPress
- Cómo implementar tanto ontouch y también onfling en un mismo listview?
- Android principiante: toque eventos en android gridview
No he encontrado una solución o un tutorial que explique cómo hacerlo bien (o cómo solucionar el problema). Entonces le pregunto, simplificando el problema para " habilitar un evento táctil en un fragmento (getPressure () en este caso) ". A continuación se presentan algunas piezas de código que pueden ayudar a resolver el problema:
TestFragment
public class TestFragment extends Fragment { private static final String ARG_SECTION_NUMBER = "section_number"; public static TestFragment newInstance(int sectionNumber) { TestFragment fragment = new TestFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public TestFragment() {} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_test, container, false); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public boolean onTouchEvent(MotionEvent event) { // Here I want to return the press value (0 to 1) } }
¿Cómo asociar al oyente a todo el fragmento? Y en el caso de un área en particular? Finalmente, ¿cómo puedo devolver el valor de la presión en la pantalla?
Muchas gracias en el consejo! 🙂
- Pase Android NestedScrollView desplazamientos horizontales a un padre Ver
- Usando OnTouchListener y OnLongClickListener interfiere entre sí
- "Presione y mantenga presionado" en Android necesita cambiar estados (selector XML personalizado) usando onTouchListener
- Limitación de Drag de ImageView en Android
- Combinación de combinación de Android :: OnTouchListener && OnClickListener
- Ver sólo el registro de MotionEvent.ACTION_DOWN
- Saltar ImageView mientras arrastra. Los valores de getX () y getY () saltan
- ¿Cómo puedo pasar Touch Listeners a la vista personalizada para arrastrar y soltar?
No estoy seguro si he entendido su problema, pero intentaré contestar esto. Así que para obtener eventos de contacto en el fragmento que haría esto:
-en su fragmento onCreateView:
View view = inflater.inflate(R.layout.fragment_test, container, false); view.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_MOVE){ //do something } return true; } }); //here the rest of your code return view;
Y puede comprobar para diferentes MotionEvents en onTouch, por ejemplo:
MotionEvent.ACTION_DOWN, MotionEvent.ACTION_UP,...