package com.hdl.photovoltaic.widget; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Movie; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.os.SystemClock; import android.widget.ImageView; import androidx.annotation.NonNull; import com.hdl.photovoltaic.R; /** * 播放GIF动画 */ public class MovieDrawable extends Drawable { private final Movie mMovie; private long mStartTime; public MovieDrawable(Movie movie) { mMovie = movie; } public void start() { mStartTime = SystemClock.uptimeMillis(); } @Override public void draw(@NonNull Canvas canvas) { long time = SystemClock.uptimeMillis() - mStartTime; mMovie.setTime((int) (time % mMovie.duration())); mMovie.draw(canvas, getBounds().left, getBounds().top); invalidateSelf(); } @Override public void setAlpha(int alpha) { // 设置透明度 } @Override public void setColorFilter(ColorFilter colorFilter) { // 设置颜色滤镜 } @Override public int getOpacity() { // 返回透明度 return PixelFormat.TRANSLUCENT; } public void getDrawableGifAnimation(Context mContext, ImageView imageView) { try { if (mContext == null) { return; } if (imageView == null) { return; } @SuppressLint("ResourceType") Movie movie = Movie.decodeStream(mContext.getResources().openRawResource(R.drawable.null_data_icon)); MovieDrawable drawable = new MovieDrawable(movie); imageView.setImageDrawable(drawable); drawable.start(); } catch (Exception ignored) { } } }