`

Android多媒体学习十一:实现仿百度图片查看功能

阅读更多

我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在

大图显示页面,中包含了一个图片画廊,同时当前大图为刚刚我们点击的那张图片。现在我们看看在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. **图片选择器**: 微信的图片选择功能允许用户从手机相册中选取多张图片。在...

    Android高仿微信朋友圈图片查看,可放大,左右滑动

    在Android开发中,实现类似微信朋友圈的图片查看功能是一项常见的需求。这个功能允许用户点击图片后进入一个全屏模式,可以放大、缩小图片,并通过左右滑动切换到其他图片。以下将详细介绍如何实现这一功能。 首先...

    android仿携程客户端界面实现

    在Android开发中,仿携程客户端界面的实现是一个常见的练习,旨在提升开发者对于UI设计和用户体验的理解。这个项目可能包括了多个模块,如首页、酒店预订、机票查询、旅游攻略等,涉及到了Android SDK中的多种技术和...

    Android studio仿美团app

    本项目旨在通过Android Studio来模仿美团App的功能,包括用户注册与登录、商品收藏、用户评价以及订单管理等核心功能,从而帮助开发者了解如何将这些常见的应用特性实现于实际的Android开发中。 首先,让我们深入...

    android点击查看大图,ViewPager实现左右滑动切换、缩放图片

    这样,开发者只需要两行代码就能快速实现查看大图并支持滑动和缩放的功能,大大提高了开发效率。 以上就是使用`ViewPager`和手势操作实现Android查看大图并支持图片缩放的关键技术点。通过理解这些原理和实践,...

    android多媒体文件整合处理播放,录像、录音、照相、涂鸦、图片调节,动画效果等功能。

    这个压缩包文件提供了实现这些功能的源代码,适合开发者学习和参考,同时也包含了安装说明和安装文件,以确保在Android 2.1及以上版本的设备上顺利运行。 1. **多媒体播放**:Android提供了MediaPlayer类,用于播放...

    Android 封装好的录音实现方法、仿微信语音、麦克风录音、发送语音,附带源码及apk

    在Android平台上,录音功能是许多应用的...总的来说,通过学习和理解这套封装好的录音实现,开发者不仅可以快速地在自己的项目中集成录音功能,还能了解到Android多媒体处理的底层机制,为更复杂的音频操作打下基础。

    Android图片滚动,加入自动播放功能,使用自定义属性实现,霸气十足demo

    在Android开发中,图片滚动和自动播放功能是常见的需求,特别是在设计新闻轮播、广告滑动等场景。本文将深入探讨如何使用自定义控件和自定义属性来实现这一功能,以`SlidingViewSwitcher`为例进行讲解。 首先,...

    Android 超高仿微信图片选择器完整实例源码下载

    在Android开发中,创建一个与微信图片选择器类似的组件是一个...以上就是Android超高仿微信图片选择器实例源码中涉及的关键知识点,通过学习和理解这些内容,开发者可以创建出功能完备、用户体验良好的图片选择功能。

    android 一个图片浏览器的实现。

    总结来说,"GalleryDemo"项目展示了如何在Android平台上构建一个功能完备的图片浏览器,包括使用自定义视图或现有组件来实现滑动和缩放,以及应用各种图片加载和手势处理技术。对于Android开发者来说,理解和实现...

    android 播放局域网共享多媒体文件

    要实现这一功能,开发者需要理解Android多媒体框架、网络编程以及文件系统操作等多个方面的知识。以下将详细讲解如何在Android应用中实现这一功能。 首先,了解Android多媒体框架至关重要。Android提供了一个强大的...

    Android仿淘宝Demo

    此项目是仿淘宝做的一个Demo应用,只作为技术学习使用,不做任何商业用途,请勿使用此项目进行任何形式的商业活动。 下面是本项目中主要实现的功能: 1:商品的基本展示 2:二维码扫描 3:刮刮乐功能 4:购物车...

    Android仿百度贴吧TAB选项卡菜单和悬浮式顶部效果

    MyTitleBar源代码,在Android定义Tab选项卡,实现了仿百度贴吧中的悬浮顶部和底部的标题栏效果,项目中含:源码+效果图+项目结构图,很不错的Android界面设计效果,代码中ISIBLE:0的意思是可见的;INVISIBILITY:4 ...

    android 仿微信语音聊天demo

    综上所述,这个“android 仿微信语音聊天demo”涵盖了Android UI设计、多媒体处理、文件操作等多个核心知识点,对于提升Android开发者在即时通讯领域的技能有着极大的帮助。通过深入研究和实践这个Demo,开发者可以...

    Android仿微信图片选择器

    其中,"Android仿微信图片选择器"是一项常见的需求,主要用于实现用户在应用内选择图片的功能,通常用于发送朋友圈、发表状态或者进行聊天时发送图片。这个功能的设计和实现涉及了多个Android开发的技术点,包括文件...

    Android 完美实现图片圆角和圆形

    8. **XML布局支持**: 除了自定义View,还可以通过在布局XML文件中使用`android:background`属性配合`GradientDrawable`来实现圆角效果。例如: ```xml android:layout_width="wrap_content" android:layout_...

    Android 高仿微信实时聊天 基于百度云推送

    通过这个实例,开发者可以学习到如何结合百度云推送服务和Android SDK实现一个实时聊天应用,并了解Android IM系统的关键组件和工作原理。同时,这个过程也会涉及到Android应用的生命周期管理、多线程编程、数据持久...

    Android调用百度地图API实现定位

    在Android开发中,集成百度地图API来实现定位功能是一项常见的任务。这涉及到多个技术知识点,包括Android SDK的使用、百度地图API的集成、位置服务的开启与使用、以及权限管理等。下面将详细阐述这些关键点。 首先...

    Android开发的多媒体备忘录(含代码)

    5. **多媒体管理**:为了方便用户查看和管理他们的备忘录,需要实现一个媒体库功能。这可能涉及使用SQLite数据库来存储多媒体文件的元数据,或者直接操作文件系统。列表视图或网格视图可以展示备忘录,用户可以按...

    AndroidStudio————实战演练——仿美团外卖菜单

    在本项目中,"AndroidStudio————实战演练——仿美团外卖菜单"是一个专注于使用Android Studio开发的应用程序实战案例,目标是创建一个类似于美团外卖的菜单功能。这个项目涵盖了多个Android开发的关键知识点,...

Global site tag (gtag.js) - Google Analytics