这个东西折腾死我了。
参考了这篇博客:http://blog.csdn.net/archer_zoro/article/details/38441123
1.准备工作
ActionBar-PullToRefresh下载:https://github.com/chrisbanes/ActionBar-PullToRefresh
SmoothProgressBar下载: https://github.com/castorflex/SmoothProgressBar
ActionBar-PullToRefresh 下拉的时候底部有个进度条,这个进度条使用的是SmoothProgressBar。2.导入步骤
我在百度搜索ActionBar-PullToRefresh的使用时,大家都说是要引用工程啊,gradle啊,我都看不懂啊,我只知道把源码直接复制进来,ok,开始吧。
+10086啊,我也看不懂啊!!!!
注:我使用的是AndroidStudio。
导入SmoothProgressBar:
1) 源码在 SmoothProgressBar-master\library\src\main 路径下,拷贝出来(直接拷贝fr文件夹),放到你的项目中(建议放到根目录,我的是main\java\ 目录)。
2) res路径下的value拷贝到项目的res\value 中,若存在同名文件,直接将内容合并即可。
3) 重新生成一下,在报错的地方,修改对R文件的引用。
导入SmoothProgressBar 完成。
导入ActionBar-PullToRefresh:
ActionBar-PullToRefresh-master目录下面有4个文件,extras、gradle、library、samples,
其中我用到了extras、library,借鉴了samples里面的代码
导入步骤都是一样的,用到哪个,导入哪个(懒得看,直接全部导入)。
1) 源码在 ActionBar-PullToRefresh-master\library\src\main 路径下,
导入方法类似,资源文件改改文件名,复制到项目对应的位置,src文件改一下R文件的引用。
2)由于我一般要支持2.3的机型,所以需要使用ActionBarCompt,这时就需要导入extras里面的东西
源码在 ActionBar-PullToRefresh-master\extras\actionbarcompat\src\main
导入方法类似 。
3) 导入、合并 res 文件。
所需要的东西都导入之后,可以看到src文件是这样子的(附截图)
接下来就可以使用了
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ptr_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Your content, here we're using a ScrollView -->
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout>
</RelativeLayout>
源文件
public class ActionBarPullToRefreshActivity extends ActionBarActivity implements
OnRefreshListener {
private PullToRefreshLayout mPullToRefreshLayout;
private ListView mListView;
private static String[] ITEMS = { "Abbaye de Belloc",
"Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
"Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu",
"Airag", "Airedale", "Aisy Cendre", "Allgauer Emmentaler",
"Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam",
"Abondance", "Ackawi", "Acorn", "Adelost", "Affidelice au Chablis",
"Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
"Allgauer Emmentaler" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ab_ptr);
// Now find the PullToRefreshLayout to setup
mPullToRefreshLayout = (PullToRefreshLayout) findViewById(R.id.ptr_layout);
// Now setup the PullToRefreshLayout
ActionBarPullToRefresh.from(this)
// Mark All Children as pullable
.allChildrenArePullable()
// Set a OnRefreshListener
.listener(this)
// Finally commit the setup to our PullToRefreshLayout
.setup(mPullToRefreshLayout);
mListView = (ListView) findViewById(R.id.listview);
mListView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, ITEMS));
}
@Override
public void onRefreshStarted(View view) {
// Hide the list
// setListShown(false);
/**
* Simulate Refresh with 4 seconds sleep
*/
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Notify PullToRefreshLayout that the refresh has finished
mPullToRefreshLayout.setRefreshComplete();
}
}.execute();
}
}
这就可以看到效果了,之后就可以自己动手增加自己的逻辑了。
附Demo:(ActionBar-PullToRefresh Demo)。