jQuery和其他JS框架有许多惰性图像加载插件,代码块。当它在浏览器的可见区域可见时,基本上加载图像。
如何在GWT中实现?我知道我可以在GWT中使用jquery插件,但是正在寻找 native GWT解决方案。
所以,我想做这样的事情。
LazyImage img = new LazyImage("load.gif","original_thumb.png")
scrollContainer.add(img); //scrollContainer is added to ScrollPanel
最佳答案
基本上是Jason的解决方案。除了镜像本身决定何时需要加载镜像外。
class LazyImage extends Image {
private String fUrl;
private ScrollPanel fParent;
private boolean fLoaded;
public LazyImage(String url, ScrollPanel parent) {
fUrl = url;
fParent = parent;
attachHandlers();
}
private void attachHandlers() {
fParent.addScrollHandler(new ScrollHandler() {
@Override
public void onScroll(ScrollEvent event) {
int imageTop = getAbsoluteTop();
int viewport = fParent.getAbsoluteTop() + fParent.getOffsetHeight();
if (imageTop < viewport) {
lazyLoad();
}
}
});
}
@Override
public void setUrl(String url) {
fLoaded = false;
fUrl = url;
}
public void lazyLoad() {
if (!fLoaded) {
super.setUrl(fUrl);
fLoaded = true;
}
}
}