Cómo escuchar el evento de desplazamiento de la vista web
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>
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); p>
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.