亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

SwipeToLoadLayout

2019-11-09 18:32:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

為什么選擇SwipeToLoadLayout?

首先看效果,框架中幫我們實(shí)現(xiàn)了幾個(gè)主流的刷新效果,Twitter style,JD style,google style,Yalantis style,demo也下載下來(lái)看了,真不錯(cuò),還支持各種自定義,自定義頭部和尾部,頭部還分classic,above,blow,scale四種類(lèi)型,還有自動(dòng)刷新的效果,體驗(yàn)也很流暢。

再看代碼,刷新,加載各一個(gè)接口實(shí)現(xiàn),頭部和尾部也都是用接口實(shí)現(xiàn),遵循設(shè)計(jì)模式的依賴(lài)倒轉(zhuǎn)原則原則(針對(duì)抽象而不是針對(duì)具體編程),所以才能具備那么高可塑性,我們要做的就是實(shí)現(xiàn)接口里面的內(nèi)容就可以輕松寫(xiě)一個(gè)刷新效果,就像使用baseAdapter一樣,無(wú)論什么數(shù)據(jù),什么樣式,都可以輕松實(shí)現(xiàn)。

接著看功能,支持各種View和ViewGroup(ListView,ScrollView,RecyclerView,GridView,WebView,Linearlayout,RelativeLayout,F(xiàn)rameLayout,ImageView,TextView等)的刷新和加載,還支持自動(dòng)刷新,手動(dòng)刷新,自動(dòng)加載,手動(dòng)加載,禁止刷新,禁止加載等操作,完全滿(mǎn)足需求。

最后,說(shuō)的這么好,有沒(méi)有經(jīng)過(guò)測(cè)試呢?當(dāng)然了,口說(shuō)無(wú)憑,帶大家實(shí)現(xiàn)一個(gè)。

通過(guò)SwipeToLoadLayout實(shí)現(xiàn)一個(gè)刷新加載的效果

1、如何集成

Step 1. Add the JitPack repository in your build.gradle at the end of repositories:

repositories { maven { url "https://jitpack.io" }}

Step 2. Add the dependency in the form

dependencies { compile 'com.github.aspsine:SwipeToLoadLayout:v1.0.0'}

2,開(kāi)始自定義刷新效果

swipeToLoadLayout提供了一套接口,刷新的頭部自定義一個(gè)View實(shí)現(xiàn)SwipeTrigger和SwipeRefreshTrigger就行了,刷新的尾部自定義一個(gè)View實(shí)現(xiàn)SwipeLoadMoreTrigger和SwipeTrigger,頭部實(shí)現(xiàn)代碼:

public class CustomRefreshHeadView extends TextView implements SwipeRefreshTrigger, SwipeTrigger { public CustomRefreshHeadView(Context context) { super(context); } public CustomRefreshHeadView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomRefreshHeadView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void onRefresh() { setText("正在拼命加載數(shù)據(jù)..."); } @Override public void onPRepare() { } @Override public void onSwipe(int i, boolean b) { setText("釋放刷新"); } @Override public void onRelease() { } @Override public void complete() { setText("刷新成功"); } @Override public void onReset() { }}

xml中使用

注意,swipetoloadlayout中布局包裹的View id是指定的,不能亂改,否則找不到<item name="swipe_target" type="id" />刷新目標(biāo)<item name="swipe_refresh_header" type="id" />刷新頭部<item name="swipe_load_more_footer" type="id" />刷新尾部

<?xml version="1.0" encoding="utf-8"?><com.aspsine.swipetoloadlayout.SwipeToLoadLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/swipeToLoad" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.yyydjk.swipetorefreshdemo.MainActivity"> <com.yyydjk.swipetorefreshdemo.CustomRefreshHeadView android:id="@+id/swipe_refresh_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="20dp" /> <TextView android:id="@+id/swipe_target" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimary" android:gravity="center" android:text="Hello World!" /></com.aspsine.swipetoloadlayout.SwipeToLoadLayout>

