package com.aspsine.swipetoloadlayout.demo.view.header; import android.content.Context; import android.util.AttributeSet; import android.widget.FrameLayout; import android.widget.ImageView; import com.aspsine.swipetoloadlayout.SwipeRefreshTrigger; import com.aspsine.swipetoloadlayout.SwipeTrigger; import com.aspsine.swipetoloadlayout.demo.R; import com.aspsine.swipetoloadlayout.demo.util.DensityUtil; import com.aspsine.swipetoloadlayout.demo.view.drawable.yalantis.BaseRefreshDrawable; import com.aspsine.swipetoloadlayout.demo.view.drawable.yalantis.SunRefreshDrawable; /** * Created by Aspsine on 2015/11/5. */ public class YalantisPhoenixRefreshHeaderView extends FrameLayout implements SwipeTrigger, SwipeRefreshTrigger { private ImageView ivRefresh; private BaseRefreshDrawable mDrawable; private int mTriggerOffset; public YalantisPhoenixRefreshHeaderView(Context context) { this(context, null); } public YalantisPhoenixRefreshHeaderView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public YalantisPhoenixRefreshHeaderView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mTriggerOffset = getResources().getDimensionPixelOffset(R.dimen.refresh_header_height_yalantis); } @Override protected void onFinishInflate() { super.onFinishInflate(); ivRefresh = (ImageView) findViewById(R.id.ivRefresh); mDrawable = new SunRefreshDrawable(getContext(), this, mTriggerOffset, DensityUtil.getScreenWidth(getContext())); ivRefresh.setBackgroundDrawable(mDrawable); } @Override public void onRefresh() { if (!mDrawable.isRunning()){ mDrawable.start(); } } @Override public void onPrepare() { } private int mOldY = 0; @Override public void onMove(int y, boolean isComplete, boolean automatic) { int delta = y - mOldY; mDrawable.offsetTopAndBottom(delta); mDrawable.setPercent(y / (float) mTriggerOffset, true); mOldY = y; } @Override public void onRelease() { if (!mDrawable.isRunning()){ mDrawable.start(); } } @Override public void onComplete() { } @Override public void onReset() { mDrawable.stop(); } }