1. 程式人生 > >安卓實現下拉重新整理上拉載入

安卓實現下拉重新整理上拉載入

前言

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表示載入失敗
    }
});

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