Android显示GIF图片

<span style="font-family: KaiTi_GB2312; background-color: rgb(255, 255, 255);">今天我们研究一下如何在Android手机上显示GIF动态图片。</span>

首先需要在src目录下新建一个自定义的View,代码如下:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.util.AttributeSet;
import android.view.View;

public class MyGifView extends View {

	//表示开始播放gif图片的绝对时间
	private long movieStart = 0;
	//movie对象管理gif图片里面的多个帧
	private Movie movie;

	public MyGifView(Context context, AttributeSet attrs) {
		super(context, attrs);
		movie = Movie.decodeStream(context.getResources().openRawResource(
				R.drawable.horse));
	}

	@Override
	protected void onDraw(Canvas canvas) {
		long currentTime = System.currentTimeMillis();
		// 第一次播放
		if (movieStart == 0) {
			movieStart = currentTime;
		}

		//循环播放
		if (movie != null) {
			int duration = movie.duration();
			int relTime = (int) ((currentTime - movieStart) % duration);
			movie.setTime(relTime);
			movie.draw(canvas, 0, 0);
			// 强制重绘
			invalidate();
		}

		//如果只想播放一次,只需判断currentTime-movieStart的值大于duration就不重绘即可

		super.onDraw(canvas);
	}
}

接着写一个Activity,用来显示gif图片:

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}

XML布局文件是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <com.example.gifdemo.MyGifView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dp" />

</RelativeLayout>

效果图如下:

整个示例工程文件下载链接:

Android显示GIF图片

Android显示GIF图片

时间: 2024-10-23 04:40:51

Android显示GIF图片的相关文章

Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片

一.引言 在xamarin开发的时候,有时我们想要做一个功能,但是这个功能已经有人用java写好了,并且打包成了jar文件.那么我们可以直接把对方的jar文件拿过来用而不是重新用c#写代码. 关于bind jar更详细的内容可以查看https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/ ,这边只是做最简单的绑定. 二.Bind JAR 现在我想做一个功能,使在手机中显示gif图片,普

Android显示相册图片和相机拍照

首先看最重要的MainActive类: 1 public class MainActivity extends AppCompatActivity { 2 3 private final int FROM_ALBUM = 1;//表示从相册获取照片 4 private final int FROM_CAMERA = 2;//表示从相机获取照片 5 private ImageView imageView; 6 7 @Override 8 protected void onCreate(Bundle

android 显示internet 图片

try { HttpGet httpRequest = new HttpGet(edtUrl.getText() .toString()); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient .execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEnt

android高仿微信UI点击头像显示大图片效果

转自:http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html 用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另一个activity,然后显示加载的效果,即progressbar 2.显示图片的之前先弹出自定义dialog,然后模拟加载一段时间后,显示整张大图片,要全屏显示,

Android 获取并显示远程图片 Picasso框架的使用(一)

转载请注明出处:明桑Android 在Android开发中,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpUrlConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码,还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: Picasso:A Powerful Image Downloading and Caching Library for Android 根据名字就知道它是跟什么相关了(Picasso:毕加索)它的基本操

Android 获取并显示远程图片 Picasso框架的使用(二)

转载请注明出处:明桑Android 在上篇文章中介绍了Picasso的基本用法,这篇文章作为以上的练习: 本文代码github地址:UsePicasso 实现效果:(动图请耐心加载) 需要的知识点 了解Picasso框架的使用:Android 获取并显示远程图片 Picasso框架的使用(一) 知道如何自定义GridView 我们需要编写两个布局文件:activity_gridview.xml activity_main.xml 以及ImageAdapter类.GridImageActivity

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路

怪胎:Android开发ImageView图片无法显示

今天碰到一个非常奇怪的问题: 在Android中ImageView无法显示加载的本地SDCard图片. 具体过程是:先调用本地照相机程序摄像,然后将拍摄的图片加载在ImageView中显示. [java] view plaincopyprint? public class ActiEnvi extends Activity   { static final String TAG = "ActiEnvi"; private static final int REQ_CODE_CAMERA

Android -- 打开本地图片且显示路径

背景                                                                                          代码                                                                                           先上布局文件: <LinearLayout xmlns:android="http://schemas.android.co