Android之水滴落下的下拉刷新
非常逼真的水滴落下的下拉刷新。你可以配合ListView一起使用。
项目library下载地址:源码下载地址
我的demo下载地址(包含异步):水滴落下下拉刷新demo
效果图:
主要是用到一个库:WaveSwipeRefreshLayout
<span style="font-size:18px;">   <jp.co.recruit_lifestyle.android.widget.WaveSwipeRefreshLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/main_swipe"android:layout_below="@+id/toolbar"><ListViewandroid:id="@+id/main_list"android:layout_width="match_parent"android:layout_height="match_parent"/></jp.co.recruit_lifestyle.android.widget.WaveSwipeRefreshLayout></span>
MainActivuty:
<span style="font-size:18px;">package jp.co.recruit_lifestyle.sample;import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;import jp.co.recruit_lifestyle.android.widget.WaveSwipeRefreshLayout;public class MainActivity extends AppCompatActivity implements WaveSwipeRefreshLayout.OnRefreshListener {private Myadapter myadapter;private String str;private ListView mListview;private WaveSwipeRefreshLayout mWaveSwipeRefreshLayout;private LinkedList<String> list=new LinkedList<String>();@Overrideprotected void onCreate(Bundle savedInstanceState) {requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();setSampleData();}private void initView() {mWaveSwipeRefreshLayout = (WaveSwipeRefreshLayout) findViewById(R.id.main_swipe);mWaveSwipeRefreshLayout.setColorSchemeColors(Color.WHITE, Color.WHITE);mWaveSwipeRefreshLayout.setOnRefreshListener(this);mWaveSwipeRefreshLayout.setWaveColor(Color.DKGRAY);//mWaveSwipeRefreshLayout.setMaxDropHeight(1300);mListview = (ListView) findViewById(R.id.main_list);}private void setSampleData() {for (int i = 0; i < 60; i++) {list.add("你好" );}myadapter=new Myadapter(list);mListview.setAdapter(myadapter);}class Myadapter extends BaseAdapter{List<String> list=new ArrayList<String>();public Myadapter (List<String> list){this.list=list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int i) {return list.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View converView, ViewGroup viewGroup) {View view;if (converView==null){view=View.inflate(MainActivity.this,R.layout.item,null);}else {view=converView;}TextView tvitem= (TextView) view.findViewById(R.id.tvitem);tvitem.setText(list.get(i));return view;}}private void refresh(){new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// 更新が終了したらインジケータ非表示new Task().execute();mWaveSwipeRefreshLayout.setRefreshing(false);}}, 3000);}class Task extends AsyncTask<Void, Void,String>{@Overrideprotected String doInBackground(Void... voids) {try {Thread.sleep(500);for (int a=0;a<10;a++){str="我是被添加的";}} catch (InterruptedException e) {e.printStackTrace();}return str;}@Overrideprotected void onPostExecute(String stringlist) {list.addFirst(stringlist);myadapter.notifyDataSetChanged();mWaveSwipeRefreshLayout.setRefreshing(false);super.onPostExecute(stringlist);}}@Overrideprotected void onResume() {mWaveSwipeRefreshLayout.setRefreshing(true);refresh();super.onResume();}@Overridepublic void onRefresh() {refresh();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic 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();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {mWaveSwipeRefreshLayout.setRefreshing(true);refresh();return true;}return super.onOptionsItemSelected(item);}
}
</span>

Android之水滴落下的下拉刷新相关推荐

  1. android汽车之家顶部滑动菜单,Android自定义控件之仿汽车之家下拉刷新

    关于下拉刷新的实现原理我在上篇文章Android自定义控件之仿美团下拉刷新中已经详细介绍过了,这篇文章主要介绍表盘的动画实现原理 汽车之家的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull ...

  2. Android自定义控件之仿汽车之家下拉刷新

    感谢 阿拉灯神灯 的技术分享 .版权声明:原文来自http://blog.csdn.net/nugongahou110 关于下拉刷新的实现原理我在上篇文章Android自定义控件之仿美团下拉刷新中已经 ...

  3. 探索SwipeRefreshLayout配合自定义ListView完成下拉刷新、滑到底部自动加载更多

    在Android开发过程中经常需要实现上下拉刷新功能,Google推出的下拉刷新控件SwipeRefreshLayout(彩虹条),由于官方版本只有下拉刷新而没有上拉加载更多的功能,很多人也尝试在这个 ...

  4. Android SwipeRefreshLayout 官方下拉刷新控件介绍

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...

  5. 谷歌的android下拉刷新页面,Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新

     <Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新> 下拉刷新在如今移动开发中应用如此广泛和普遍,以至于谷歌干脆在SDK中给予支持.在android ...

  6. android 下拉刷新 组件,android系统自带下拉刷新控件的实现

    android系统自带的下拉刷新控件SwipeRefreshLayout位于android.support.v4.widget包下,实现步骤如下: 1.在布局文件中添加该控件,该控件一般作为父控件,而 ...

  7. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...

  8. Android自定义控制(五)仿新浪微博的下拉刷新

    网上有很多很有名的开源框架,这里就来拉拉PullToRefresh这个框架,也就是我们平时用的下拉刷新啦,当然你问我这个有什么用啊?别人已经写好了,这里主要是学习以及练习,练习的次数多了,一切就顺其自 ...

  9. Android下拉刷新开源库对比(转)

    安卓下拉刷新开源库对比 作者:desmond1121 目前仅比对github上star数>1500的下拉刷新开源库,在比较完成之后可能会加入其它有代表性的库. Repo Repo Owner S ...

  10. Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向...

    很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...

最新文章

  1. 020_MySQL运算符
  2. wpf将文字转化为图形_工程师们开发出将天然气转化为固体的方法
  3. springboot-custom starter
  4. 中文只占一个字符_一文搞懂字符和字节的含义
  5. 计算机函数公式中怎么合并合并,Excel用函数和公式瞬间实现把表格全部合并到一个表中去...
  6. 【渝粤教育】国家开放大学2018年春季 0699-22T阅读与写作 参考试题
  7. C++虚基类成员可见性
  8. Eureka自我保护机制
  9. Python生成(x,y,z)三维坐标序列
  10. 添加列oracle默认值,Oracle 11g增加列,并带默认值的新特性
  11. 【经验分享】统计学算法大全及方法适用场景(必看)
  12. 007 JVM堆内存划分
  13. 基于Springboot实现英语在线学习系统
  14. python三引号作用是什么_python中三引号的作用(逗号的两点总结)
  15. 那些中了500万的人过上想要的生活了吗
  16. 您只能在Photoshop CS4中做的3酷技巧
  17. 【信号处理】因果系统的理解
  18. html5 树开花效果,几种不用经常照顾的灌木花卉,开成花树后太美了
  19. 计算机定时关机教程,1分钟学会 如何让电脑定时关机,定时开机!
  20. 锥智科技完成5000万元融资 官网启用拼音域名zhuizhikeji.com

热门文章

  1. java 存根_存根键值存储
  2. P2P软件工作原理是什么?
  3. 将使用Kivy的Python程序打包为安卓的apk文件(使用python-for-android)
  4. 两台 计算机如何建立共享,怎么建立两个电脑的共享
  5. MySQL auto.cnf 文件
  6. Rabbitmq使用优先级队列实现消息插队
  7. 常用Array对象方法详解(微信小程序)
  8. 计算机函数公式发生额总计,Excel使用SUMIF函数统计各部门的奖金总额
  9. XMAN misc writeup
  10. bugku rev1(xman) WP