原地址:http://blog.csdn.net/da_caoyuan/article/details/53350040
最近在学习android-Ultra-Pull-To-Refresh框架的使用,发现网上资源是真不少,但是做为初学的我来说,看起来有点蒙圈。在此,我就以初学者的视角来说说这个框架的使用。
先上代码 布局中:
<in.srain.cube.views.ptr.PtrFrameLayout xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/ptr"
android:layout_width="match_parent"
android:layout_height="match_parent"
cube_ptr:ptr_duration_to_close="200"
cube_ptr:ptr_duration_to_close_header="1000"
cube_ptr:ptr_keep_header_when_refresh="true"
cube_ptr:ptr_pull_to_fresh="false"
cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
cube_ptr:ptr_resistance="1.7">
<!--这里可以是任意view-->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:gravity="center"
android:text="I am a TextView"
android:textSize="30sp" />
</in.srain.cube.views.ptr.PtrFrameLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
java中的代码:
public class MainActivity extends AppCompatActivity {
private PtrFrameLayout mPtrFrame;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPtrFrame = (PtrFrameLayout) findViewById(R.id.ptr);
/**
* 在 xml 中配置过了,就不要在这里配置了。
*/
/*mPtrFrame.setResistance(1.7f); //阻尼系数 默认: 1.7f,越大,感觉下拉时越吃力。
mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f); //触发刷新时移动的位置比例 默认,1.2f,移动达到头部高度1.2倍时可触发刷新操作。
mPtrFrame.setDurationToClose(200);//回弹延时 默认 200ms,回弹到刷新高度所用时间
mPtrFrame.setDurationToCloseHeader(1000);//头部回弹时间 默认1000ms
mPtrFrame.setPullToRefresh(false);// 刷新是保持头部 默认值 true.
mPtrFrame.setKeepHeaderWhenRefresh(true);//下拉刷新 / 释放刷新 默认为释放刷新*/
/**
* 经典 风格的头部实现
*/
final PtrClassicDefaultHeader header = new PtrClassicDefaultHeader(this);
header.setPadding(0, PtrLocalDisplay.dp2px(15), 0, 0);
/**
* StoreHouse风格的头部实现
*/
/*final StoreHouseHeader header = new StoreHouseHeader(this);
header.setPadding(0, PtrLocalDisplay.dp2px(15), 0, 0);*/
/**
* using a string, support: A-Z 0-9 - .
* you can add more letters by {@link in.srain.cube.views.ptr.header.StoreHousePath#addChar}
*/
// header.initWithString("Alibaba");
/**
* Material Design风格的头部实现
*/
// final MaterialHeader header = new MaterialHeader(this);
//header.setPadding(0, PtrLocalDisplay.dp2px(15), 0, 0);//显示相关工具类,用于获取用户屏幕宽度、高度以及屏幕密度。同时提供了dp和px的转化方法。
/**
* Rentals Style风格的头部实现
* 这个需要引入这两个类RentalsSunDrawable.java ; RentalsSunHeaderView.java
* 在人家git上的daemon中能找到
*/
/* final RentalsSunHeaderView header = new RentalsSunHeaderView(this);
header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
header.setPadding(0, LocalDisplay.dp2px(15), 0, LocalDisplay.dp2px(10));
header.setUp(mPtrFrame);
mPtrFrame.setLoadingMinTime(1000);
mPtrFrame.setDurationToCloseHeader(1500);*/
// mPtrFrame = (PtrFrameLayout) findViewById(R.id.ptr);
mPtrFrame.setHeaderView(header);
// mPtrFrame.setPinContent(true);//刷新时,保持内容不动,仅头部下移,默认,false
mPtrFrame.addPtrUIHandler(header);
//mPtrFrame.setKeepHeaderWhenRefresh(true);//刷新时保持头部的显示,默认为true
//mPtrFrame.disableWhenHorizontalMove(true);//如果是ViewPager,设置为true,会解决ViewPager滑动冲突问题。
mPtrFrame.setPtrHandler(new PtrHandler() {
//需要加载数据时触发
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
System.out.println("MainActivity.onRefreshBegin");
mPtrFrame.postDelayed(new Runnable() {
@Override
public void run() {
mPtrFrame.refreshComplete();
//mPtrFrame.autoRefresh();//自动刷新
}
}, 1800);
}
/**
* 检查是否可以执行下来刷新,比如列表为空或者列表第一项在最上面时。
*/
@Override
public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
System.out.println("MainActivity.checkCanDoRefresh");
// 默认实现,根据实际情况做改动
return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header);
// return true;
}
});
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
总结:到此基本用法就,就写完了。
android-Ultra-Pull-To-Refresh 框架git地址
【框架学习】【android-Ultra-Pull-To-Refresh】