博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android显示gif格式图片
阅读量:6402 次
发布时间:2019-06-23

本文共 1434 字,大约阅读时间需要 4 分钟。

大家知道,在Android中使用ImageView来显示gif格式的图片,我们无法得到gif格式图片该有的效果,它只会停在第一帧上,而不会继续。这时只能看到一张静态的图片,这里我们可以使用个简单的方法,即是使用Movie来显示图片。

1.在main.xml中添加ImageView,指定一张GIF图片为背景;

2.MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package 
com.yin.displayGIF;
 
import 
android.app.Activity;
import 
android.content.Context;
import 
android.graphics.Canvas;
import 
android.graphics.Movie;
import 
android.os.Bundle;
import 
android.view.View;
 
public 
class 
MainActivity 
extends 
Activity {
    
private 
MyCustomView mView;
    
private 
Movie mMovie;
    
private 
long 
mMovieStart;
 
    
public 
void 
onCreate(Bundle savedInstanceState) {
        
super
.onCreate(savedInstanceState);
        
mView = 
new 
MyCustomView(
this
);
        
setContentView(mView);
    
}
 
    
// 自定义一个类,继承View
    
class 
MyCustomView 
extends 
View {
        
public 
MyCustomView(Context context) {
            
super
(context);
            
// 以文件流的方式读取文件
            
mMovie = Movie.decodeStream(getResources().openRawResource(
                    
R.drawable.my_picture));
        
}
 
        
@Override
        
protected 
void 
onDraw(Canvas canvas) {
            
long 
curTime = android.os.SystemClock.uptimeMillis();
            
// 第一次播放
            
if 
(mMovieStart == 
0
) {
                
mMovieStart = curTime;
            
}
 
            
if 
(mMovie != 
null
) {
                
int 
duration = mMovie.duration();
 
                
int 
relTime = (
int
) ((curTime - mMovieStart) % duration);
                
mMovie.setTime(relTime);
                
mMovie.draw(canvas, 
0
0
);
 
                
// 强制重绘
                
invalidate();
            
}
            
super
.onDraw(canvas);
        
}
    
}
}

转载于:https://www.cnblogs.com/lanzhi/p/6469896.html

你可能感兴趣的文章
052 kafka对topic的增删改查操作
查看>>
无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例 (错误:7302)...
查看>>
Ping检测工具(QQ皮肤实现)
查看>>
C# 线程手册 第三章 使用线程 手动同步
查看>>
ArcGIS9.3全套 下载地址
查看>>
WordPress版微信小程序安装使用说明
查看>>
VC中使用内联汇编(转载)
查看>>
VS2010项目的部署与安装
查看>>
Phone状态的监听机制
查看>>
responsive web design
查看>>
图像编辑之亮度调整
查看>>
ENTBOOST 2014.180L 发布,开源企业IM免费企业即时通讯
查看>>
(转) Lua: 给 Redis 用户的入门指导
查看>>
Android 获取内存信息
查看>>
DDD Reference
查看>>
【mysql】统计库、表大小
查看>>
ThinkPHP项目笔记之RBAC(权限)中篇
查看>>
经典SQL语句大全
查看>>
百度地图 Android SDK - 检索功能使用的简单演示样例
查看>>
nginx+apache+php+mysql服务器集群搭建
查看>>