- 浏览: 76578 次
文章分类
最新评论
-
1846396994:
你不会查看源代码吗?
Google Map-鼠标移动画线(polyline) -
cjnetwork:
找了半天,只看到效果,没有看到源代码或是你的实现思路。只想问一 ...
Google Map-鼠标移动画线(polyline)
Android系统默认不支持Gif图片的播放,需要自定义工具类对Gif图片进行解码、显示和播放动画。至于怎么解码Gif图片,这里在别人的代码基础进行了修改:GifFrame、GifHelper等。
1、GifActivity循环播放类
package com.orgcent.gif;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;
import com.orgcent.gif.GifHelper.GifFrame;
public class AndroidGifActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Android Gif Activity");
setContentView(tv,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
final ImageView iv = new ImageView(this);
iv.setScaleType(ScaleType.CENTER);
setContentView(iv, new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
//对Gif图片进行解码
final InputStream is = getResources().openRawResource(R.drawable.cell_orig);
final GifFrame[] frames = CommonUtil.getGif(is);
System.out.println("delay:" + frames[1].delay + ",size:" + frames.length);
mGifTask = new PlayGifTask(iv, frames);
mGifTask.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
if(null != mGifTask) mGifTask.stop();
}
private PlayGifTask mGifTask;
//用来循环播放Gif每帧图片
private static class PlayGifTask implements Runnable {
int i = 0;
ImageView iv;
GifFrame[] frames;
public PlayGifTask(ImageView iv, GifFrame[] frames) {
this.iv = iv;
this.frames = frames;
}
@Override
public void run() {
if (!frames[i].image.isRecycled()) {
iv.setImageBitmap(frames[i].image);
}
iv.postDelayed(this, frames[i++].delay);
i %= frames.length;
}
public void start() {
iv.post(this);
}
public void stop() {
if(null != iv) iv.removeCallbacks(this);
iv = null;
if(null != frames) {
for(GifFrame frame : frames) {
if(frame.image != null && !frame.image.isRecycled()) {
frame.image.recycle();
frame.image = null;
}
}
frames = null;
}
}
}
}
转载:Android解码/显示/播放Gif图片动画 | http://orgcent.com/android-decode-gif-play-animation/
发表评论
-
Eclipse卸载Android-ADT插件及删除插件安装/更新地址
2012-06-07 10:09 0今天碰到神奇的问题,<a href="http ... -
解决Android模拟器INSTALL_FAILED_INSUFFICIENT_STORAGE错误
2012-06-07 10:09 0在做TextView自定义字体设置时,Eclipse连接模拟器 ... -
Android使用Google的gson来解析json
2012-06-07 10:11 1695Android默认提供JSONArray和JSONObject ... -
Android控件WebView(浏览器)常用功能(图片、缩放)例子介绍
2012-06-07 10:11 1353Android系统默认提供WebView控件(<a hr ... -
Android应用添加(创建)和删除及判断是否存在桌面快捷方式
2012-06-07 10:11 1195Android桌面程序提供了应用添加和删除桌面快捷方式的功能以 ... -
Android(AIDL)自动重复拨号及挂断/接听电话
2012-06-07 10:11 1904Android默认没有提供挂断/接听电话的api,需要伪 ... -
android实践--进度对话框(ProgressDialog)
2012-05-06 22:50 1200最近开始学习android,看到android下进度 ... -
控制流量-滑动窗口机制
2012-05-05 08:49 959最近,在研究移动的cmpp3.0协议,其中在处理消息 ... -
二进制--补码简介
2012-05-05 08:49 766最近因工作需要, ... -
使用jxl读写Excel文件
2012-05-05 08:49 715发现以前项目中使用jxl.jar来读写excel,为 ... -
Java实现HTTP文件下载和图片(验证码)浏览
2012-05-02 15:42 11401、实现HTTP文件下载 原理:设置HTTP头信息co ... -
android:TextView设置文本样式和超链接
2012-05-02 15:42 9761、设置TextView中文本的样式(如:颜色、斜体等),可以 ... -
android隐藏IME(输入法)输入框
2012-05-02 15:42 1054不让程序默认升起IME输入框有两种方法:1.让EditT ... -
android:TextView设置背景色和文本颜色
2012-05-02 15:42 1279设置TextView控件的背景色和文本颜色很简单,如下: ... -
android获取屏幕分辨率大小(DisplayMetrics)
2012-05-02 15:42 882android中要获取屏幕的分辨率,需要用到Displa ... -
为android系统控件设置样式
2012-04-30 09:52 834android为实现逻辑和视图的分离,将视图样式配置到x ... -
解决MediaPlayer问题: [MP3Extractor: Unable to resync. Signalling end of stream]
2012-04-30 09:52 1836游戏开发中使用MediaPlayer播放MP3碰到些诡异 ... -
Android使用TextView实现无下划线超链接
2012-04-30 09:52 866Android系统默认把网址、电话、地图(geo地址)、 ... -
Android系统内置应用更新或升级后被还原的原因
2012-04-23 09:07 799如果更新或者升级后系统内置应用,遇到重启Android系 ... -
Android事件传递机制【Touch事件】
2012-04-23 09:07 1325Android中提供了ViewGroup、View、Ac ...
相关推荐
总结,实现“android gif图片循环显示”主要涉及Android第三方库的使用,特别是`GIFView`库,以及如何在代码中加载、切换和控制GIF动画。理解这些知识点对于提升Android开发技能和应对实际项目需求非常重要。通过...
在Android开发中,GIF图片的动态显示是一个常见的需求,...总的来说,Android中显示GIF图片需要借助第三方库或自定义视图,理解其内部的解码和动画播放机制,同时关注性能和兼容性优化,确保在不同设备上都能流畅运行。
- 在Android中,我们可以使用`GifDecoder`类解码GIF文件,它会将GIF数据解析为一系列的图像帧和时间信息。每帧的图像数据可以通过`Bitmap`对象表示,时间信息用于控制动画速度。 4. **动画管理**: - 可以使用`...
这个库是专门为在Android平台上高效、流畅地播放GIF动画而设计的。本文将深入探讨如何使用`android-gif-drawable`库以及其背后的实现原理和优化策略。 `android-gif-drawable`库的核心功能是提供了一个名为`...
综上所述,实现Android GIF图片动画播放功能涉及多个步骤,包括GIF文件的解析、帧的绘制、自定义ImageView以及性能优化。通过合理利用开源库和Android提供的工具,我们可以为用户提供流畅且高效的GIF动画体验。
综上所述,解决Android中显示大GIF图片导致的内存溢出问题,需要结合多种策略,包括但不限于选择合适的GIF解析库、使用JNI进行优化、异步加载、流式处理、内存管理和预处理等。同时,不断地测试和调整,以找到最佳的...
在Android平台上,显示...总之,使用`GifView.jar`包可以方便地在Android应用中显示Gif图片,通过简单的调用即可实现Gif动画的播放和控制。同时,根据项目的具体需求,也可以选择其他更高级的库来提升性能和用户体验。
- **Android-Universal-Image-Loader**:这个库除了图片加载功能外,也支持GIF动画的播放。 - **GIFView**:这是一个专门为加载和播放GIF设计的Android View组件。 2. **自定义View**: 如果不想引入额外的依赖...
在Android平台上,显示GIF动画图像可能比显示静态图片复杂一些,因为Android原生API并不直接支持GIF的播放。然而,通过第三方库或者自定义控件,我们可以轻松实现这一功能。以下是一个关于如何在Android应用中显示...
这种方式在解码过程中,不会显示任何图片,等到Gif全部解码结束后,再显示整个gif动画。 * COVER.这种方式在解码过程中,只显示第一帧,在gif全部解码结束后,显示整个Gif动画。 * SYNC_DECODER.这种方式与解码...
在Android平台上,由于系统本身并未提供直接支持GIF动画显示的原生组件,开发者们往往需要采用一些变通的方法来实现在应用中展示GIF动图。本篇将深入探讨如何在Android中实现这一功能,重点讲解如何创建一个自定义的...
在Android平台上,播放Gif动画是一项常见的需求,无论是加载指示器、按钮反馈还是其他动态展示效果,Gif图像都能提供丰富的视觉体验。本篇将详细探讨如何在Android应用中实现Gif动画的播放。 首先,我们需要理解Gif...
在Android平台上,播放GIF动画是一项常见的需求,无论是用于加载指示、表情符号还是其他动态效果。本篇文章将深入探讨如何在Android应用中实现GIF动画的播放,主要基于提供的资源`GifPlayer`。 首先,我们需要理解...
在Android平台上,播放Gif图片是一项常见的需求,无论是用于加载动图表情、动画效果还是其他交互元素。要实现这一功能,开发者需要理解Android系统对Gif格式的支持以及如何利用现有库来播放Gif。以下是一些关键知识...
在Android开发中,GIF图片的播放是一个常见的需求,特别是在社交、游戏或者动画应用中。本文将深入探讨如何在Android环境中实现GIF图片的播放,以及处理可能遇到的内存问题。 首先,Android系统本身并不直接支持GIF...
在Android开发中,实现GIF动画,特别是在TextView中展示GIF表情,是一项常见的需求,尤其在社交应用或者消息传递场景中。以下将详细介绍如何在Android中实现这一功能,并且会探讨一些相关的技术点。 首先,我们需要...
// 初始化和解码GIF ... @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (decoder != null && !decoder.isEnded()) { decoder.drawFrame(canvas, System.currentTimeMillis());...
在Android平台上,显示GIF图片是一项常见的需求,无论是用于加载指示器、动态表情还是其他交互元素。本资源包提供了一种方法来实现这一功能,并包括一个GIF图片合成制作软件,便于用户创建自定义的GIF动画。 首先,...