Red de conocimiento informático - Material del sitio web - Cómo escuchar el evento de desplazamiento de la vista web

Cómo escuchar el evento de desplazamiento de la vista web

Cuando el contenido de la vista de red se desplaza una cierta distancia (esta distancia no debe ser demasiado grande), la barra de herramientas y la animación del botón de acción flotante desaparecerán.

Para lograr este efecto, necesitamos escuchar el evento de desplazamiento de WebView y obtener al menos dos datos:

Desplazamiento de desplazamiento

Dirección de desplazamiento

p>

Pero WebView no proporciona un oyente como setOnScrollChangedListener. El oyente del oyente solo proporciona los siguientes métodos de protección:

protected void onScrollChanged(final int l, final int t, final int oldl,

final int oldt) {

Por lo tanto, necesitamos escribir nuestra propia clase, que hereda de webview, anula este método y proporciona una interfaz externa.

Personalizar WebView

paquete com.jcodecraeer.mobile.view;

importar android.content.Context;

importar android.util .AttributeSet;

importar android.webkit.WebView;

/**

* Creado por jianghejie el 7/15/16.

*/

La clase pública ObservableWebView extiende WebView {

OnScrollChangedCallback privado mOnScrollChangedCallback;

ObservableWebView público (contexto de contexto final) {

p>

super(contexto);

}

public ObservableWebView(contexto de contexto final, atributos finales de AttributeSet) {

super (contexto, atributos) ;onScrollChanged(l, t, oldl, oldt);

if (mOnScrollChangedCallback != null) {

mOnScrollChangedCallback.onScroll(l - oldl, t - oldt );

}

}

public OnScrollChangedCallback getOnScrollChangedCallback() {

Devuelve mOnScrollChangedCallback

}

public void setOnScrollChangedCallback(

final OnScrollChangedCallback onScrollChangedCallback) {

mOnScrollChangedCallback = onScrollChangedCallback

}

/* *

* Implante en la actividad/fragmento/vista que desea escuchar la vista web

*/

interfaz estática pública OnScrollChangedCallback {

public void onScroll( int dx, int dy);

}

}

Aquí definimos una interfaz OnScrollChangedCallback, donde dx y dy son las x. y dy se utilizan durante el desplazamiento respectivamente. es el desplazamiento en las direcciones xey al desplazarse.

El desplazamiento se calcula a través de los cuatro parámetros del método onScrollChanged:

mOnScrollChangedCallback.onScroll(l - oldl, t - oldt);

Ahora que a Se ha escrito una vista web personalizada que proporciona parámetros de desplazamiento desde el exterior, veamos cómo usarla desde el exterior:

wv = (ObservableWebView) findViewById(R.id.scorllableWebview)id .scorllableWebview);

wv.setOnScrollChangedCallback(new OnScrollChangedCallback(){

public void onScroll(int dx, int dy){

//Aquí hacemos lo que queremos en función del parámetros dx y dy

}

});

Por supuesto, se podría decir. ¿Por qué no expones simplemente los cuatro parámetros de onScrollChanged? Esto funciona, pero en nuestro proyecto, dx y dy funcionarán mejor, así que lo hice. Depende totalmente de usted decidir qué datos exponer.

En el método CoordinatorLayout, la barra de herramientas superior sale sin animación y NestedScrollView solo se mueve cuando comienza el desplazamiento.

Si deseamos agregar otra barra de menú de diseño normal en la parte inferior y también deseamos salir al desplazarnos, esto parece imposible.