Red de conocimiento del abogados - Ley de patentes - Android resuelve el conflicto deslizante de webView anidado en viewPager

Android resuelve el conflicto deslizante de webView anidado en viewPager

Me encontré con una situación en el trabajo. Hay un webView anidado en uno de los elementos de viewPager que se puede deslizar horizontalmente, y también hay un componente similar a viewPager que se puede deslizar horizontalmente en este webView, porque no podemos. controle los componentes H5 en webView, por lo que se producirán conflictos de deslizamiento. El fenómeno es que los componentes H5 en webView no pueden deslizarse. Por ejemplo, la imagen a continuación

Después de un tiempo de búsqueda, el autor tomó prestada la solución del artículo "Solución al conflicto deslizante entre Viewpager y webview" y la mejoró para que fuera más fácil de manejar.

Primero, asegurémonos de que el conflicto deslizante sea una cuestión del mecanismo de distribución de eventos. La solución es interceptar y distribuir eventos cuando sea necesario. Puede utilizar el siguiente método

Cuando es verdadero, significa que el control principal (es decir, viewPager) no intercepta el evento y hace clic. El evento es manejado por el control secundario (es decir, webView) para procesar; de lo contrario, cuando es falso, el control principal intercepta el evento de clic y el control secundario no puede responder al evento de clic.

En este punto necesitamos que Android nativo interactúe con JS para notificarnos cuándo interceptar eventos y cuándo no interceptarlos. En primer lugar, debemos discutir el nombre del método y los parámetros con nuestros socios de H5. En H5, podemos monitorear si se hace clic o se desliza en la imagen del carrusel. Los socios de H5 pueden juzgar en función del valor de monitoreo. Al hacer clic o deslizarse, al reproducir la imagen, el parámetro de llamada al método nativo de Android es verdadero y el lado de Android intercepta el evento. De lo contrario, cuando no hay clic ni deslizamiento, el parámetro del método de llamada es falso.

Método de interacción:

Si no comprende el método de interacción entre Android nativo y H5, puede leer mi artículo

En este punto, después de obtener los parámetros, podemos interceptar el evento.

De esta manera, se puede procesar la distribución del evento, pero lo que hay que tener en cuenta aquí es que el método para interceptar el evento wb.requestDisallowInterceptTouchEvent(isIntercept debe ser Solo puede tener efecto si está escrito en el evento Touch, pero no donde se inicializa la vista web.

Ok, creo que este método es más simple que el lado H5 para medir la posición del carrusel y luego informarle al lado de Android, y el lado de Android luego determina la posición para interceptar el evento. Por supuesto, esto es solo un pensamiento personal. Todavía tengo que agradecer a los grandes que tomaron prestado el artículo. Después de todo, estoy sobre los hombros de gigantes.