可以在按钮的背景上应用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();
}
}
现在我想在按钮的背景上应用这个动画。
答案 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的最后一帧,你可以使用这个在线工具:
使用此资源并通知我......干杯!