基本概念
Jar vs Library Project
Jar:打包的的是.class文件,只有java code,目前还不支持包含resources.「如果只有code,那么适合jar方式」
Library Project:可以java code,resource「layouts,themes etc」「如果你需要重用res文件,那么适合Android library project」
1. 如果你使用ant打包,那么在 project.properties添加
1 | android.library.reference. 1 =../Android-PullToRefresh 「相对路径」 |
3 | android update project -p . --library ../Android-PullToRefresh</pre> |
4 | Updated project.properties |
5 | Updated local.properties |
6 | 需要检查下上面updated的文件「有可能重复」 |
2. 使用Android Studio
2 | 添加依赖「add Android-PullToRefresh as a dependency to project」 |
1. layout添加内容:
2 | < com.handmark.pulltorefresh.library.PullToRefreshListView |
3 | android:id = "@+id/pull_refresh_list" |
4 | android:layout_width = "fill_parent" |
5 | android:layout_height = "fill_parent" |
6 | android:cacheColorHint = "#00000000" |
7 | android:divider = "#19000000" |
8 | android:dividerHeight = "4dp" |
9 | android:fadingEdge = "none" |
10 | android:fastScrollEnabled = "false" |
11 | android:footerDividersEnabled = "false" |
12 | android:headerDividersEnabled = "false" |
13 | android:smoothScrollbar = "true" /> |
2. 代码修改「如果你已经存在listview的话,包括Adapter」
1 | public class demoListActivity extends Activity implements PullToRefreshBase.OnRefreshListener<ListView> { |
4 | private PullToRefreshListView mPullRefreshListView; |
8 | mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list); |
10 | mPullRefreshListView.setOnRefreshListener( this ); |
16 | public void onRefresh(PullToRefreshBase<ListView> refreshView) { |
这么几步,你的ListView就支持下拉刷新了。
上拉加载更多:PullToRefreshBase.Mode 设置
2 | mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH); |
3 | public static Mode PULL_DOWN_TO_REFRESH = Mode.PULL_FROM_START; |
4 | public static Mode PULL_UP_TO_REFRESH = Mode.PULL_FROM_END; |
7 | public void onRefresh(PullToRefreshBase<ListView> refreshView) { |
10 | if (PullToRefreshBase.Mode.PULL_FROM_START == mPullRefreshListView.getCurrentMode()) { |
12 | } else if (PullToRefreshBase.Mode.PULL_FROM_END == mPullRefreshListView.getCurrentMode()){ |
数据为空时候的显示
2 | mPullRefreshListView.setEmptyView(emptyView); |
pull最大的距离
2 | static final float FRICTION = 3 .0f; |
3 | private int getMaximumPullScroll() { |
4 | switch (getPullToRefreshScrollDirection()) { |
6 | return Math.round(getWidth() / FRICTION); |
9 | return Math.round(getHeight() / FRICTION); |
新发现有上拉、下拉的接口:PullToRefreshBase.OnRefreshListener2
1 | public class demoListActivity extends Activity implements PullToRefreshBase.OnRefreshListener2<ListView> { |
2 | mPullRefreshListView.setOnRefreshListener( this ); |
6 | public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { |
11 | public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { |
14 | refreshView.post( new Runnable() { |
17 | mPullRefreshListView.onRefreshComplete(); |