在按钮背景上设置GIF

时间:2017-11-29 07:28:28

标签: android android-animation gif

可以在按钮的背景上应用GIF。我已经通过以下代码尝试了this的引用。我的代码如下。

   public class GIFView extends View {
    Movie movie, movie1;
    InputStream is = null, is1 = null;
    long moviestart;

    public GIFView(Context context) {
        super(context);
        is = context.getResources().openRawResource(+R.drawable.cloudinary_animation);// avoid error ( “Expected resource of type raw”)by +
        movie = Movie.decodeStream(is);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvas.drawColor(Color.WHITE);
        super.onDraw(canvas);
        long now = android.os.SystemClock.uptimeMillis();
        System.out.println("now=" + now);
        if (moviestart == 0) { // first time
            moviestart = now;

        }
        System.out.println("\tmoviestart=" + moviestart);
        int relTime = (int) ((now - moviestart) % movie.duration());
        System.out.println("time=" + relTime + "\treltime=" + movie.duration());
        movie.setTime(relTime);
        movie.draw(canvas, this.getWidth() / 2 - 20, this.getHeight() / 2 - 40);
        this.invalidate();
    }
}

现在我想在按钮的背景上应用这个动画。

1 个答案:

答案 0 :(得分:3)

  

我在一天前在我的应用程序中实现了这一点。虽然本教程是关于ImageView的,但您可以轻松地将代码转换为优势。

首先,这取决于你的愿望。

  

1:反复继续播放Gif(很容易)

     

2:只播放一次类似于Facebook应用“喜欢”按钮(需要一些工作)

将此库添加到您的gradle.build

编译'pl.droidsonroids.gif:android-gif-drawable:1.2.8'

GifImageView gifImageView;

GifDrawable gifDrawable;

定义此变量:

gifImageView = findViewById(R.id.splashGif);

<pl.droidsonroids.gif.GifImageView
        android:id="@+id/splashGif"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#FFFDFF"
        />

播放GIF

 public void playGif() {


        try {
            gifDrawable = new GifDrawable(getActivity().getResources(), R.drawable.SplashGifId);
        } catch (IOException e) {
            e.printStackTrace();
        }


        gifDrawable.setLoopCount(1);

        gifDrawable.addAnimationListener(new AnimationListener() {
            @Override
            public void onAnimationCompleted(int loopNumber) {

                gifImageView.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.SplashLastFrame));

            }
        });

        gifImageView.setImageDrawable(gifDrawable);



}
  

此方法将在完成GIF过程后播放gif R.drawable.SplashGifId,您将GIF的最后一帧(R.drawable.SplashLastFrame)设置为您的按钮或ImageView。

要拆分你的gif并获取你的gif的最后一帧,你可以使用这个在线工具:

https://ezgif.com/split

使用此资源并通知我......干杯!