zoukankan      html  css  js  c++  java
  • SwipeRefreshLayout基本使用

       在android的support.V4包中,提供了一个下拉刷新的控件:SwipeRefreshLayout。使用该控件可以实现知乎上的下拉刷新效果。首先来看一下这个类的继承关系。

    从这个继承关系,可以看到SwipeRefreshLayout是一个ViewGroup,这个ViewGroup只有一个子view,便是我们需要刷新的控件。下面是一个简单的例子演示一下如何使用该控件。


    布局文件:

     

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swiperefresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <ListView
                android:id="@+id/listview"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
    
        </android.support.v4.widget.SwipeRefreshLayout>
    </RelativeLayout>
    

    主actiivty.java

    package com.gearmotion.app.swiperefreshlayoutmotion;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v4.widget.SwipeRefreshLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import butterknife.Bind;
    import butterknife.ButterKnife;
    
    public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {
    
        //使用butterknife这个框架来初始化view,可以省去一系列的findeviewbyId()方法的调用
        @Bind(R.id.swiperefresh)
        SwipeRefreshLayout mSwipeRefreshLayout;
        @Bind(R.id.listview)
        ListView mListView;
        private List<String> mData;
        private ArrayAdapter<String> mAdapter;
        private static final int FLAG = 0x01;
        private Handler mHandler = new Handler() {
            @Override
            public void dispatchMessage(Message msg) {
                int what = msg.what;
                if (what == FLAG) {
                    mData.add("fruit");
                    mAdapter.notifyDataSetChanged();
                    //处理完事物之后必须调用该函数,取消加载动画
                    mSwipeRefreshLayout.setRefreshing(false);
                }
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
            initData();
            bindData();
        }
    
        private void initData() {
            mData = new ArrayList<String>();
            mData.add("apple");
            mData.add("pear");
            mData.add("watermelon");
            mData.add("orange");
            mData.add("banana");
        }
    
        private void bindData() {
            mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                    android.R.id.text1, mData);
            mListView.setAdapter(mAdapter);
            //设置监听事件
            mSwipeRefreshLayout.setOnRefreshListener(this);
        }
    
        @Override
        public void onRefresh() {
            Message msg = Message.obtain();
            msg.what = FLAG;
            //延长动画效果
            mHandler.sendMessageDelayed(msg, 4000);
        }
    }
    

    实现的效果如下:



  • 相关阅读:
    对象实例化过程分析
    对象实例化过程分析
    QuickHit游戏
    QuickHit游戏
    java继承向上转型和向下转型和动态绑定
    java继承向上转型和向下转型和动态绑定
    洛谷:P1095 守望者的逃离(贪心+dp)
    Manacher算法-最长回文子串
    numpy array()
    CNN 卷积神经网络结构
  • 原文地址:https://www.cnblogs.com/summerpxy/p/13648344.html
Copyright © 2011-2022 走看看