zoukankan      html  css  js  c++  java
  • 让ImageView可以使用gif的方法

    在自己的包中添加MyGifView.java(直接复制,粘贴),读取gif资源在MyGifView中第20行读取:

    MyGifView.java:

     1 package com.zzw.testgifuseimageview;
     2 
     3 import android.content.Context;
     4 import android.graphics.Canvas;
     5 import android.graphics.Movie;
     6 import android.util.AttributeSet;
     7 import android.view.View;
     8 
     9 
    10 public class MyGifView extends View {
    11 
    12     private long movieStart;
    13     private Movie movie;
    14 
    15     // 重写该构造方法
    16     public MyGifView(Context context, AttributeSet attributeSet) {
    17         super(context, attributeSet);
    18 
    19         // 以文件流(InputStream)读取进gif图片资源
    20         movie = Movie.decodeStream(getResources().openRawResource(R.drawable.test));
    21     }
    22 
    23     @Override
    24     protected void onDraw(Canvas canvas) {
    25         
    26         long curTime = android.os.SystemClock.uptimeMillis();
    27         
    28         // 第一次播放
    29         if (movieStart == 0) {
    30             movieStart = curTime;
    31         }
    32         if (movie != null) {
    33             int duraction = movie.duration();
    34             int relTime = (int) ((curTime - movieStart) % duraction);
    35             movie.setTime(relTime);
    36             movie.draw(canvas, 0, 0);
    37             // 强制重绘
    38             invalidate();
    39         }
    40         
    41         super.onDraw(canvas);
    42     }
    43 }

    把要放gif图片的ImageView的名字改为  包名.MyGifView

    <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="com.zzw.testgifuseimageview.MainActivity" >
    
        <com.zzw.testgifuseimageview.MyGifView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="20dp" />
    
    </RelativeLayout>

    MainActivity.java:

     1 package com.zzw.testgifuseimageview;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 
     6 public class MainActivity extends Activity {
     7 
     8     @Override
     9     protected void onCreate(Bundle savedInstanceState) {
    10         super.onCreate(savedInstanceState);
    11         setContentView(R.layout.activity_main);
    12     }
    13 }

  • 相关阅读:
    <C> 链表 双向链表 栈 队列
    <C> 结构体
    <C> getchar()函数 如何把getchar()到的字符串存起来的实际应用
    DataSet转换为泛型集合和DataRow 转成 模型类
    对DataSet,DataRow,DateTable转换成相应的模型
    Json对象与Json字符串互转(4种转换方式)
    Android开发 使用HBuilder的缓存方法
    MIT_AI公开课p1p2学习笔记
    LeetCode_02 两数相加【链表】
    leetcode_01两数之和
  • 原文地址:https://www.cnblogs.com/zzw1994/p/4992396.html
Copyright © 2011-2022 走看看