Android万能下拉刷新控件SwipeRefleshLayout使用
来源:互联网 发布:张惠妹彩虹 知乎 编辑:程序博客网 时间:2024/06/04 19:44
在Android开发中下拉刷新功能是很常见的一个功能,通常意义而言只有像列表类才具有下拉刷新功能,像ListView,RecyclerView,可以给他们加载一个头布局和尾部局的样式来实现上下拉刷新,有一些第三方的类库就是通过这样的方式来实现的上下拉刷新,比如XListView,PullToReflesh等,但是如果是一个普通的页面怎么来实现下拉刷新呢,嗯 这是个问题
我觉得实现思路不外乎以下几种,
First:自定义一个ScrollView,通过监听他下拉的距离来刷新界面,比较类似于这个广告和标题的上拉悬停
Second:对最外层的下拉距离进行控制
Three:看看有没有啥现成的东西是可以使用的
通过查资料看到Google推出了一种新控件叫SwipeRefleshLayout以实现下拉刷新
SwipeRefleshLayout是V4包里边的东西,向下兼容到Android2.2,所以可以放心大胆的用了哦
只不过要注意的是此布局内只能有一个直接子View。
所以我们可以在其中放置一个布局或者一个列表,只要只有一个View就可以了,他这一点跟ScrollView一样
其实通过文档我们可以知道SwipeRefreshLayout只不过是继承了ViewGroup。
package com.longyue.swiperefreshlayoutdemo;import android.os.Bundle;import android.os.Handler;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.Arrays;import java.util.List;/** * 只不过要注意的是此布局内只能有一个直接子View。 * 其实通过文档我们可以知道SwipeRefreshLayout只不过是继承了ViewGroup。 * */public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener{ private static final int REFRESH_COMPLETE = 0X110; private SwipeRefreshLayout mSwipeLayout; private ListView mListView; private ArrayAdapter<String> mAdapter; private List<String> mDatas = new ArrayList<String>(Arrays.asList("Java", "Javascript", "C++", "Ruby", "Json", "HTML")); private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case REFRESH_COMPLETE: mDatas.addAll(Arrays.asList("Lucene", "Canvas", "Bitmap")); mAdapter.notifyDataSetChanged(); mSwipeLayout.setRefreshing(false);//设置组件的刷洗状态。 break; } } }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.id_listview); mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly); mSwipeLayout.setOnRefreshListener(this);//:设置手势滑动监听器。 mSwipeLayout.setColorSchemeColors(//设置进度动画的颜色 R.color.swipe_color_1, R.color.swipe_color_2, R.color.swipe_color_3, R.color.swipe_color_4); mSwipeLayout.setSize(SwipeRefreshLayout.LARGE);//设置进度圈的大小,只有两个值:DEFAULT、LARGE //mSwipeLayout.setProgressBackgroundColorSchemeColor(getResources().getColor(R.color.swipe_background_color)); mSwipeLayout.setProgressBackgroundColor(R.color.swipe_background_color); //mSwipeLayout.setPadding(20, 20, 20, 20); //mSwipeLayout.setProgressViewOffset(true, 100, 300);//控制下拉刷新图标的活动范围 //mSwipeLayout.setDistanceToTriggerSync(30);//触发下拉刷新的距离 mSwipeLayout.setProgressViewEndTarget(true, 300);//下拉图标结束的结束的位置 mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDatas); mListView.setAdapter(mAdapter); } public void onRefresh() { mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2000); }}
引用的色值资源
<color name="swipe_color_1">#B6DB49</color><color name="swipe_color_2">#99CC00</color><color name="swipe_color_3">#8ABD00</color><color name="swipe_color_4">#7CAF00</color><color name="swipe_background_color">#ccc</color>
代码就这么多,就不传Demo了
0 0
- Android万能下拉刷新控件SwipeRefleshLayout使用
- Android-->巧用XListView,打造万能的下拉刷新控件
- 打造Android万能下拉刷新上拉加载控件
- 打造Android万能下拉刷新上拉加载控件
- Android 万能刷新控件
- Android 下拉刷新控件的使用
- Android 下拉刷新控件SwipeRefreshLayout 的使用
- Android 下拉刷新控件的使用
- Android SwipeRefreshLayout 官方下拉刷新控件使用
- android 下拉刷新控件SwipeRefreshLayout简单使用
- Android-SwipeRefreshLayout下拉刷新控件使用
- android 下拉刷新控件
- Android 下拉刷新控件
- Android下拉刷新控件
- android 下拉刷新使用
- Android 下拉刷新控件 SwipeRefreshLayout
- android控件 下拉刷新pulltorefresh
- Android 下拉刷新控件SwipeRefreshLayout
- centos 下 pyspider 和 phantomjs 环境配置
- 通过ADB启动手机端APK
- 基于Flask的博客系统搭建
- iOS Static Library 静态类库
- Linux用户态程序定时器——POSIX定时器
- Android万能下拉刷新控件SwipeRefleshLayout使用
- mongodb
- 瞬驰(Dash)D1开发手册--URDF
- 面试:数组:插入位置
- Python 之 sklearn 交叉验证 数据拆分
- 谈hibernate 和mybatis
- 我一路向北,寻找有你的季节
- 在Java中怎么定义一个匿名内部类,定义匿名内部类的条件是什么?
- windows下的内联hook实现