安卓實現下拉重新整理上拉載入
前言
Android智慧下拉重新整理框架-SmartRefreshLayout 是github 上的一個開源框架,地址https://github.com/scwang90/SmartRefreshLayout
我做的幾個專案用的都是這個框架,挺好用的。
介紹
正如名字所說,SmartRefreshLayout是一個“聰明”或者“智慧”的下拉重新整理佈局,由於它的“智慧”,它不只是支援所有的View,還支援多層巢狀的檢視結構。它繼承自ViewGroup 而不是FrameLayout或LinearLayout,提高了效能。 也吸取了現在流行的各種重新整理佈局的優點,包括谷歌官方的 SwipeRefreshLayout,其他第三方的 Ultra-Pull-To-Refresh、TwinklingRefreshLayout 。還集成了各種炫酷的 Header 和 Footer。
SmartRefreshLayout的目標是打造一個強大,穩定,成熟的下拉重新整理框架,並整合各種的炫酷、多樣、實用、美觀的Header和Footer。
特點功能:
支援多點觸控 支援巢狀多層的檢視結構 Layout (LinearLayout,FrameLayout...) 支援所有的 View(AbsListView、RecyclerView、WebView....View) 支援自定義並且已經集成了很多炫酷的 Header 和 Footer. 支援和ListView的無縫同步滾動 和 CoordinatorLayout 的巢狀滾動 . 支援自動重新整理、自動上拉載入(自動檢測列表慣性滾動到底部,而不用手動上拉). 支援自定義回彈動畫的插值器,實現各種炫酷的動畫效果. 支援設定主題來適配任何場景的App,不會出現炫酷但很尷尬的情況. 支援設多種滑動方式:平移、拉伸、背後固定、頂層固定、全屏 支援所有可滾動檢視的越界回彈
Demo
專案演示
SmartRefreshLayout 重新整理佈局核心實現,自帶ClassicsHeader(經典)、BezierRadarHeader(貝塞爾雷達)兩個 Header.
SmartRefreshHeader 各種Header的整合,除了Layout自帶的Header,其它都在這個包中.
SmartRefreshFooter 各種Footer的整合,除了Layout自帶的Footer,其它都在這個包中.
簡單用例
1.在 buld.gradle 中新增依賴
//發現bug請加群提出,並切換 1.0.3 版本
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-4'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.4-4'//沒有使用特殊Header,可以不加這行
compile 'com.android.support:appcompat-v7:25.3.1'//版本隨意(必須)
compile 'com.android.support:design:25.3.1'//版本隨意(非必須,引用可以解決無法預覽問題)
//穩定版
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.3'//沒有使用特殊Header,可以不加這行
2.在XML佈局檔案中新增 SmartRefreshLayout
<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smartrefresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:background="#fff" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
3.在 Activity 或者 Fragment 中新增程式碼
RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshlayout) {
refreshlayout.finishRefresh(2000/*,false*/);//傳入false表示重新整理失敗
}
});
refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshlayout) {
refreshlayout.finishLoadmore(2000/*,false*/);//傳入false表示載入失敗
}
});
使用指定的 Header 和 Footer
1.方法一 全域性設定
public class App extends Application {
//static 程式碼段可以防止記憶體洩露
static {
//設定全域性的Header構建器
SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() {
@Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全域性設定主題顏色
return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新於 %s"));//指定為經典Header,預設是 貝塞爾雷達Header
}
});
//設定全域性的Footer構建器
SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() {
@Override
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//指定為經典Footer,預設是 BallPulseFooter
return new ClassicsFooter(context).setDrawableSize(20);
}
});
}
}
注意:方法一 設定的Header和Footer的優先順序是最低的,如果同時還使用了方法二、三,將會被其它方法取代
2.方法二 XML佈局檔案指定
<com.scwang.smartrefresh.layout.SmartRefreshLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#444444"
app:srlPrimaryColor="#444444"
app:srlAccentColor="@android:color/white"
app:srlEnablePreviewInEditMode="true">
<!--srlAccentColor srlPrimaryColor 將會改變 Header 和 Footer 的主題顏色-->
<!--srlEnablePreviewInEditMode 可以開啟和關閉預覽功能-->
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/padding_common"
android:background="@android:color/white"
android:text="@string/description_define_in_xml"/>
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
注意:方法二 XML設定的Header和Footer的優先順序是中等的,會被方法三覆蓋。而且使用本方法的時候,Android Studio 會有預覽效果,如下圖:
不過不用擔心,只是預覽效果,執行的時候只有下拉才會出現~
3.方法三 Java程式碼設定
final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
//設定 Header 為 Material樣式
refreshLayout.setRefreshHeader(new MaterialHeader(this).setShowBezierWave(true));
//設定 Footer 為 球脈衝
refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));
混淆
SmartRefreshLayout 沒有使用到:序列化、反序列化、JNI、反射,所以並不需要新增混淆過濾程式碼,並且已經混淆測試通過
以上內容來自Github,在此只是為了方便學習和使用。
相關推薦
安卓實現下拉重新整理上拉載入
前言 Android智慧下拉重新整理框架-SmartRefreshLayout 是github 上的一個開源框架,地址https://github.com/scwang90/SmartRefreshLayout 我做的幾個專案用的都是這個框架,挺好用的。
react native自定義實現下拉重新整理上拉載入
1·定義元件 PageListView.js /** * 上拉重新整理/下拉載入更多 元件 */ import React, { Component } from 'react'; import { Text, View, ListView, FlatList
vue-scroller的使用 實現下拉重新整理 上拉載入初始效果
安裝vue-scroller npm i vue-scroller -D 在main.js中: import VueScroller from 'vue-scroller' Vue.use(VueScroller) &nbs
MUI下拉重新整理上拉載入實現
DOM結構 <div id="refreshContainer" class="mui-content mui-scroll-wrapper"> <div class="hui-media-list mui-scroll"> <u
Android中ListView下拉重新整理上拉載入更多效果實現
在Android開發中,下拉重新整理和上拉載入更多在很多app中都會有用到,下面就是具體的實現的方法。 首先,我們自定義一個RefreshListView來繼承與ListView,下面是程式碼: package com.example.downrefresh; import
banner實現無限輪播+下拉重新整理上拉載入+ 下拉時 listview 和輪播圖一起重新整理
//首先把所需要的依賴包匯入 gson jar包、imageLoader jar包、banner1.4.9jar包、design jar包,,,然後匯入library,新建專案,把library匯入專案中 //新增許可權 <uses-permiss
Android ListView 實現下拉重新整理上拉載入
1.簡介 無疑,在Android開發中,ListView是使用非常頻繁的控制元件之一,ListView提供一個列表的容易,允許我們以列表的形式將資料展示到介面上,但是Google給我們提供的原生ListView的控制元件,雖然在功能上很強大,但是在使用
使用SwipeRefreshLayout和RecyclerView實現下拉重新整理上拉載入更多
效果圖: 檔案目錄 佈局檔案 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/
Android scrollview中巢狀listview實現listview的下拉重新整理上拉載入更多
我們都知道在Android中scrollview和listview都能滑動,如果scrollview巢狀listview會出現一些問題,比如listview不能正常顯示item...但是在一些專案中,一些頁面內容比較多,需要在外面放一個scrollview,裡面還會巢狀li
快速整合Android實現下拉重新整理上拉載入更多
本文實現一分鐘快速整合BGARefreshLayout下拉重新整理和上拉載入的功能. 這個是簡單單功能的整合方法,詳細BGARefreshLayout請到github中的demo,這只是我簡化版快速整合. 重要的程式碼實現如下: MainActivity類: pub
SwipeRefreshLayout+RecyclerView實現下拉重新整理上拉載入功能
Android Studio 的gradle中新增如下依賴,SwipeRefreshLayout在 support V4 包下,RecyclerView在V7包下,由於V7包內包涵了V4,所以就不需要新增V4的依賴了。 compile 'com.and
Android自定義控制元件實戰——實現仿IOS下拉重新整理上拉載入 PullToRefreshLayout
下拉重新整理控制元件,網上有很多版本,有自定義Layout佈局的,也有封裝控制元件的,各種實現方式的都有。但是很少有人告訴你具體如何實現的,今天我們就來一步步實現自己封裝的 PullToRefreshLayout 完美的解決下拉重新整理,上拉載入問題。
微信小程式 下拉重新整理/上拉載入更多 (上拉載入更多怎麼實現)
實現原理: 1、下拉重新整理:由於小程式資料是實時渲染的。我們把data{}內的資料清空重新載入即可實現下拉重新整理。 2、上拉載入更多(頁面上拉觸底事件):新獲取的資料追加到data{}內的原
react-native-page-listview使用方法(自定義FlatList/ListView下拉重新整理,上拉載入更多,方便的實現分頁)
react-native-page-listview 對ListView/FlatList的封裝,可以很方便的分頁載入網路資料,還支援自定義下拉重新整理View和上拉載入更多的View.相容高版本FlatList和低版本ListVIew.元件會根據你使用的re
vue實現網路圖片瀑布流 + 下拉重新整理 + 上拉載入更多
一、思路分析和效果圖 用vue來實現一個瀑布流效果,載入網路圖片,同時有下拉重新整理和上拉載入更多功能效果。然後針對這幾個效果的實現,捋下思路: 根據載入資料的順序,依次追加標籤展示效果; 選擇哪種方式實現瀑布流,這裡選擇絕對定位方式; 關鍵問題:由於每張圖片的寬高不一樣,而瀑布流中要求所有圖
react native之listview加下拉重新整理上拉分頁
直接上程式碼 var REQUEST_URL = 'xxxx&page='; import React, { Component } from 'react'; import { AppRegistry, Image, StyleSheet, Text, Vie
mui 下拉重新整理 上拉載入
轉自http://ask.dcloud.net.cn/question/1247 動態禁止和恢復上下拉重新整理 留著做個demo 需要暫時禁止和恢復上下拉重新整理,我的初始化程式碼如下: mui.init({ styles: { top: ‘42px’, //子頁面頂部位置
android下拉重新整理,上拉載入更多
public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerview; private ArrayList<Integer> mList = new ArrayL
Android打造 ListView GridView等 通用的下拉重新整理 上拉自動載入的元件
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
下拉重新整理上拉載入框架:android-Ultra-Pull-To-Refresh
下拉重新整理上拉載入框架:PtrClassicFrameLayout 1、一個優雅的框架實現下拉重新整理上拉載入,學習來源:點選開啟連結 2、如何使用: 2.1、在專案中引入: compile 'com.shizhefei:MVCHelper-UltraRefresh:1