商城项目实战 | 8.1 SwipeRefreshLayout 详解 官方下拉刷新控件_创业商机网

admin 2019-11-19 09:19 阅读:0

合肥创业项目搜王道下拉本文为菜鸟窝作者刘婷的连载。”商城名目实战”系列来聊聊仿”京东淘宝的购物商城”怎么样实现。

SwipeRefreshLayout 是 Google 公司推出的用于下拉革新的控件,在 SDK Version 19.1以后, SwipeRefreshLayout 曾经经被放到了 SDK 中,作为民间的下拉革新控件,SwipeRefreshLayout 也是备受开辟者的关注。 SwipeRefreshLayout 的相干要抢介绍

SwipeRefreshLayout 继承于 ViewGroup ,在属性方面以及根本的控件不甚么特别,所以就重要介绍 SwipeRefreshLayout 的一些紧张的相干方法。 1. setColorSchemeResources( int... colorResIds )

setColorSchemeResources() 方法在利用 SwipeRefreshLayout 中常常利用,该方法是用于配置下拉进度条的色彩主题,参数为可变参数,而且是 color 的资本 id 值,能够配置多种差此外色彩,每一转一圈就表现一种颜色,使患上下拉刷新的结果美化了很多。方法的使用很简单,如下。

swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
                android.R.color.holo_green_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_red_light);

2. setDistanceToTriggerSync( int distance )

必要传入 int 型参数 distance ,该参数表现的手势下拉的间隔,所以这个方法的感化也就明白了,便是设置手势滑动的间隔的多少来末尾响应下拉刷新变乱,下拉的距离有个默认值,也便是64。

private static final int DEFAULT_CIRCLE_TARGET = 64;

3. setOnRefreshListener()

这个方法看名字即能够知道是用于设置监听的,以及 setOnClickListener() 雷同,可是里面必要重写的是 onRefresh() 方法,顶手下拉时会挪用这个方法,在里面实现哀求数据的逻辑,设置下拉进度条散失等等。

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {

             //实现哀求数据的逻辑,设置下拉进度条散失等等

            }
        });

4. setRefreshing(boolean refreshing)

这个方法中传入的是个 boolean 范例的参数,是用于设置刷新形态的,其中传入的参数 refreshing 为 true表现正在刷新,false 则表示撤消刷新,日常使用环境是针对于付下拉刷新的末尾和结束时刷新控件的表现和隐蔽,下面表示的是刷新结束,刷新提醒进度条消失。

swipeRefreshLayout.setRefreshing(false);

5. isRefreshing()

了解了后面的 setRefreshing() 方法,对于付这个方法该当也年夜约知道是啥了,该方法前往的是 boolean 范例,其中 true表斧正在刷新,false 则表示撤消刷新,也就是前往刷新的形态,开辟者可以经过判定返回的刷新状态做响应的处理惩罚。

swipeRefreshLayout.isRefreshing();

6. setProgressBackgroundColorSchemeColor(int colorRes)

这个方法也是用于设置进度条的款式的,是设置下拉进度条的配景颜色,默认环境下,进度条配景颜色为红色。这里可以传入 color 的资本 id 值,也可以间接传入 color 的 id 值,下面传入的是资源 id 值。

swipeRefreshLayout.setProgressBackgroundColorSchemeColor(getResources().getColor(R.color.item_press));

SwipeRefreshLayout 的使用

在 SwipeRefreshLayout 控件使历时需要包裹一个滑动控件,比如 ScrollView 、ListView 和 GridView 等,如今有个更换 ListView 和 GridView 的列表滑动控件,也就是 RecyclerView ,这里就介绍下 SwipeRefreshLayout 中嵌套 RecyclerView 的简单使用,对于 RecyclerView 的具体介绍和使用可以参考文章《商城名目实战 | 4.1 RecyclerView 使用完整分析 体验艺术般的控件(一)》和《商城项目实战 | 4.2 RecyclerView 使用完整分析 体验艺术般的控件(二)》。 1. Gradle 增加依靠

