标签:android actionbar-pulltorefr
写在前面:轮子不会造,还不会用轮子么?会用了就可以修,就可以优化了。
ActionBar-PullToRefresh是一个开源的下拉刷新控件,基于ActionBar的,在下拉时变化的是ActionBar,ActionBar的低端有横向滑动的进度条。
这里我记录一下我是如何使用它的。
源地址:https://github.com/chrisbanes/ActionBar-PullToRefresh
使用ActionBar-PullToRefresh,我们还需要一个开源控件,SmoothProgressBar,https://github.com/castorflex/SmoothProgressBar
第一步,将两个包down下来。
。。。。
第二步,将SmoothProgressBar导入。
我在百度搜索ActionBar-PullToRefresh的使用时,大家都说是要引用工程啊,gradle啊,我都看不懂啊,我只知道把源码直接复制进来,ok,开始吧。
你所需要的包的路径:SmoothProgressBar-master\library\src\main
下面有两个文件夹 java 和 res
res里面有两个value的文件夹,把里面的xml文件稍微改下名字,扔到你的项目里吧。
java里面有一个fr文件夹,我们所需要的代码在fr\castorflex\android\smoothprogressbar里面,直接把fr扔到你的项目里吧。
然后改一改R文件的引用,搞定。
第三步,将ActionBar-PullToRefresh导入。
ActionBar-PullToRefresh-master目录下面有4个文件,extras,gradle,library,samples,其中我用到了extras,library,借鉴了samples里面的代码
(1)libray里面,ActionBar-PullToRefresh-master\library\src\main
下面有两个文件夹 java 和 res
导入方法类似,资源文件改改文件名,复制到项目对应的位置,src文件改一下R文件的引用
(2)由于我一般要支持2.3的机型,所以需要使用ActionBarCompt,这时就需要导入extras里面的东西
ActionBar-PullToRefresh-master\extras\actionbarcompat\src\main
导入方法类似
所需要的东西都导入之后,可以看到src文件是这样子的
library里面应该是有一些多余的文件,不过我懒得去筛了。
第四步,使用
使用就简单了,github上面也有例子。下面贴上我的简单sample,是借鉴samples下面的listActivity
<?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(); } }
ActionBar-PullToRefresh使用,布布扣,bubuko.com
标签:android actionbar-pulltorefr
原文地址:http://blog.csdn.net/archer_zoro/article/details/38441123