package zone.com.zrefreshlayoutdemo.header; import android.app.Activity; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import zone.com.zrefreshlayout.AUtils; import zone.com.zrefreshlayout.AnimateBack; import zone.com.zrefreshlayout.IHeaderView; import zone.com.zrefreshlayout.R; import zone.com.zrefreshlayout.ZRefreshLayout; import zone.com.zrefreshlayout.utils.ScreenUtils; import zone.com.zrefreshlayoutdemo.header.view.AnimationView; import static zone.com.zrefreshlayout.utils.LogUtils.log; /** * Created by fuzhipeng on 2017/1/13. */ public class CircleRefresh implements IHeaderView { private View rootView; private AnimationView mHeaderWaveCircle; private int mHeaderCircleSmaller = 6; private ZRefreshLayout.IScroll iScroll; private LinearLayout ll_main; private int[] screenPixs; @Override public View getView(ZRefreshLayout zRefreshLayout) { rootView = View.inflate(zRefreshLayout.getContext(), R.layout.header_meterial, null); // rootView.setBackgroundColor(Color.RED); //注意inflate那种模式 第一层需要空出去 不然会wrapcontent ll_main = (LinearLayout) rootView.findViewById(R.id.ll_main); screenPixs = ScreenUtils.getScreenPix((Activity) zRefreshLayout.getContext()); ll_main.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT , (int) (screenPixs[1] * 0.2))); AUtils.setHeaderHeightToRefresh(zRefreshLayout,(int) (screenPixs[1] * 0.2*0.8)); addView(); return rootView; } private void addView() { ll_main.removeAllViews(); mHeaderWaveCircle = new AnimationView(rootView.getContext()); mHeaderWaveCircle.setBackgroundColor(Color.parseColor("#ffdb6e")); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (screenPixs[1] * 0.2)); mHeaderWaveCircle.setLayoutParams(params); ll_main.addView(mHeaderWaveCircle); mHeaderWaveCircle.setAniBackColor(Color.parseColor("#ffdb6e")); mHeaderWaveCircle.setAniForeColor(Color.WHITE); mHeaderWaveCircle.setRadius(mHeaderCircleSmaller); mHeaderWaveCircle.setOnViewAniDone(new AnimationView.OnViewAniDone() { @Override public void viewAniDone() { // Log.i(TAG, "should invoke"); log("viewAniDone"); //刷新动画 延迟完毕 AUtils.smoothScrollTo_NotIntercept(iScroll,0); } }); } @Override public void onPullingDown(float fraction, float headHeight) { } @Override public void refreshAble(boolean refreshAble) { if (refreshAble) { mHeaderWaveCircle.releaseDrag(); } } private AnimateBack mAnimateBack = AnimateBack.None; @Override public void animateBack(AnimateBack animateBack, float fraction, float headHeight, boolean isPinContent) { mAnimateBack = animateBack; } //这里主要是对延迟刷新的处理 @Override public boolean interceptAnimateBack(AnimateBack animateBack, ZRefreshLayout.IScroll iScroll) { this.iScroll = iScroll; boolean result = false; if (mAnimateBack != animateBack && animateBack == AnimateBack.Complete_Back) { mHeaderWaveCircle.setRefreshing(false);//刷新动画 result = true; } mAnimateBack = animateBack; //返回结果就是是否拦截 return result; } @Override public void onRefreshing(float headHeight, boolean isAutoRefresh) { } @Override public void onComplete() { addView(); } @Override public IHeaderView clone_() { return new CircleRefresh(); } }