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