代碼中調(diào)用

CustomRefreshHeadView refreshHeadView = new CustomRefreshHeadView(this);refreshHeadView.setPadding(20,20,20,20);refreshHeadView.setGravity(Gravity.CENTER);refreshHeadView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));swipeToLoadLayout.setRefreshHeaderView(refreshHeadView);

就這么簡(jiǎn)單,看下演示效果,做的丑了點(diǎn),以后有時(shí)間弄個(gè)精致點(diǎn)的

swipeToRefresh.gif

轉(zhuǎn)自:http://www.jianshu.com/p/d69ae409a52c

好吧,讓我們?cè)賮?lái)看個(gè)栗子:

Step 1. Create an Simple RefreshHeaderView

public class RefreshHeaderView extends TextView implements SwipeRefreshTrigger, SwipeTrigger {    public RefreshHeaderView(Context context) {        super(context);    }    public RefreshHeaderView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    public void onRefresh() {        setText("REFRESHING");    }    @Override    public void onPrepare() {        setText("");    }    @Override    public void onMove(int yScrolled, boolean isComplete, boolean automatic) {        if (!isComplete) {            if (yScrolled >= getHeight()) {                setText("RELEASE TO REFRESH");            } else {                setText("SWIPE TO REFRESH");            }        } else {            setText("REFRESH RETURNING");        }    }    @Override    public void onRelease() {    }    @Override    public void onComplete() {        setText("COMPLETE");    }    @Override    public void onReset() {        setText("");    }}

Step 2. Create an Simple LoadMoreFooterView

public class LoadMoreFooterView extends TextView implements SwipeTrigger, SwipeLoadMoreTrigger {    public LoadMoreFooterView(Context context) {        super(context);    }    public LoadMoreFooterView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    public void onLoadMore() {        setText("LOADING MORE");    }    @Override    public void onPrepare() {        setText("");    }    @Override    public void onMove(int yScrolled, boolean isComplete, boolean automatic) {        if (!isComplete) {            if (yScrolled <= -getHeight()) {                setText("RELEASE TO LOAD MORE");            } else {                setText("SWIPE TO LOAD MORE");            }        } else {            setText("LOAD MORE RETURNING");        }    }    @Override    public void onRelease() {        setText("LOADING MORE");    }    @Override    public void onComplete() {        setText("COMPLETE");    }    @Override    public void onReset() {        setText("");    }}

Step 3. Edit activity layout xml

<?xml version="1.0" encoding="utf-8"?><com.aspsine.swipetoloadlayout.SwipeToLoadLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/swipeToLoadLayout"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.aspsine.swipetoloadlayoutdemo.MainActivity">    <com.aspsine.swipetoloadlayoutdemo.RefreshHeaderView        android:id="@id/swipe_refresh_header"        android:layout_width="match_parent"        android:gravity="center"        android:layout_height="100dp" />    <ListView        android:id="@id/swipe_target"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <com.aspsine.swipetoloadlayoutdemo.LoadMoreFooterView        android:id="@id/swipe_load_more_footer"        android:layout_width="match_parent"        android:gravity="center"        android:layout_height="100dp" /></com.aspsine.swipetoloadlayout.SwipeToLoadLayout>

Note:

refresh header view android:id="@id/swipe_refresh_header"target view android:id="@id/swipe_target"load more footer view android:id="@id/swipe_load_more_footer"

Step 4. Write java code

