package com.jun.elephant.ui.widget;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.ViewGroup;
import com.jun.elephant.util.ResUtil;
import in.srain.cube.views.ptr.PtrFrameLayout;
import in.srain.cube.views.ptr.header.MaterialHeader;
/**
* 刷新控件
* Created by Jun on 2016/3/9.
*
* PtrFrameLayout: 使用自定义头布局或者尾布局
* PtrClassicFrameLayout:使用默认样式
*/
public class MySwipeRefreshLayout extends PtrFrameLayout {
private int[] colors = new int[]{Color.parseColor("#6E9AC1"), Color.parseColor("#6E9AC1"),
Color.parseColor("#6E9AC1"), Color.parseColor("#6E9AC1") };
public MySwipeRefreshLayout(Context context) {
super(context);
this.initConfig();
this.initHeader();
this.initFooter();
}
public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
this.initConfig();
this.initHeader();
this.initFooter();
}
private void initFooter() {
MaterialHeader footer = new MaterialHeader(getContext());
footer.setColorSchemeColors(colors);
footer.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
footer.setPadding(0, 20, 0, 25);
footer.setPtrFrameLayout(this);
this.addPtrUIHandler(footer);
this.setFooterView(footer);
}
private void initHeader() {
MaterialHeader header = new MaterialHeader(getContext());
header.setColorSchemeColors(colors);
header.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
header.setPadding(0, 25, 0, 20);
header.setPtrFrameLayout(this);
this.addPtrUIHandler(header);
this.setHeaderView(header);
}
private void initConfig() {
setOffsetToRefresh(ResUtil.dp2px(getContext(), 100));
/**
* 阻尼系数
* 默认: 1.7f,越大,感觉下拉时越吃力
*/
setResistance(1.7f);
/**
* 触发刷新时移动的位置比例
* 默认,1.2f,移动达到头部高度1.2倍时可触发刷新操作
*/
setRatioOfHeaderHeightToRefresh(1.2f);
/**
* 回弹延时
* 默认 200ms,回弹到刷新高度所用时间
*/
setDurationToClose(200);
/**
* 头部回弹时间
* 默认1000ms
*/
setDurationToCloseHeader(1000);
/**
* 刷新是保持头部
* 默认值 true
*/
setKeepHeaderWhenRefresh(true);
/**
* 下拉刷新 / 释放刷新
* 默认为释放刷新 false
*/
setPullToRefresh(true);
/**
* 刷新时,保持内容不动,仅头部下移, 使用 Material Design 风格才好看一点
* 默认 false
*/
setPinContent(true);
/**
* 刷新模式
* 默认 TOP:只支持下拉
* Bottom:只支持上拉
* BOTH:两种同时支持
*/
setMode(Mode.BOTH);
}
}