1

我想在我的应用程序中使用 GIF 动画。

我怎样才能做到这一点?我看过这个教程,但我没有得到任何具体的解决方案。

XML 代码

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:orientation="vertical"
  android:layout_height="match_parent"
 <TextView
   android:id="@+id/textView1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:textColor="#ACC437"
   android:textStyle="bold"
   android:text="WelCome To This Blog"
   android:textAppearance="?android:attr/textAppearanceLarge" />

 <com.androidqa.AnimationView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
    />
</LinearLayout>

查看课程

public class AnimationView extends View {
private Movie mMovie;
private long mMovieStart;
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();
      }
     public AnimationView(Context context,AttributeSet attrs) {
       super(context,attrs);
    setFocusable(true);
  java.io.InputStream is;
     // YOUR GIF IMAGE Here
    is = context.getResources().openRawResource(R.drawable.th_welcome); 
     if (DECODE_STREAM) {
   mMovie = Movie.decodeStream(is);
      } else {
       byte[] array = streamToBytes(is);
     mMovie = Movie.decodeByteArray(array, 0, array.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();
           }
           }
              }
4

2 回答 2

1

尝试使用 ImageView。例如:

<?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">

    <item android:drawable="@drawable/image_1" android:duration="100" />
    <item android:drawable="@drawable/image_2" android:duration="100" />
    <item android:drawable="@drawable/image_3" android:duration="100" />
    </animation-list> 

在您的布局中:

 <ImageView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/my_drawable" />
于 2013-10-31T06:43:02.953 回答
0

查看教程如何在 Android 中播放动画 GIF?

于 2013-10-31T08:06:37.857 回答