近段时间在弄GWT这一块,开发中遇到的一些不错的方法或者技巧,在此做个分享和记录,有不同见解可发表意见  互相切磋。

  在web开发中,必然涉及到网页中的图片,本地浏览网页,要下载在服务器端的图片,然后才能正常浏览。那么浏览器从服务器上下载资源时,时间都耗在TCP/IP的连接,然后服务器还要准备资源。如果一个网页中有几十甚至上百张图片的话,其中消耗的时间可想而知。在普通的html网页中,我们可以把所有的一些常用图标放在一张图片中,然后通过"background-positon:x y"来定位,我们称之为"CSS Sprite"。但这确实是一件费力费时的事,要事先计算好每个图片的坐标。

下图是亚马逊的图标的一部分:

  

  在GWT中也时常要引用图片,它也提供了这样的方法,我称之为GWT的"CSS Sprite",不过它实现比较简单,不用把图片合并一张图片然后自己计算坐标。它使用ClientBundle接口,借助它的注解功能实现。(本人使用的是GWT2.5,之前使用ImageBundle可以,后来发现该类已经@Deprecated了)

  要是有ClientBundle接口,首先需要在gwt.xml文件中加入如下代码:

  

 <inherits name="com.google.gwt.resources.Resources" />

  然后写一个接口继承ClientBundle:

  

 import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource; public interface MyImageBundle extends ClientBundle {
@Source("201.png")
ImageResource upicon(); @Source("202.png")
ImageResource downicon();
}

其中5行与8行声明使用的图片名称,此处只写名称是因为该图片和java类放在一个文件夹下,如果放在其他位置,需要加入对应的地址。

6行与8行声明两个方法,返回类型是ImageResource,根据Google官方文档,查到可以返回类型较多,有TextResource可用于I18N,DataResource用于返回对应数据资源,ExternalTextResource和TextResource一样,返回txt文档,只不过前者是异步获取,返回一个方法,CssResource用于返回css文件,关于更多方法,详细说明可以参照文档:http://www.gwtproject.org/doc/latest/DevGuideClientBundle.html

然后在我们的GWT项目的入口类里添加控件,并把图片添加进去:

 public class Test implements EntryPoint {

     private final MyImageBundle imgBundle = GWT.create(MyImageBundle.class);
/**
* This is the entry point method.
*/
private Image firImg;
private Image lasImg;
public void onModuleLoad() {
RootPanel rootPanel = RootPanel.get();
VerticalPanel panel = new VerticalPanel();
panel.setWidth("700px");
SimplePanel simple = new SimplePanel();
SimplePanel simple2 = new SimplePanel(); firImg = new Image(imgBundle.downicon());//获取图片资源
lasImg = new Image(imgBundle.upicon()); simple.add(firImg);
simple2.setWidget(lasImg);
panel.add(simple);
panel.add(simple2);
rootPanel.add(panel);
}
}

第三行是通过GWT.create()方法获取该类。第16和第17行通过该类写的方法,获取到对应的图片。

最后 我们在eclipse中开始编译项目。在"war-项目名"目录下,会生成类似于"74EBE333D8BEBF96EA4673E8E087D621.cache.png"这样的一张名称很"crazy"的图片,打开后,会发现是刚才那两张图片合并在一起的,就是这么神奇!

