package com.doumee.lib_coremodel.view; 
 | 
  
 | 
import android.content.Context; 
 | 
import android.graphics.drawable.AnimationDrawable; 
 | 
import android.graphics.drawable.BitmapDrawable; 
 | 
import android.util.AttributeSet; 
 | 
import android.view.Gravity; 
 | 
import android.view.View; 
 | 
import android.widget.ImageView; 
 | 
import android.widget.LinearLayout; 
 | 
  
 | 
import androidx.annotation.NonNull; 
 | 
import androidx.annotation.Nullable; 
 | 
  
 | 
import com.doumee.lib_coremodel.R; 
 | 
import com.doumee.lib_coremodel.util.RxTimerUtil; 
 | 
import com.scwang.smart.refresh.layout.api.RefreshHeader; 
 | 
import com.scwang.smart.refresh.layout.api.RefreshKernel; 
 | 
import com.scwang.smart.refresh.layout.api.RefreshLayout; 
 | 
import com.scwang.smart.refresh.layout.constant.RefreshState; 
 | 
import com.scwang.smart.refresh.layout.constant.SpinnerStyle; 
 | 
import com.scwang.smart.refresh.layout.util.SmartUtil; 
 | 
  
 | 
public class MyRefreshHeader extends LinearLayout implements RefreshHeader { 
 | 
    private ImageView imageView; 
 | 
    private AnimationDrawable anim; 
 | 
    private RxTimerUtil rxTimerUtil; 
 | 
    private boolean mSrlPrimaryColor; 
 | 
  
 | 
    public MyRefreshHeader(Context context) { 
 | 
        this(context,null); 
 | 
    } 
 | 
  
 | 
    public MyRefreshHeader(Context context, @Nullable AttributeSet attrs) { 
 | 
        super(context, attrs); 
 | 
        imageView=new ImageView(context); 
 | 
        imageView.setBackgroundResource(R.drawable.animation_list); 
 | 
        anim= (AnimationDrawable) imageView.getBackground(); 
 | 
        addView(imageView, SmartUtil.dp2px(30), SmartUtil.dp2px(30)); 
 | 
        setGravity(Gravity.CENTER); 
 | 
    } 
 | 
  
 | 
    @NonNull 
 | 
    @Override 
 | 
    public View getView() { 
 | 
        return this; 
 | 
    } 
 | 
  
 | 
    @NonNull 
 | 
    @Override 
 | 
    public SpinnerStyle getSpinnerStyle() { 
 | 
        return SpinnerStyle.Translate; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void setPrimaryColors(int... colors) { 
 | 
        //srlPrimaryColor 
 | 
        if(colors.length>0){ 
 | 
            if(!mSrlPrimaryColor&&!(getBackground() instanceof BitmapDrawable)){ 
 | 
                setBackgroundColor(colors[0]); 
 | 
                mSrlPrimaryColor=true; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onInitialized(@NonNull RefreshKernel kernel, int height, int maxDragHeight) { 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onMoving(boolean isDragging, float percent, int offset, int height, int maxDragHeight) { 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onReleased(@NonNull RefreshLayout refreshLayout, int height, int maxDragHeight) { 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onStartAnimator(@NonNull RefreshLayout refreshLayout, int height, int maxDragHeight) { 
 | 
        anim.start(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public int onFinish(@NonNull RefreshLayout refreshLayout, boolean success) { 
 | 
        if(rxTimerUtil==null){ 
 | 
            rxTimerUtil = new RxTimerUtil(); 
 | 
        } 
 | 
        rxTimerUtil.timer(200, new RxTimerUtil.IRxNext() { 
 | 
            @Override 
 | 
            public void doNext(long number) { 
 | 
                imageView.setVisibility(GONE); 
 | 
                anim.stop(); 
 | 
            } 
 | 
        }); 
 | 
  
 | 
        return 200; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onHorizontalDrag(float percentX, int offsetX, int offsetMax) { 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public boolean isSupportHorizontalDrag() { 
 | 
        return false; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void onStateChanged(@NonNull RefreshLayout refreshLayout, @NonNull RefreshState oldState, @NonNull RefreshState newState) { 
 | 
        switch (newState) { 
 | 
            case None: 
 | 
            case PullDownToRefresh: 
 | 
            case Refreshing: 
 | 
                //anim.start(); 
 | 
                imageView.setVisibility(VISIBLE); 
 | 
                break; 
 | 
            case ReleaseToRefresh: 
 | 
  
 | 
                break; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    protected void onDetachedFromWindow() { 
 | 
        super.onDetachedFromWindow(); 
 | 
        if(rxTimerUtil!=null) { 
 | 
            rxTimerUtil.cancel(); 
 | 
        } 
 | 
    } 
 | 
} 
 |