Android控件下拉刷新:SwipeRefreshLayout

Posted phlsheji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android控件下拉刷新:SwipeRefreshLayout相关的知识,希望对你有一定的参考价值。

须要注意的是SwipeRefreshLayout以下仅仅能够有一个直接子节点。

布局文件例如以下。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:ignore="MergeRootFrame" >
    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ListView>
    </android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout>

主程序例如以下:

package com.francis.swiperefreshlayouttest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.widget.SwipeRefreshLayout;
import android.widget.ArrayAdapter;
import android.widget.ListView;

// 布局文件下。<android.support.v4.widget.SwipeRefreshLayout> 仅仅能有一个直接的子类
//
// 主要方法
//        setOnRefreshListener(OnRefreshListener): 为布局加入一个Listener
//        setRefreshing(boolean): 显示或隐藏刷新进度条
//        isRefreshing(): 检查是否处于刷新状态
//        setColorSchemeResource(): 设置进度条的颜色主题。最多能设置四种


public class MyActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener{
    private SwipeRefreshLayout mSwipeLayout;
    private ListView mListView;
    private ArrayAdapter<String> mArrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        String[] strings = new String[] {"a","b","c","d"};
        mArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strings);
        mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
        mSwipeLayout.setOnRefreshListener(this);
        //载入颜色是循环播放的。仅仅要没有完毕刷新就会一直循环,color1>color2>color3>color4
        mSwipeLayout.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);
        mListView = (ListView)findViewById(R.id.list);
        mListView.setAdapter(mArrayAdapter);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        if (id == R.id.action_grid_view) {
            startActivity(new Intent(MyActivity.this,GridViewTest.class));
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onRefresh() {

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                // 停止刷新
                mSwipeLayout.setRefreshing(false);

            }
        }, 3000);

    }
}


以上是关于Android控件下拉刷新:SwipeRefreshLayout的主要内容,如果未能解决你的问题,请参考以下文章

Android基础控件——SwipeRefreshLayout最简单的下拉刷新

Android SwipeRefreshLayout下拉刷新控件源码简单分析

Android下拉刷新控件--PullToRefresh的简单使用

Android 控件smartRefeshLayout只要下拉刷新,禁止上拉加载

Android自定义控件--下拉刷新的实现

Android——谷歌官方下拉刷新控件SwipeRefreshLayout(转)