在android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理。

本文是采用自定义view 然后进行重新onDraw方法来实现

首先自定义View【MyGifView.java】

/** * MyGifView.java * Copyright(C) 2014 * creator:cuiran 2014-5-16 下午2:01:56 */package com.cayden.videodemo.view;import com.cayden.videodemo.R;import android.content.Context;import android.graphics.Canvas;import android.graphics.Movie;import android.util.AttributeSet;import android.view.View;/** * 自定义View 播放gif动画  * @author cuiran * @version 1.0.0 */public class MyGifView extends View {private long movieStart;private Movie movie=Movie.decodeStream(getResources().openRawResource(R.drawable.football));private MyGifView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}private MyGifView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public MyGifView(Context context) {super(context);// TODO Auto-generated constructor stub}/* (non-Javadoc) * @see android.view.View#onDraw(android.graphics.Canvas) */@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stublong curTime=android.os.SystemClock.uptimeMillis();//第一次播放if (movieStart == 0) {movieStart = curTime;}if (movie != null) {int duraction = movie.duration();int relTime = (int) ((curTime-movieStart)%duraction);movie.setTime(relTime);movie.draw(canvas, 0, 0);//强制重绘invalidate();}super.onDraw(canvas);}}

然后写Activity

/** * GifMainActivity.java * Copyright(C) 2014 * creator:cuiran 2014-5-16 下午2:10:29 */package com.cayden.videodemo;import com.cayden.videodemo.view.MyGifView;import android.app.Activity;import android.os.Bundle;/** * TODO  * @author cuiran * @version 1.0.0 */public class GifMainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//第一种 直接使用代码MyGifView gifView=new MyGifView(getApplicationContext());setContentView(gifView);//第二种采用xml 貌似出错了?????//setContentView(R.layout.gif_main);}}
本来还可以使用布局xml的但是报错了

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"     >    <TextView        android:text="====Gif图片测试布局===="        android:layout_height="wrap_content"       android:layout_width="wrap_content"       />         <com.cayden.videodemo.view.MyGifView        android:id="@+id/iv"       android:layout_height="wrap_content"       android:layout_width="wrap_content"       android:layout_margin="20dp"       /> </LinearLayout>

以上是部分代码,仅供参考!

更多相关文章

  1. 第二十篇 Android获取本机图片、音频、视频、文档以及本地文件夹
  2. 《第一行代码--Android》学习笔记--第一章:开始起航:思路
  3. 【Android】界面布局之TableLayout(表格布局)
  4. Android布局编写示例【慢慢更新】
  5. android有用代码片段(1)
  6. android视频截屏&手机录屏实现代码
  7. android关于图片缩放
  8. Android 布局优化之include与merge
  9. 线性布局(LinearLayout)下layout_weight用法分析

随机推荐

  1. 华为和H3C华三对比区别,哪个更好?
  2. 华为HCIA/HCIP/HCIE区别可以跨级报考吗如
  3. 华为认证HCIP考试费报名费复习方法HCIE考
  4. [MAC] 6 个好用小技巧大公开!
  5. 由于Linux系统文件同步时突然断电导致系
  6. 用披萨来解释IaaS,PaaS,SaaS 的区别
  7. 9:VMware Horizon View 8.0-安装副本连接服
  8. OSPF虚链路、DV算法和区域验证的应用
  9. MySQL系列-安装MySQL
  10. 性能优化【1】 | SQL Server优化工具Prof