GWT 中实现“CSS Sprite”的更多相关文章

  1. css sprite 调整大张图片中小图标的大小

    直接说解决方法: 假设一张拼合好的大图大小是:900 x 1000 px (如上图) 现在想取图中左上角的河马图标,并缩小图标的大小. 正常取图: .sprite { background: url( ...

  2. css sprite,css雪碧图生成工具V3.0更新

    V3.0主要改进 1.增加了单独添加单张图片以及删除单张图片的功能 2.增加了生成.sprite文件用以保存雪碧图信息 3.增加了打开.sprite文件功能 什么是css sprite CSS spr ...

  3. CSS Sprite雪碧图应用

    在写网页过程中,会遇到这种需要使用多个小图标: 如上图中的「女装」文字左边的图标.容易想到的解决方法是为每张图片加入<img>标签,但这样做会增加HTTP请求数量,影响网站加载速度.比这更 ...

  4. CSS Sprite 图标

    HTML <body> <!-- ul.sprite>li*5>s.s-icon+a{CSS Sprite} --> <!-- 以上是Sublime Text ...

  5. CSS Sprite 雪碧图制作

    CSS Sprite 雪碧图,简单来说就是: 为了提高网页的性能,减少加载次数,将一些不会经常随网站内容变化的小图标,集中放在一张大图上,将该图应作为background-image 嵌入页面中,在需 ...

  6. CSS Sprite的优缺点分析

    目前大多数的开发人员对这个技术都有相当地掌握,也有很多关于它的教程和文章.几乎所有的文章中都宣称设计师和开发人员都应该使用 CSS sprite 来减少 HTTP 请求数,并且节省一些流量.这个技术被 ...

  7. gwt中java与js的相互调用

    1. java通过jsni调用内部js Button button = new Button("java调用内部jsni的js方法"); button.addClickHandle ...

  8. GWT中实现跳转及不同entrypoint怎么互相访问

    怎么跳转? 跳转这个概念这里指的是从一个web页面跳转到另一个web页面,如果我们使用gwt来开发web,很自然的我们会想到怎么从一个gwt做的页面跳转到另一个gwt做的页面. 但从网上的gwt例子来 ...

  9. css雪碧(CSS Sprite)和css3过渡效果综合应用

    在网页中我们经常可以看到,有些图片在鼠标经过的时候,有一个上下或左右的滑动效果,很实用页很方便,今天正好用到,拿来和大家分享一下,有什么不对或意见欢迎指正. html部分如下,这里本来打算用jq来着, ...

随机推荐

  1. jQuery滑动杆打分插件

    在线演示 本地下载

  2. 记录python面试题

    闲来无事,记录一下曾经以及深刻的面试题 记录一下我记忆比较深的面试题,以后若用到python相关还能细细把玩 搜狐面试题: 一.写一个缓存优化策略 解答:这个题主要考察对lru_cache的理解,所以 ...

  3. Plist文件与数据解析

    综述 初步阶段当我们做个需要点数据的练习时(比如购物商品展示),我们可能是将数据直接写在代码中,比如说定义一个字符串数组或存放字典的数组.但这其实并不是一种合理的做法.因为如果当数据修改的时候,就要经 ...

  4. Jsp&Servlet实现读取本地图片并展示

    在Web开发中图片的读取和展示是一个很常见的功能,实现的过程大致也都一样(包括在各种框架中--)!接下来用流的方式来实现图片的展示 1. 创建Servlet,实现读取,请求方式使用get请求:   p ...

  5. gzip: stdin: unexpected end of file tar: Unexpected EOF in archive

    1.问题描述: 今天解压tar包遇到这样一个问题 使用命令:tar -zxvf  xxxxx.tar.gz gzip: stdin: unexpected end of filetar: Unexpe ...

  6. ThinkPHP模版时间显示

    <!-- 如果有日期输出,即$data.time不为空且不为0,则格式化时间戳,否则默认当前时间戳,并格式化成日期格式 --> {$data.time|default=time()|dat ...

  7. YARN中的失败分析

    YARN中的失败分析 对于在YARN中运行的MapReduce程序,需要考虑以下几种实体的失败任务.application master.节点管理器.资源管理器 1. 任务运行失败 任务运行失败类似于 ...

  8. 分布式技术 webservice

    web service 是一个平台独立的.低耦合的.自包含的.基于编程的web的应用程序,可使用开发的XML(标准通用标记语言下的一个字表)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...

  9. javascript 时间日期处理相加相减

    var d = new Date("2008/04/15"); d.setMonth(d.getMonth() + 1 + 1);//加一个月,同理,可以加一天:getDate() ...

  10. select2 使用

    <link href="/plugin/select2/css/select2.min.css" rel="stylesheet" /> <s ...