1) 左右滑动切换图片
2) 在缩小的情况下,双击图片,对图片点进行局部放大;在放大的情况下,双击图片,图片缩小自适应屏幕尺寸。
3) 支持两根手指滑动屏幕,对图片进行按比例缩放。
4) 3D图片浏览,对图片加入倒影和旋转角。
3.2.2 SD文件浏览
1) 显示SD目录。
2) 支持返回上一级目录。
3) 支持直接打开图片文件。
4) 支持对打开的图片进行拖动和缩放。
3.2.3 网络查看图片
1) 根据URL查看网络图片,显示在指定的位置。
2) 支持网络图片保存。
3.3 Gallery
Gallery控件可以横向显示一个图像列表,只能有限地显示指定的图像。也就是说,如果为Gallery控件指定了10张图像,那么当Gallery控件显示到第10张时,就不会再继续显示了。单击当前图像的后一个图像时,这个图像列表会向左移动一格,单击当前图像的前一个图像时,这个图像列表会向右移动一样。也可以通过拖动的方式来向左和向右移动图像列表。
当Gallery控件要显示某一个图像时,就会调用getView方法,并将当前的图像索引(position参数)传入该方法。一般getView方法用于返回每一个显示图像的组件(ImageView对象)。从这一点可以看出,Gallery组件是即时显示图像的,而不是一下将所有的图像都显示出来。在getView方法中除了创建了ImageView对象,还用从resIds数组中获得了相应的图像资源ID来设置在ImageView中显示的图像。最后设置Gallery组件的背景显示风格。
3.4 图像处理
3.4.1 Bitmap
位图图像(bitmap), 亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增大单个像素,从而使线条和形状显得参差不齐。然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。
Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。
Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。这必然是某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,这个类就是BitmapFactory。
利用BitmapFactory可以从一个指定文件中,利用decodeFile()解出Bitmap;也可以定义的图片资源中,利用decodeResource()解出Bitmap。
在使用方法decodeFile()/decodeResource()时,都可以指定一个BitmapFacotry.Options。
利用Options的下列属性,可以指定decode的选项:
inPreferredConfig 指定decode到内存中,手机中所采用的编码,可选值定义在Bitmap.Config中。缺省值是ARGB_8888。
inJustDecodeBounds 如果设置为true,并不会把图像的数据完全解码,亦即decodeXyz()返回值为null,但是Options的outAbc中解出了图像的基本信息。
inSampleSize 设置decode时的缩放比例。
利用Options的这些值就可以高效的得到一幅缩略图。
先设置inJustDecodeBounds= true,调用decodeFile()得到图像的基本信息[Step#2~4];
利用图像的宽度(或者高度,或综合)以及目标的宽度,得到inSampleSize值,再设置inJustDecodeBounds= false,调用decodeFile()得到完整的图像数据[Step#5~8]。先获取比例,再读入数据,如果欲读入大比例缩小的图,将显著的节约内容资源。有时候还会读入大量的缩略图,这效果就更明显了。 Android平台手机图片浏览软件的开发实现(9):http://www.youerw.com/jisuanji/lunwen_2019.html