package com.lcodecore.tkrefreshlayout.header; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.support.annotation.ColorInt; import android.support.annotation.DrawableRes; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import com.lcodecore.tkrefreshlayout.IHeaderView; import com.lcodecore.tkrefreshlayout.OnAnimEndListener; import com.lcodecore.tkrefreshlayout.R; /** * Created by lcodecore on 2016/10/2. */ public class SinaRefreshView extends FrameLayout implements IHeaderView { private ImageView refreshArrow; private ImageView loadingView; private TextView refreshTextView; public SinaRefreshView(Context context) { this(context, null); } public SinaRefreshView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SinaRefreshView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { View rootView = View.inflate(getContext(), R.layout.view_sinaheader, null); refreshArrow = (ImageView) rootView.findViewById(R.id.iv_arrow); refreshTextView = (TextView) rootView.findViewById(R.id.tv); loadingView = (ImageView) rootView.findViewById(R.id.iv_loading); addView(rootView); } public void setArrowResource(@DrawableRes int resId) { refreshArrow.setImageResource(resId); } public void setTextColor(@ColorInt int color) { refreshTextView.setTextColor(color); } public void setPullDownStr(String pullDownStr1) { pullDownStr = pullDownStr1; } public void setReleaseRefreshStr(String releaseRefreshStr1) { releaseRefreshStr = releaseRefreshStr1; } public void setRefreshingStr(String refreshingStr1) { refreshingStr = refreshingStr1; } private String pullDownStr = "下拉刷新"; private String releaseRefreshStr = "释放刷新"; private String refreshingStr = "正在刷新"; @Override public View getView() { return this; } @Override public void onPullingDown(float fraction, float maxHeadHeight, float headHeight) { if (fraction < 1f) refreshTextView.setText(pullDownStr); if (fraction > 1f) refreshTextView.setText(releaseRefreshStr); refreshArrow.setRotation(fraction * headHeight / maxHeadHeight * 180); } @Override public void onPullReleasing(float fraction, float maxHeadHeight, float headHeight) { if (fraction < 1f) { refreshTextView.setText(pullDownStr); refreshArrow.setRotation(fraction * headHeight / maxHeadHeight * 180); if (refreshArrow.getVisibility() == GONE) { refreshArrow.setVisibility(VISIBLE); loadingView.setVisibility(GONE); } } } @Override public void startAnim(float maxHeadHeight, float headHeight) { refreshTextView.setText(refreshingStr); refreshArrow.setVisibility(GONE); loadingView.setVisibility(VISIBLE); ((AnimationDrawable) loadingView.getDrawable()).start(); } @Override public void onFinish(OnAnimEndListener listener) { listener.onAnimEnd(); } @Override public void reset() { refreshArrow.setVisibility(VISIBLE); loadingView.setVisibility(GONE); refreshTextView.setText(pullDownStr); } }