我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在
大图显示页面,中包含了一个图片画廊,同时当前大图为刚刚我们点击的那张图片。现在我们看看在Android中如何实现类似的效果:
首先,我们需要有一个控件来显示缩略图,这里没有什么比GridView更加合适了。
配置文件如下:
对于GridView中每一项是一张缩略图,我们需要继承BaseAdapter,实现自己的一个GridImageAdapter,代码:
然后,我们就可以在Activity中通过查询MediaStore的多媒体图片库来查询所有的图片的缩略图,缩略图所在的位置是:
MediaStore.Images.Thumbnails。Activity代码如下:
注意到,我们记录了,所有缩略图对应的id号,和当前的用户选择的位置,然后通过Intent传递到第二个展示界面。第二个界面的布局文件如下:我们用了一个Gallery和一个ImageButton来实现
然后,对应的Activity如下:
可以看到,当用户点击Gallery中某一项时,触发onItemClick事件,在其中,我们通过根据该缩略图对应的Image_ID来从MediaStore.Images.Media中查询该缩略图对应的大图。并在ImageButton中显示。
这里当图片很多时,可能会出现内存溢出,为了避免这种情况,可以更加Gallery的特点,使用缓存。保存当前可见的缩略图的前三个到后三个。其余的全部recycle。当用户点击Gallery的时候,在判断当前的位置,如果大于或小于某个值时,则重新更新缓存。这样保证内存中的缩略图的个数总是6+Gallery.getLastVisiblePosition-Gallery.getFirstVisiblePosition个。其实这就是浮动缓存窗口,一个固定大小窗口在整个坐标(全部缩略图)上游动。这里没有实现,以后待续。
同时,你可能已经注意到,程序中使用到了一个BitmapUtils类,这个类是封装了一系列对查询图片,并将其解析为Bitmap的类。
代码如下:
这样就实现了,类似百度图片浏览的效果。效果图如下:


分享到:
相关推荐
在这个项目中,我们看到的"仿百度桌面转盘小工具"是针对Android平台的一个自定义视图组件,它模拟了百度桌面应用中的交互式转盘功能。 项目中包含的文件有: 1. `javaapk.com_0000.png` 和 `javaapk....
11. **多媒体支持**: 实现图片、音频、视频等多媒体消息的发送和接收,可能涉及文件上传到云端服务器,以及多媒体内容的压缩和解码。 12. **自定义动画和特效**: 添加滑动删除消息、气泡动画、消息发送状态显示等,...
7. **定位服务**:实现类似微信的共享位置功能,需要用到Android的Location API,可能结合高德、百度等地图SDK。 8. **权限管理**:随着Android系统权限模型的变更,开发者需要理解和适配运行时权限,确保应用在...
同时,为了实现语音、图片、视频等多媒体消息的发送,需要处理文件上传下载,这可能涉及到文件IO和流操作。 最后,第三方jar文件的使用意味着开发者借助了一些预封装的库,例如用于网络通信的第三方库(如Volley、...
它提供了一套丰富的类库,用于构建图形用户界面、网络通信、数据库连接等功能,支持Windows、Linux、macOS、Android等操作系统。Qt的设计理念是“一次编写,到处运行”。 【音乐播放器核心功能】 1. **媒体库管理*...
在Android开发领域,源码是学习和提升技术的重要资源。以下是一些从提供的链接中提炼出的Android应用源码及其涉及的关键知识点: 1. **高仿点心桌面皮肤源码**:这是一款模仿知名桌面应用“点心桌面”的皮肤设计,...