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) {
|
}
|
}
|
|
}
|