第七章 实现炫酷效果—图像和动画(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:顺序播放事先做好的图像,是一种画面转换动画。
下面的章节会详细介绍如何利用这些实现各种动画效果。
相关文章推荐
- Win10 10074 版本无法连接 BT 鼠标
- UITableView中的(NSIndexPath *)indexPath
- [Objective-C]__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用
- POJ-1088 滑雪 (动态规划)
- 用两个栈实现队列的功能
- 2015年百度之星初赛(hdu5246-5251)
- CSS实现网页顶部的阴影效果
- MySQL 插入数据
- hive入门
- Django笔记(6) -- 表单
- 机器学习(回归、梯度下降、最小二乘法)
- 第七章 实现炫酷效果—图像和动画(3)
- Searching: Linear Probing And Insertion
- HDU2159
- 第十三周项目三——立体类族共有的抽象类
- mysqldump的几种用法(Mysql)
- OSSEC
- poj 1041 John's trip(欧拉回路)
- 3389端口使用技巧攻防
- POJ 2976 Dropping tests 01分数规划