Esto debe ser algo sencillo. Hay dos pasos básicos.
1.) Cree un widget al que se le pueda indicar que cargue una imagen programáticamente en lugar de mostrarla automáticamente. Almacene la URL de la imagen para cargar y tenga un método para cargarla.
public class LazyImage extends Image {
private String url;
// Override behavior of base Image constructor to just store the URL.
public LazyImage(String url) {
this.url = url;
}
public void lazyLoad() {
super.setUrl(url);
}
}
Esto puede ser usado de la misma forma que la clase regular Image
, excepto que tendrá que llamar lazyLoad()
para conseguir realmente que aparezca la imagen.
2.) Detecta cuando la imagen es necesaria usando un ScrollPanel
.
No estoy totalmente seguro del código para esto en la parte superior de mi cabeza, pero básicamente se reducirá a comparar la ubicación de la imagen con la posición de desplazamiento del panel de desplazamiento. Si la posición de desplazamiento> = la distancia de la imagen desde la parte superior del panel de desplazamiento, llame al lazyLoad()
y aparecerá la imagen.
No he probado nada de este código, es solo un boceto de algo que debería funcionar. Siéntase libre de hacer preguntas o dar su opinión si funciona/no funciona para usted.
teóricamente esto debería funcionar. Havent intentó prácticamente ... se necesitaba una solución rápidamente, así que usé el plugin jquery lazyload (http://www.appelsiini.net/projects/lazyload) ... pero intentaré esto también ... gracias por la respuesta. – Nachiket
Creo que deberías eliminar el ScrollHandler después de que la imagen se haya cargado. – confile