Androidスマートドロップダウン・リフレッシュ・フレームワーク-smartRefreshLayout

15369 ワード

Androidスマートドロップダウン・リフレッシュ・フレームワーク-smartRefreshLayout
English|中国語
名前の通り、SmartRefreshLayoutは「スマート」または「スマート」のドロップダウン・リフレッシュ・レイアウトです.スマートのため、すべてのViewだけでなく、多層ネストされたビュー構造もサポートされています.FrameLayoutやLinearLayoutではなくView Groupから継承され、パフォーマンスが向上します.Google公式のSwipeRefreshLayout、他のサードパーティのUltra-Pull-to-refresh、TwinklingRefreshLayoutなど、現在流行しているさまざまなリフレッシュレイアウトの利点も吸収されています.様々なクールなHeaderとFooterも統合されています.SmartRefreshLayoutの目標は、強力で安定した成熟したドロップダウン・リフレッシュ・フレームワークを構築し、さまざまなクールで多様で実用的で美しいHeaderとFooterを統合することです.
特徴機能:
  • はマルチタッチ
  • をサポートする.
  • は、ネストされた多層のビュー構造Layout(LinearLayout,FrameLayout...)
  • をサポートします.
  • は、すべてのView(AbsListView、RecyclerView、WebView....View)
  • をサポートします.
  • はカスタマイズをサポートし、クールなHeaderとFooterを多く統合しています.
  • はListViewとのシームレスな同期スクロールとCoordinatorLayoutのネストスクロールをサポートする.
  • は自動リフレッシュ、自動プルアップロードをサポートする(手動でプルすることなく、リスト慣性を自動的に底部までスクロールする).
  • はカスタムリバウンドアニメーションの補間器をサポートし、各種のクールなアニメーション効果を実現する.
  • は、どんなシーンにも適したテーマを設定するAppをサポートし、クールで気まずいことはありません.
  • は、平行移動、ストレッチ、バック固定、トップ固定、フルスクリーン
  • の複数のスライド方式をサポートしています.
  • は、スクロール可能なすべてのビューのバウンドバウンド
  • をサポートする.
    トランスファゲート
  • プロパティメソッド
  • インテリジェントな点
  • FAQ
  • 更新ログ
  • ブログ記事
  • ソースコードダウンロード
  • マルチタッチ
  • カスタムHeader
  • Demo
    APK-Demoのダウンロード
    プロジェクトプレゼンテーション
    個人用ページ
    微博リスト
    飲食グルメ
    パーソナルセンター
    スタイルプレゼンテーションStyle
    Delivery
    Dropbox
    Refresh-your-delivery
    Dropbox-Refresh
    上の2つは私自身が実現したもので、下のはgithub上の他の優秀なHeaderを整理して集合して最適化しました.
    BezierRadar
    BezierCircle
    Pull To Refresh
    Pull Down To Refresh
    FlyRefresh
    Classics
    FlyRefresh
    ClassicsHeader
    Phoenix
    Taurus
    Yalantis/Phoenix
    Yalantis/Taurus
    BattleCity
    HitBlock
    FunGame/BattleCity
    FunGame/HitBlock
    WaveSwipe
    Material
    WaveSwipeRefreshLayout
    MaterialHeader
    StoreHouse
    WaterDrop
    Ultra-Pull-To-Refresh
    WaterDrop
    こんなにクールなヘッドをたくさん見て、素晴らしいと思いますか?このとき、こんなに多くのHeaderが統合されているのではないかと心配するかもしれませんが、普段は1つしか使われていません.無駄なコードやリソースをたくさん導入するのではないでしょうか.安心してください.私はもうリフレッシュレイアウトを3つのパッケージに分けました.使うときは自分で引用すればいいです.
  • SmartRefreshLayoutリフレッシュレイアウトコア実装、ClassicsHeader(クラシック)、BezierRadarHeader(ベッセルレーダー)の2つの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);
                    }
                });
        }
    }

    注意:メソッド1で設定されたHeaderとFooterの優先度は最も低く、メソッド2、3が同時に使用されている場合は、他のメソッドに置き換えられます.
    2.メソッド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">
        
        
        <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>

    注意:メソッド2 XMLで設定されたHeaderとFooterの優先度は中程度で、メソッド3で上書きされます.また、本方法を使用する場合、Android Studioでプレビュー効果があります.以下の図です.
    でも心配しないで、プレビュー効果だけで、実行するときはドロップダウンしか現れません~
    3.メソッド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、反射なので、混同フィルタコードを追加する必要はありません.混同テストに合格しました.プロジェクトの使用中に混同した後に問題が発生した場合は、すぐに知らせてください.