您的位置:首页 > 其它

第七章 实现炫酷效果—图像和动画(4)

2015-05-31 12:37 411 查看

7.4 轻量级图片—Picture

Drawable、Bitmap都是比较常用的图形对象类。我们在阅读Android SDK文档还会发现一个类:android.graphics.Picture。那么Picture又是做什么用的呢?
相对于Drawable和Bitmap而言,Picture对象就小巧的多,它并不存储实际的像素,仅仅记录了每个绘制的过程。整个类提供了两个重载形式,其中比较特别的是Picture(Picture src) 从一个Picture对象去实例化操作。
这里有个简单的例子,来详细说明下。
protected void onDraw(Canvas canvas) {
Picture p=new Picture();
// 开始记录绘制过程,这里的Canvas是Picture的Canvas
Canvas c=p.beginRecording(320,480);
// c.drawBitmap() ,drawLine等方法处理
// 结束录制绘制过程
p.endRecording();
PictureDrawable pd=new PictureDrawable(p);
pd.draw(canvas) ;
canvas.drawPicture(p);
}

7.5 Drawable、Bitmap、byte[]之间的转换

Android中有这么多种图片资源, 在处理的时候,会进行一些类型的转换。下面就总结了Drawable、Bitmap、byte[]之间的转换。参考代码如下:
/** Drawable转换成Bitmap(使用Canvas方式) **/
public static Bitmap convertDrawable2BitmapByCanvas(Drawable drawable) {
Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}

/** Drawable转换成Bitmap(通过BitmapDrawable方式) **/
public static Bitmap convertDrawable2BitmapSimple(Drawable drawable) {
BitmapDrawable bd = (BitmapDrawable) drawable;
return bd.getBitmap();
}

/** Bitmap转换成Drawable **/
public static Drawable convertBitmap2Drawable(Bitmap bitmap) {
BitmapDrawable bd = new BitmapDrawable(bitmap);
// 因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
return bd;
}

/** byte[]转换成Bitmap **/
public static Bitmap convertBytes2Bimap(byte[] b) {
if (b.length == 0) {
return null;
}
return BitmapFactory.decodeByteArray(b, 0, b.length);
}

/** Bitmap转换成byte[] **/
public static byte[] convertBitmap2Bytes(Bitmap bm) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}

7.6 Android提供的几种动画效果(Animation)

Android提供了以下两种Animation模式及四种现成的animation:
1)Tween Animation:通过对图像不断做变换产生动画效果,是一种渐变动画。
l AlphaAnimation:渐变透明度动画效果。
l ScaleAnimation:渐变尺寸伸缩动画效果。
l TranslateAnimation:画面转移位置移动动画效果。
l RotateAnimation:画面转移旋转动画效果。
2)Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。
下面的章节会详细介绍如何利用这些实现各种动画效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: