如何加载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();
}
}
}
答
Android不支持GIF动画文件的播放。如果您需要播放它们,则需要将它们拆分为多个帧,并逐一为每个帧设置动画。
也见下面的链接更clearification: -
+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,视图只会失效。
祝你好运
为什么你不使用简单的frameanimation? AFAIK gif不会在android中播放。 – 2013-03-28 07:24:51
Android不支持播放gif文件,如果您想播放,您将不得不使用动画。 – 2013-03-28 07:52:25
我只想加载gif图像而不是jpg图像.....帧动画许多图像只能动画...... – Bala 2013-03-28 09:05:47