package com.sxjs.common.widget.headerview;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.sxjs.common.R;
import com.sxjs.common.widget.pulltorefresh.PtrFrameLayout;
import com.sxjs.common.widget.pulltorefresh.PtrUIHandler;
import com.sxjs.common.widget.pulltorefresh.indicator.PtrIndicator;
/**
* Created by admin on 2017/2/23.
*/
public class JDHeaderView extends PtrFrameLayout implements PtrUIHandler {
private TextView status_text;
private ImageView ren;
private ImageView hezi;
private int viewHeight;
private ImageView donghua;
private AnimationDrawable drawable;
private RefreshDistanceListener listener;
/**
* 自开始下拉 0.2倍height内是否执行了缩放,
*/
private boolean isScale;
public void setOnRefreshDistanceListener(RefreshDistanceListener listener) {
this.listener = listener;
}
public JDHeaderView(Context context) {
super(context);
initView();
}
public JDHeaderView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public JDHeaderView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
}
private void initView() {
View view = View.inflate(this.getContext(), R.layout.jingdongheaderviewlayout,null);
status_text = (TextView) view.findViewById(R.id.status_test);
ren = (ImageView) view.findViewById(R.id.ren);
hezi = (ImageView) view.findViewById(R.id.hezi);
donghua = (ImageView) view.findViewById(R.id.donghua);
drawable = (AnimationDrawable) donghua.getDrawable();
setRatioOfHeaderHeightToRefresh(1.0f);
setHeaderView(view);
addPtrUIHandler(this);
}
@Override
public void onUIReset(PtrFrameLayout frame) {
drawable.stop();
donghua.setVisibility(View.GONE);
ren.setVisibility(View.VISIBLE);
hezi.setVisibility(View.VISIBLE);
}
@Override
public void onUIRefreshPrepare(PtrFrameLayout frame) {
if(frame.isPullToRefresh()){
status_text.setText("松开刷新...");
}else{
status_text.setText("下拉刷新...");
}
}
@Override
public void onUIRefreshBegin(PtrFrameLayout frame) {
ren.setVisibility(View.GONE);
hezi.setVisibility(View.GONE);
donghua.setVisibility(View.VISIBLE);
drawable.start();
status_text.setText("更新中...");
}
@Override
public void onUIRefreshComplete(PtrFrameLayout frame) {
}
private static final String TAG = "JDHeaderView";
@Override
public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
//ptrIndicator.setRatioOfHeaderHeightToRefresh(1.0f);
final int mOffsetToRefresh = frame.getOffsetToRefresh();
final int currentPos = ptrIndicator.getCurrentPosY();
final int lastPos = ptrIndicator.getLastPosY();
if(listener != null){
listener.onPositionChange(currentPos);
}
if(viewHeight == 0)
viewHeight = ptrIndicator.getHeaderHeight();
float v = currentPos * 1.0f / viewHeight;
if(v > 1)v= 1;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
//此处防止首次下拉到0.2height时突然缩小
if(!isScale && v <= 0.2){
isScale = true;
setImgScale(0.2f);
}
if(v > 0.2){
setImgScale(v);
}
}
if (currentPos < mOffsetToRefresh && lastPos >= mOffsetToRefresh) {
if (isUnderTouch && status == PtrFrameLayout.PTR_STATUS_PREPARE) {
status_text.setText("下拉刷新...");
}
} else if (currentPos > mOffsetToRefresh && lastPos <= mOffsetToRefresh) {
if (isUnderTouch && status == PtrFrameLayout.PTR_STATUS_PREPARE) {
status_text.setText("松开刷新...");
}
}
}
private void setImgScale(float v) {
ren.setScaleY(v);
ren.setScaleX(v);
hezi.setScaleY(v);
hezi.setScaleX(v);
}
public interface RefreshDistanceListener{
void onPositionChange(int currentPosY);
}
}