SwipeRefreshLayout实现上拉加载
原來的Android SDK中并沒有下拉刷新組件,但是這個(gè)組件確實(shí)絕大多數(shù)APP必備的一個(gè)部件。好在google在v4包中出了一個(gè)SwipeRefreshLayout,但是這個(gè)組件只支持下拉刷新,不支持上拉加載更多的操作。因此,我們就來簡(jiǎn)單的擴(kuò)展一下這個(gè)組件以實(shí)現(xiàn)上拉下載的目的。
基本原理
上拉加載或者說滾動(dòng)到底部時(shí)自動(dòng)加載,都是通過判斷是否滾動(dòng)到了ListView或者其他View的底部,然后觸發(fā)相應(yīng)的操作,這里我們以ListView來說明。因此我們需要在監(jiān)聽ListView的滾動(dòng)事件,當(dāng)ListView滾動(dòng)到底部時(shí)自動(dòng)觸發(fā)加載操作;但是當(dāng)用戶支持手指滑動(dòng)屏幕,沒有滾動(dòng)時(shí),我們也需要讓它加載,因此這種情形就是上拉加載更多。所以我們需要在觸摸事件里面進(jìn)行判斷,如果到了底部,且用戶是上拉操作,那么執(zhí)行加載更多。
時(shí)間有限,直接上代碼吧。
實(shí)現(xiàn)代碼
/*** 繼承自SwipeRefreshLayout,從而實(shí)現(xiàn)滑動(dòng)到底部時(shí)上拉加載更多的功能.* * @author mrsimple*/ public class RefreshLayout extends SwipeRefreshLayout implements OnScrollListener { /** * 滑動(dòng)到最下面時(shí)的上拉操作 */ private int mTouchSlop; /** * listview實(shí)例 */ private ListView mListView; /** * 上拉監(jiān)聽器, 到了最底部的上拉加載操作 */ private OnLoadListener mOnLoadListener; /** * ListView的加載中footer */ private View mListViewFooter; /** * 按下時(shí)的y坐標(biāo) */ private int mYDown; /** * 抬起時(shí)的y坐標(biāo), 與mYDown一起用于滑動(dòng)到底部時(shí)判斷是上拉還是下拉 */ private int mLastY; /** * 是否在加載中 ( 上拉加載更多 ) */ private boolean isLoading = false; /** * @param context */ public RefreshLayout(Context context) { this(context, null); } public RefreshLayout(Context context, AttributeSet attrs) { super(context, attrs); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); mListViewFooter = LayoutInflater.from(context).inflate(R.layout.listview_footer, null, false); }listview_footer.xml:
使用示例
refresh.xml布局文件:
activity中的使用 :
/*** @author mrsimple*/ public class MainActivity extends Activity {效果圖
參考:http://www.codeceo.com/article/android-swiperefreshlayout.html http://blog.csdn.net/ueryueryuery/article/details/17440465 http://blog.csdn.net/ljx19900116/article/details/41648965 http://blog.csdn.net/ozackyg/article/details/40509213轉(zhuǎn)載于:https://www.cnblogs.com/manmanlu/p/5736856.html
總結(jié)
以上是生活随笔為你收集整理的SwipeRefreshLayout实现上拉加载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS识别不同浏览器信息
- 下一篇: 2016 Multi-Universit