public class MainActivity extends AppCompatActivity implements OnRefreshListener, OnLoadMoreListener {    SwipeToLoadLayout swipeToLoadLayout;    ArrayAdapter<String> mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        swipeToLoadLayout = (SwipeToLoadLayout) findViewById(R.id.swipeToLoadLayout);        ListView listView = (ListView) findViewById(R.id.swipe_target);        swipeToLoadLayout.setOnRefreshListener(this);        swipeToLoadLayout.setOnLoadMoreListener(this);        mAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_expandable_list_item_1);        listView.setAdapter(mAdapter);        autoRefresh();    }    @Override    public void onRefresh() {        swipeToLoadLayout.postDelayed(new Runnable() {            @Override            public void run() {                swipeToLoadLayout.setRefreshing(false);                mAdapter.add("REFRESH:/n" + new Date());            }        }, 2000);    }    @Override    public void onLoadMore() {        swipeToLoadLayout.postDelayed(new Runnable() {            @Override            public void run() {                swipeToLoadLayout.setLoadingMore(false);                mAdapter.add("LOAD MORE:/n" + new Date());            }        }, 2000);    }    private void autoRefresh() {        swipeToLoadLayout.post(new Runnable() {            @Override            public void run() {                swipeToLoadLayout.setRefreshing(true);            }        });    }}demo地址:https://github.com/Aspsine/SwipeToLoadLayout.git哈哈,這下應(yīng)該沒(méi)問(wèn)題啦!參考文檔:https://github.com/Aspsine/SwipeToLoadLayout/wiki/Quick-Setup
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久久久综合av| 日韩在线视频二区| 国产黄在线观看免费观看不卡| 免费一级肉体全黄毛片| 人成免费电影一二三区在线观看| 欧美精品欧美精品系列| 亚洲精品一卡二卡三卡四卡| 国产精品精品久久久| 欧美福利一区二区三区| 一区二区视频免费| 香港经典三级在线| 欧美极品少妇xxxxⅹ免费视频| 日本不卡在线视频| 蜜桃在线一区二区三区| 亚洲手机成人高清视频| 久久久久麻豆v国产精华液好用吗| www.天堂乱色| 国产精品99久久久久久久久久久久| 免费久久99精品国产自| 日本三级午夜理伦三级三| 国产av不卡一区二区| 在线天堂中文资源最新版| 激情六月丁香婷婷| 可以直接在线观看的av| 中文在线资源观看网站视频免费不卡| 97精品国产97久久久久久春色| 国产一区二区三区美女| 91视频免费网站| 国产jizz| 天天av天天翘天天综合网| 伊人久久综合97精品| 日韩最新中文字幕| 福利片在线播放| 九九热在线精品视频| 国产精品久久久久久久久久ktv| 国产精品进线69影院| 一区二区精品在线观看| 亚洲精品aⅴ中文字幕乱码| 精品久久久久久久一区二区蜜臀| 久久国产精品久久精品国产| 首页综合国产亚洲丝袜| 久久99久国产精品黄毛片入口| 国产超碰人人爽人人做人人爱| 欧美性猛交xx乱大交| 51国产偷自视频区视频| 国产福利片在线观看| 国产一区二区三区成人欧美日韩在线观看| 日韩美女主播视频| 在线观看国产一级片| wwww.国产| 欧美日韩国产大片| 日韩精品三区| 3d动漫啪啪精品一区二区免费| 国产精品美女主播在线观看纯欲| 欧美日韩麻豆| 91成人福利视频| 国产在线无码精品| www.激情| 亚洲色图狠狠干| 波多野结衣精品久久| 男女超爽视频免费播放| 欧美精选一区二区| 嫩草影院懂你的影院| 欧美freesex8一10精品| 国产欧美日韩精品综合| 手机看片1024国产| 一区二区高清不卡| 亚洲精品第二页| jizz久久精品永久免费| 日韩欧美在线视频| 一区二区三区久久久| 欧美精品尤物在线观看| 欧美视频精品全部免费观看| 久久久久久久久久一级| 99re6这里只有精品视频在线观看| 国产欧美精品日韩区二区麻豆天美| av色图一区| 亚洲国产精品精华素| 99国产精品久久久| 视频一区二区三区不卡| 免费a级片在线观看| 不卡的日韩av| 中文字幕2018| www亚洲人| 欧美日韩色视频| 亚洲色图激情小说| 草莓视频18免费观看| 国产一级黄色片免费| 国产精品99久久免费观看| 欧美男女性生活在线直播观看| 中国一区二区视频| 99综合视频| 99久久er热在这里只有精品66| 精品三级在线| 四虎成人永久免费视频| 日韩欧美亚洲国产另类| 日本亚洲欧美| 主播大秀视频在线观看一区二区| 精品国产自在精品国产浪潮| www.黄色com| 中文字幕在线一区免费| 欧美色图免费看| 美女被啪啪一区二区| 天天撸天天射| 亚洲AV无码精品色毛片浪潮| 国产精品久久久99| f2c人成在线观看免费视频| 国产乱理伦片在线观看夜一区| 久久久久久久久免费视频| 日韩精品无码一区二区| 精品人妻一区二区色欲产成人| 精品国产乱码久久久久久郑州公司| 一二三区精品| 国产精品无码久久av| 最新69国产成人精品视频免费| 欧洲杯什么时候开赛| 美女的诞生在线观看高清免费完整版中文| 亚洲国产精品成人久久蜜臀| 国产在线无码精品| 成人乱人伦精品视频在线观看| 久久人人爽爽爽人久久久| 成人av网站在线观看免费| 香艳视频网站| 欧美久久久久久久久久| 伪装者免费全集在线观看| 91人妻一区二区| 18欧美亚洲精品| 免费成人av| 在线欧美三级| 精品一区电影国产| 国产精品v片在线观看不卡| 亚洲图片久久| 成人av中文字幕| 国产尤物一区二区在线| 中文字幕一区电影| 奇米影视一区二区三区小说| 久久国产精品久久| 中文字幕欧美日韩va免费视频| 亚洲少妇中文在线| 成a人片亚洲日本久久| 视频在线国产| 日韩精品一区二区三区四区五区| 色婷婷一区二区三区| 欧美日韩加勒比精品一区| 欧美在线不卡视频| 91精品久久久久久久久久入口| 国产精品亚洲视频在线观看| 美女黄色成人网| 综合欧美亚洲日本| 欧美videossexotv100| 欧美美女bb生活片| 国语一区二区三区| 欧美日韩小视频| av电影网站在线观看| 国产精品一区二区精品| 亚洲欧美另类人妖| 精品国产一区二区三区不卡蜜臂| 无码精品一区二区三区在线| 最新中文字幕免费| 超碰97久久国产精品牛牛| 嫩草影院懂你的影院| 国产精品毛片a∨一区二区三区| 亚洲欧美三级在线| 夜色激情一区二区| 日本一卡二卡在线播放| 日本在线观看一区二区| 日韩成人一级片| 亚洲第一精品自拍| 中文字幕影片免费在线观看| 国产伦精品一区二区三区精品| 亚洲国产精品久久久久婷婷884| 巨胸喷奶水www久久久免费动漫| 一本色道久久综合狠狠躁的推荐| 三上悠亚亚洲一区| 先锋影音久久久| 伊人性伊人情综合网| 奇米777四色影视在线看| 亚洲免费一级片| 国产精品18久久久久| 欧美精品vⅰdeose4hd| 欧美xxxx性xxxxx高清视频| 欧美 日韩 国产 在线观看| 日本在线视频中文字幕| av资源网站在线观看| 国内精品久久久久伊人av| 国产一区二区伦理| 999久久久精品一区二区| 亚洲最大激情网| 成熟丰满熟妇高潮xxxxx视频| 激情不卡一区二区三区视频在线| 在线看av的网址| 国产在线一区二区综合免费视频| 女人十八岁毛片| 日韩福利一区二区三区| 永久免费看mv网站入口78| 97久久精品人人爽人人爽蜜臀| 午夜时刻免费入口| 日本大胆人体视频| 丁香花在线观看完整版电影| 视频一区国产精品| 中文字幕中文字幕一区二区| 美女网站视频在线| 中文字幕亚洲欧美在线不卡| 久久人人97超碰国产公开结果| 亚洲最新合集| 日本精品入口免费视频| 亚洲v日韩v欧美v综合| 日韩夫妻性生活xx| 日韩精品一区二区三区中文| 99久热re在线精品996热视频| 麻豆免费在线| 在线观看免费视频黄| 这里只有精品9| 亚洲免费黄色网| 小早川怜子痴女在线精品视频| 婷婷激情综合五月天| 男人添女人下部高潮视频在线观看| 99成人精品视频| 在线电影一区二区| 免费三片在线播放| 在线观看中文字幕2021| 4hu四虎永久在线观看| 伊人精品久久久久7777| 国产在线xxx| 中文字幕 久热精品 视频在线| 欧美韩国一区二区| 亚洲精品第三页| 成人免费网站在线观看视频| 久久亚洲精精品中文字幕| 久99久精品视频免费观看| 亚洲男人天堂色| 日本动漫同人动漫在线观看| 深田えいみ中文字幕99久久| 欧美性xxxx交| 波多野结衣 久久| 欧美午夜美女看片| 日韩中文字幕在线观看视频| 国产精品45p| 91麻豆一二三四在线| 九色视频网站入口| 波多野结衣啪啪| 波多野结衣黄色| 国产成人亚洲精品乱码在线观看| 国产在线国偷精品产拍免费yy| 自拍视频一区| 亚洲成人偷拍| 一本一本久久a久久综合精品| 亚洲国产片色| jlzzjlzz亚洲女人| 今天免费高清在线观看国语| 五月婷婷色综合| 日韩精品久久久久久久酒店| 第一次破处视频| www.黄色一片| 国产成人黄色| 在线播放不卡| 国产二区不卡| 精品精品国产高清一毛片一天堂| 精品国产乱码久久久久夜深人妻| 一区二区精品在线观看| 这里只有精品999| 欧美一区三区三区高中清蜜桃| 欧美私人免费视频| 99精品国产在热久久婷婷| 欧美午夜a级限制福利片| 亚洲国产激情一区二区三区| 精品午夜一区二区三区| 中文字幕亚洲精品视频| 亚洲自拍偷拍福利| 影音先锋日韩资源| 四虎影视最新网址| 另类free性欧美护士| 黄色毛片免费| 性做久久久久久久久久| 中文文字幕一区二区三三| 看av免费毛片手机播放| 日日狠狠久久| 国产中文欧美日韩在线| 成人午夜888| 手机在线免费观看毛片| 亚洲久久成人| 成人午夜视频在线观看| 日韩精品视频在线看| 欧美日韩一区二区三区免费| 免费在线看电影| 欧美精品成人网| 黄色一级片黄色| xvideos国产精品| 日本免费高清不卡| 91精品免费观看| 欧美视频不卡| 成人激情免费电影网址| 美女被久久久| 色婷婷成人综合| 天堂久久一区二区三区| 国产精品实拍| 亚洲最新在线视频| 玖玖在线免费视频| 欧美做爰性生交视频| 精品国产综合区久久久久久| 日韩精品视频中文在线观看| 欧美综合在线观看| 最近日韩免费视频| 国产精品偷伦视频免费观看国产| 日韩欧亚中文在线| 18欧美亚洲精品| 亚洲综合极品香蕉久久网| 久热中文字幕在线精品首页| 国产精品白浆视频免费观看| 欧美一区二区三区视频在线| 国产精品一区免费视频| 视频一区二区三区四区五区| 亚洲无码精品在线播放| 亚洲精华国产| 免费一级淫片aaa片毛片a级| 中文字幕在线免费视频| 国产在线观看免费av| 99久久婷婷国产综合精品首页| 国产欧美日韩成人| 日韩av无码一区二区三区不卡| 在线中文字幕一区二区| 天海翼精品一区二区三区| 亚洲a∨日韩av高清在线观看| 亚洲色婷婷综合开心网| 欧美一级艳片视频免费观看| 日本在线观看不卡视频| 国产精品国产三级国产aⅴ中文| 国产一级片大全|