第10章Android中图形图像的处理图形图像的应用在一个系统中占有比较大的分量,如一些程序的图标、界面的美化等等,都离不开图形图像。Android中对图形图像的处理非常强大,对于2D图像它并没有沿用Java中的图形处理类,而是使用了自定义的处理类。本章将讲解Bitmap位图的使用、动画的创建和Canvas、Paint的基本绘图。10.1Android中图形图像资源的获取在之前的应用程序中,我们使用的几乎都是存储在drawable文件夹中的图片资源。本节我们将介绍一种新的提供图片的路径,从assets文件夹中获取图片资源。比如我们如果想要将SD卡中的图片作为手机墙纸,就需要使用Bitmap和BitmapFactory类。10.1.1Bitmap和BitmapFactory类Bitmap代表一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象。如果需要获取BitmapDrawable所包装的Bitmap对象,需要调用BitmapDrawable.getBitmap()方法。语法如下所示:Bitmapbitmap=bDrawable.getBitmap();10.1.1Bitmap和BitmapFactory类方法名称方法说明publicstaticBitmapcreateBitmap(Bitmapsrc)返回一个Bitmap位图publicfinalbooleanisRecycled()判断该Bitmap对象是否被回收publicvoidrecycle()强制回收该Bitmap对象方法名称方法说明publicstaticBitmapdecodeByteArray(byte[]data,intoffset,intlength)从指定字节数组的offset位置开始,解析长度为length的字节数据为Bitmap对象publicstaticBitmapdecodeFile(StringpathName)从pathName指定的文件中解析创建Bitmap对象publicstaticBitmapdecodeResource(Resourcesres,intid)根据ID指定的资源解析创建Bitmap对象publicstaticBitmapdecodeStream(InputStreamis)根从指定的输入流中解析创建Bitmap对象10.1.2获取assets文件夹图片资源assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。方法名称方法说明publicvoidclose()关闭AssetManagerpublicfinalInputStreamopen(StringfileName)打开指定资源对应的输入流publicfinalString[]list(Stringpath)返回指定路径下的所有文件10.2Android中的动画生成Android系统提供了两种创建动画方式:补间动画(TweenAnimation)和帧动画(FrameAnimation)。补间动画(TweenAnimation)主要实现对图片进行移动、方法、缩小以及透明度变化的功能,而帧动画(FrameAnimation)则比较简单,就是将一张张的图片连续播放以产生动画效果。下面分别介绍两种动画技术的开发及应用。10.2.1补间动画补间动画(TweenAnimation)就是对场景里的对象不断的进行图像变化来产生动画效果,可以对对象进行旋转、平移、放缩和渐变等操作。标记名称属性值说明
shareInterpolator:是否在子元素中共享插入器可以包含其他动画变换的容器,同时也可以包含标记fromAlpha:变换的起始透明度toAlpha:变换的终止透明度,取值为0.0~1.0实现透明度变换效果fromXScale:起始的X方向上的尺寸toXScale:终止的X方向上的尺寸fromYScale:起始的Y方向上的尺寸toYScale:终止的Y方向上的尺寸;其中1.0代表原始大小pivotX:进行尺寸变换的中心X坐标pivotY:进行尺寸变换的中心Y坐标实现尺寸变换效果,可以指定一个变换中心,例如指定pivotX和pivotY为(0,0),则尺寸的拉伸或收缩均从左上角的位置开始fromXDelta:起始X位置toXDelta:终止Y位置fromYDelta:起始Y位置toYDelta:终止Y位置实现水平或竖直方向上的移动效果。如果属性值以“%”结尾,代表相对于自身的比例;如果以“%p”结尾,代表相对于父控件的比例;如果不以任何后缀结尾,代表绝对的值fromDegree:开始旋转位置toDegree:结束旋转位置;以角度为单位pivotX:旋转中心点的X坐标pivotY:旋转中心点的Y坐标实现旋转效果,可以指定旋转定位点10.2.2帧动画帧动画(FrameAnimation)就如同电影一样,通过顺序播放一系列事先加载好的静态图片产生动画效果。帧动画的XML文件中主要是用到的标签及其属性。标签名称属性值说明android:oneshot:如果设置为true,则该动画只播放一次,然后停止在最后一帧FrameAnimation的根标记,包...