如何加载GIF文件上的按钮在Android中单击?

问题描述:

我是一个新的android。我想按钮点击加载或播放gif图片。我在版面上加载了两个gif文件。但是当我点击下一个按钮,下一个图像将播放,在这里我们写setonclickListener按钮单击....如何播放按钮在Android上点击gif图像。如果你知道,请告诉我。如何加载GIF文件上的按钮在Android中单击?

这里是我的代码..

package com.androidqa; 

import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Movie; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 


public class AnimationView extends View 
{ 
    private Movie mMovie,mMovie1; 
    private long mMovieStart; 
    private long mMovieStart1; 
    Button btnFirst,btnSecond; 
    private static final boolean DECODE_STREAM = true; 
    private static byte[] streamToBytes(InputStream is) 
    { 
    ByteArrayOutputStream os = new ByteArrayOutputStream(1024); 
    byte[] buffer = new byte[1024]; 
    int len; 
    try 
    { 
     while ((len = is.read(buffer)) >= 0) { 
      os.write(buffer, 0, len); 
     } 
     } catch (java.io.IOException e) { 
     } 
     return os.toByteArray(); 
    } 
    @SuppressWarnings("unused") 
    private static byte[] streamToBytes1(InputStream is1) 
    { 
    ByteArrayOutputStream os1 = new ByteArrayOutputStream(1024); 
    byte[] buffer1 = new byte[1024]; 
    int len; 
    try 
    { 
     while ((len = is1.read(buffer1)) >= 0) { 
      os1.write(buffer1, 0, len); 
     } 
     } catch (java.io.IOException e) { 
     } 
     return os1.toByteArray(); 
    } 

    public AnimationView(Context context,AttributeSet attrs) 
    { 
     super(context,attrs); 
     setFocusable(true); 
     java.io.InputStream is; 
     java.io.InputStream is1; 
     is = context.getResources().openRawResource(R.drawable.th_welcome); 
     is1 = context.getResources().openRawResource(R.drawable.animimage); 
     if (DECODE_STREAM) 
     { 
     mMovie = Movie.decodeStream(is); 
     mMovie1=Movie.decodeStream(is1); 
     } else 
     { 
     byte[] array = streamToBytes(is); 
     mMovie = Movie.decodeByteArray(array, 0, array.length); 
     byte[] array1 = streamToBytes1(is1); 
     mMovie1= Movie.decodeByteArray(array1, 0, array1.length); 
     } 
    } 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
    long now = android.os.SystemClock.uptimeMillis(); 

     if (mMovieStart == 0) { // first time 
     mMovieStart = now; 
     } 
     if (mMovie != null) 
     { 
     int dur = mMovie.duration(); 
     if (dur == 0) { 
      dur = 3000; 
     } 
     int relTime = (int) ((now - mMovieStart) % dur); 
     Log.d("", "real time :: " +relTime); 
     mMovie.setTime(relTime); 
     mMovie.draw(canvas, getWidth() - 200, getHeight()-200); 
     invalidate(); 
     } 
     if (mMovieStart1 == 0) { // first time 
      mMovieStart1 = now; 
     } 
     if (mMovie1 != null) 
     { 
      int dur = mMovie1.duration(); 
      if (dur == 0) { 
      dur = 3000; 
      } 
      int relTime = (int) ((now - mMovieStart1) % dur); 
     Log.d("", "real time :: " +relTime); 
      mMovie1.setTime(relTime); 
      mMovie1.draw(canvas, getWidth() - 200, getHeight()-200); 
      invalidate(); 
     } 
    } 
    } 
+0

为什么你不使用简单的frameanimation? AFAIK gif不会在android中播放。 – 2013-03-28 07:24:51

+0

Android不支持播放gif文件,如果您想播放,您将不得不使用动画。 – 2013-03-28 07:52:25

+0

我只想加载gif图像而不是jpg图像.....帧动画许多图像只能动画...... – Bala 2013-03-28 09:05:47

Android不支持GIF动画文件的播放。如果您需要播放它们,则需要将它们拆分为多个帧,并逐一为每个帧设置动画。

也见下面的链接更clearification: -

How to play a GIF file in Android?

Is it possible to play GIF format in Android?

+0

我错误地问了问题....我不想玩gif图像...在按钮上单击gif图像将被加载..... gif图像加载布局没有按钮点击...我需要当我点击按钮时,gif图像将被显示或加载..提前感谢。@ HCD – Bala 2013-03-28 09:52:46

在处理一个按钮,点击您的MainActivity写代码。即:

static boolean clicked = false; 

public void onClick(View v) { 

clicked = true; 
AnimationView.invalidate(); 

/* When I am referring to AnimationView, I mean the name of your AnimationView and not the class. */ 

} 

然后在你的onDraw方法中做一个if语句,说如果clicked为true,视图只会失效。

祝你好运