安卓基础(十六)

拉出一个小东西

目标人群:没有基础的安卓初学者
知识点:在Android Studio中使用support V4包来实现下拉刷新的效果
目标:在页面上实现下拉刷新功能

简介

  • support V4包的导入

  • SwipeRefreshLayout类的简单使用

正文

1.首先我们需要在build.gradle中添加对support V4包的引用,代码如下

dependencies {
    ...
    compile ‘com.android.support:support-v4:21.0.3‘
    ...
}
  • 也可以在项目中选择Open Module Settings-Dependencies-点击右侧加号-Library Dependency-选中appcompat-V4来进行添加

2.创建一个Activity页面并使其实现android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener接口,代码如下

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;


public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public void onRefresh() {
        //当处于刷新状态时需要执行的加载数据代码,此处略
    }
}

3.创建一个包含SwipeRefreshLayout控件的布局,代码如下

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_refresh_widget"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/content" />
</android.support.v4.widget.SwipeRefreshLayout>
  • SwipeRefreshLayout 通常作为布局中的根控件存在,但是并非是必须的

  • 为了避免使用过程中出现异常, SwipeRefreshLayout 内部应当有子控件存在

4.回到Activity中,对SwipeRefreshLayout 进行初始化,并模拟下拉刷新的过程,代码如下:

    private SwipeRefreshLayout refreshLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //下拉刷新控件
        refreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget);
        //刷新过程中的颜色展示
        refreshLayout.setColorSchemeResources(R.color.red, R.color.blue, R.color.green,
                R.color.yellow);
        //指定接听回调接口
        refreshLayout.setOnRefreshListener(this);
        //文字显示控件
    }


    @Override
    public void onRefresh() {
        //延迟2000毫秒,模拟数据加载
        new Handler().postDelayed(new Runnable() {
            public void run() {
                refreshLayout.setRefreshing(false);
                Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_LONG).show();
            }
        }, 2000);
    }
  • 想禁用SwipeRefreshLayout的手势下拉以及动画效果的话,调用setEnabled(false) 方法即可

扩展阅读

  1. SwipeRefreshLayout的官方API

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。