- 浏览: 760770 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (139)
- 玩转Android (48)
- Android创意美工 (0)
- Android杂谈 (23)
- Android实例练习 (2)
- Android ROM研究 (5)
- Android NDK开发指南 (5)
- Android NDK (0)
- Android Tips (3)
- Windows Phone 7 (5)
- iPhone (0)
- HTML5学习室 (0)
- JAVA (9)
- SSH+ibatis (8)
- PHP (0)
- IT生活 (1)
- linux (2)
- C (4)
- C++ (1)
- web 前端 (1)
- 云计算 (0)
- 设计模式 (0)
- C# (2)
- 其他 (1)
- 数据结构 (5)
- Web开发 (10)
- 数据库 (3)
- 搜索引擎 (0)
- Go语言 (0)
最新评论
-
wi100sh:
多谢分享~
玩转Android---UI篇---ImageButton(带图标的按钮) -
zhanghaichang:
好文章的。
高性能web开发技术(一) -
yingang:
引用classes.dex.dex2jar.jar 拖入 j ...
Andorid杂谈---Apk文件的反编译 -
扶摇诺:
讲解的简明易懂,多谢啦!
玩转Android---UI篇---LinearLayout(线性布局) -
a13429921973:
更为详细的图文介绍,可参考这个http://blog.csdn ...
Android ROM研究---CyanogenMod源代码下载及编译
由于Gif本身就是动画,所以如果能够直接使用的话,会省去很多的麻烦。
要想播放gif动画,首先需要对gif动画进行解码,然后将gif中的每一帧提取出来,放在一个容器中,然后根据需要绘制每一帧,这样就实现了gif动画在手机中直接播放了
GameView.gif
package org.hualang.giftest; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.view.View; public class GameView extends View implements Runnable { Context mContext = null; /* 声明GifFrame对象 */ GifFrame mGifFrame = null; public GameView(Context context) { super(context); mContext = context; /* 解析GIF动画 */ mGifFrame=GifFrame.CreateGifImage(fileConnect(this.getResources().openRawResource(R.drawable.girl))); /* 开启线程 */ new Thread(this).start(); } public void onDraw(Canvas canvas) { super.onDraw(canvas); /* 下一帧 */ mGifFrame.nextFrame(); /* 得到当前帧的图片 */ Bitmap b=mGifFrame.getImage(); /* 绘制当前帧的图片 */ if(b!=null) canvas.drawBitmap(b,10,10,null); } /** * 线程处理 */ public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } //使用postInvalidate可以直接在线程中更新界面 postInvalidate(); } } /* 读取文件 */ public byte[] fileConnect(InputStream is) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int ch = 0; while( (ch = is.read()) != -1) { baos.write(ch); } byte[] datas = baos.toByteArray(); baos.close(); baos = null; is.close(); is = null; return datas; } catch(Exception e) { return null; } } }
GifFrame.gif
package org.hualang.giftest; import java.util.Vector; import android.graphics.Bitmap; public class GifFrame { /* 保存gif中所有帧的向量 */ private Vector frames; /* 当前播放的帧的索引 */ private int index; public GifFrame() { frames = new Vector(1); index = 0; } /* 添加一帧 */ public void addImage(Bitmap image) { frames.addElement(image); } /* 返回帧数 */ public int size() { return frames.size(); } /* 得到当前帧的图片 */ public Bitmap getImage() { if (size() == 0) { return null; } else { return (Bitmap) frames.elementAt(index); } } /* 下一帧 */ public void nextFrame() { if (index + 1 < size()) { index++; } else { index = 0; } } /* 创建GifFrame */ public static GifFrame CreateGifImage(byte abyte0[]) { try { GifFrame GF = new GifFrame(); Bitmap image = null; GifDecoder gifdecoder = new GifDecoder(abyte0); for (; gifdecoder.moreFrames(); gifdecoder.nextFrame()) { try { image = gifdecoder.decodeImage(); if (GF != null && image != null) { GF.addImage(image); } continue; } catch (Exception e) { e.printStackTrace(); } break; } gifdecoder.clear(); gifdecoder = null; return GF; } catch (Exception e) { e.printStackTrace(); return null; } } }
还要实现GifShow.java
package org.hualang.giftest; import android.app.Activity; import android.os.Bundle; public class GifShow extends Activity { /** Called when the activity is first created. */ GameView myGameView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myGameView = new GameView(this); setContentView(myGameView); } }
当然,这里还需要一个GifDecoder类,这个是别人实现的,可以拿过来直接用,完整源代码在下面
效果如下:
发表评论
-
玩转Android---2D图形及动画---动画分析(Tween详细分析)
2011-09-26 21:59 2628在Android系统中提供了两种动画实现方式:一种是Tween ... -
玩转Android---2D图形及动画---图片处理
2011-09-26 13:08 1780在Android中很多地方都使 ... -
玩转Android--UI篇--PreferenceActivity(开启wifi和音乐等)
2011-09-01 11:57 4851本测试主要是为了测试PreferenceActivity的使用 ... -
玩转Android---2D图形及动画---Frame动画
2011-08-01 20:53 2086Frame动画其实就是逐帧动画,用法也比Tween动画简单,只 ... -
玩转Android---2D图形及动画---Tween动画
2011-07-31 22:53 2180Android平台提供了两类动画,分别是Tween动画,和Fr ... -
玩转Android---2D图形及动画---View类使用
2011-07-30 23:39 2800由于游戏界面是由大量美工资源图片构成的,所以,在设计游戏界面的 ... -
玩转Android--组件篇---Handler的使用
2011-07-30 14:01 5359public class Handler ... -
玩转Android---UI篇---ZoomControls放大缩小图片
2011-07-27 13:03 7249ZoomControls控件是一个可以缩放但控件,效果如下图 ... -
玩转Android---组件篇---TextSwitcher
2011-07-25 09:21 2193还记得有一次淘宝的电话面试的时候问了我一个关于Android的 ... -
玩转Android---组件篇---AnalogClock,DigitalClock
2011-07-10 19:28 2940首先要说的是,这两个控件并不是经常的使用,但是如果程序需要的话 ... -
玩转Android---组件篇---SeekBar,RatingBar,Chronometer
2011-07-10 19:12 2855今天补充三个组件的使用,避免日后忘记。它们分别是 SeekB ... -
玩转Android---组件篇---Handler的使用(2)
2011-05-28 17:15 2821对于Handler来说,它和与它调用它的Activity是出于 ... -
玩转Android---组件篇---Handler的使用(1)
2011-05-28 15:37 2173在android中,有很多功能是不能放在onCreate或者o ... -
玩转Android---事件监听篇---第2篇
2011-05-27 10:30 5250事件监听篇---第二篇 下面是各种常用控件的事件监听的 ... -
玩转Android---事件监听篇---第1篇
2011-05-26 21:29 9933事件就是用户与UI界面的交互时所触发的操作。比如点击某一个按钮 ... -
玩转Android---组件篇---数据存储之SQLite
2011-04-17 17:05 8484Android中通过SQLite数据库引擎来实现结构化数据存储 ... -
玩转Android---组件篇---数据存储之File
2011-04-17 11:07 2046我们可以将一些数据直接以文件的形式保存在设备中。例如,一些文本 ... -
玩转Andorid---组件篇---数据存储之preference
2011-04-14 21:58 2303程序是数据的输入、处 ... -
玩转Android---组件篇---Broadcast Receiver(广播接收器)
2011-04-14 19:24 29346Braodcast Receiver顾名思义 ... -
玩转Andorid---组件篇---Service(服务)之RPC远程进程调用
2011-04-08 21:17 3465在Andorid平台中,各个组件运行在自己的进程中,他们 ...
相关推荐
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...
此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...