这里首先就是要预备好相应的控件,因为使用了 RecyclerView 所以需要进行 gradle 增加相应的依靠设置。

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:recyclerview-v7:25.3.1'
}

2. 布局添加控件

导入好了控件以后,就是要在 xml 布局文件中写入了 SwipeRefreshLayout 和 RecyclerView 控件,而且设置根本的属性。


    
        
        
    


3. 添加测试数据

这里就简单的使用当地数据来展现了,数据如下。

 private  void initDatas(){
        datas.add("New York");
        datas.add("Boston");
        datas.add("Washington");
        datas.add("San Francisco");
        datas.add("California");
        datas.add("Chicago");
        datas.add("Houston");
        datas.add("Phoenix");
        datas.add("Philadelphia");
        datas.add("Pennsylvania");
        datas.add("San Antonio");
        datas.add("Austin");
        datas.add("Milwaukee");
        datas.add("Las Vegas");
        datas.add("Oklahoma");
        datas.add("Portland");
        datas.add("Mexico");
    }

4. SwipeRefreshLayout 的相关设置

在 Activity/Fragment 中对 SwipeRefreshLayout 进行定义,同时对该控件的一些款式和刷新变乱进行相关的设置。

private void  initRefreshLayout(){

        layoutRefresh.setColorSchemeResources(android.R.color.holo_blue_bright,
                android.R.color.holo_green_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_red_light);

        layoutRefresh.setDistanceToTriggerSync(100);

        layoutRefresh.setSize(SwipeRefreshLayout.LARGE);

        layoutRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        for (int i=0; i

这里是当地数据测试,所以这里设置数据添加后延时 3s,而后添加数据,刷新列表,同时刷新进度条消失。 5. RecyclerView 的相关设置

刷新控件曾经经设置好了,列表控件 RecyclerView 也要做一些基本的设置,文章《商城项目实战 | 4.1 RecyclerView 使用完全解析 体验艺术般的控件(一)》和《商城项目实战 | 4.2 RecyclerView 使用完全解析 体验艺术般的控件(二)》已经经对 RecyclerView 对了十分具体的介绍,在这里 Adapter 的定义、隔断线的设置这些就未多少讲了。

mAdatper = new ListItemAdapter(datas);
        mAdatper.setOnItemClickListener(new ListItemAdapter.OnItemClickListener() {
            @Override
            public void onClick(View v, int position, String city) {

                Toast.makeText(MainActivity.this, "city:" + city + ",position:" + position, Toast.LENGTH_LONG).show();
            }
        });
        recyclerView.setAdapter(mAdatper);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));
        recyclerView.setItemAnimator(new DefaultItemAnimator());

6. 结果图

运行代码,获患上效果图,如下图所示。 效果图效果图

SwipeRefreshLayout 的相关方法和基本使用就介绍到这里了,更多的用法请参考 Android Developer 民间 API 文档。

【五一年夜匆匆】菜鸟窝全场android项目实战课程低至五折,更有价格33元的四款热门技艺收费领,17年终优惠力度最大的一次活动,故动向的童鞋不要错过 狂戳>>

  新浪美股11月19日讯在遭遇监管部门一系列反垄断调查之际,谷歌宣布收购企业软件公司CloudSimpleInc.,显示出这家搜索巨头的扩张战略完全不受调查影响。

  此次收购可能会帮助谷歌在云计算市场站稳脚跟,微软和亚马逊等规模更大的竞争对手已经在这个市场占据了先机。

  近几个月来,美国监管机构和国会就竞争问题对谷歌展开了多次调查,其中包括该公司的收购历史。自这些调查开始以来,谷歌已宣布斥资数十亿美元收购云计算公司LookerDataSciencesInc.和设备制造商FitbitInc.。

  谷歌辩称,它在云计算、企业软件和消费者设备方面的市场份额很小。11月初,反垄断官员批准了谷歌以26亿美元收购Looker的交易。

责任编辑:张宁