每天学一点AndroidUI——下拉刷新
来源:互联网 发布:网络上网行为监控 编辑:程序博客网 时间:2024/06/05 08:55
下拉刷新的功能已经很普遍了,开源的也很多,其原理只是重写listview 在顶部加一个自定义的布局!!监控事件来修改布局的padding
附上源码 简陋的是剩下原理,一看就明白
其中自定义布局的高度用代码获取而不是我这样的手写!!!
package com.toolbox.test;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.MotionEvent;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.ListView;import android.widget.RelativeLayout;public class PullListview extends ListView implements OnScrollListener { private LayoutInflater inflater; private RelativeLayout headerView; private boolean isRefreshable; private int startY;public PullListview(Context context) {super(context);// TODO Auto-generated constructor stubinit(context);}public PullListview(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stubinit(context);}public PullListview(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubinit(context);}public void init(Context context){ inflater = LayoutInflater.from(context); headerView = (RelativeLayout) inflater.inflate(R.layout.activity_pulllistview, null); headerView.setPadding(0, -20, 0, 0); addHeaderView(headerView, null,false ); setOnScrollListener(this);}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// TODO Auto-generated method stubSystem.out.println(firstVisibleItem);if (firstVisibleItem == 0) { isRefreshable = true; } else { isRefreshable = false; } }@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stub}@Overridepublic boolean onTouchEvent(MotionEvent ev) {// TODO Auto-generated method stubif(isRefreshable){switch (ev.getAction()) {case MotionEvent.ACTION_DOWN: startY = (int) ev.getY(); System.out.println("down");break;case MotionEvent.ACTION_UP:System.out.println("up"); headerView.setPadding(0, 20, 0, 0);break;case MotionEvent.ACTION_MOVE:System.out.println("move"); int tempY = (int) ev.getY(); int tap=tempY-startY; headerView.setPadding(0, tap, 0, 0); break;default:break;}}return super.onTouchEvent(ev);}}
0 0
- 每天学一点AndroidUI——下拉刷新
- 每天学一点Swift——前言
- 每天学一点MATLAB函数——文件编程函数
- 每天学一点MATLAB函数——软件操作函数
- JAVA养成计划——每天学一点JAVA
- 每天都学一点
- 每天学一点
- 每天学一点英语
- 每天学一点
- 每天学一点C#
- 每天学一点,总有一天
- 每天学一点1
- 每天学一点2
- 每天学一点3
- 每天学一点4
- 每天学一点5
- 每天学一点6
- 每天学一点7
- Chrome的Console报错真是渣渣
- sql 创建表
- assert()函数用法总结
- 小波变换教程(二十二)
- leetcode || 105、Construct Binary Tree from Preorder and Inorder Traversal
- 每天学一点AndroidUI——下拉刷新
- 加减乘除求余混合运算
- 小波变换教程(二十三)
- 解题报告 之 POJ3281 Dining
- 机器学习(Machine Learning)概念整理(PCA、概念学习、ID3算法、决策树算法)
- 小波变换教程(二十四)(全文完)
- Happy Number
- linux socket
- 淘宝搜索算法现状