`
yuxiaolongwin
  • 浏览: 29897 次
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ListView 下拉刷新

 
阅读更多

看了ListView的下拉刷新,原理是动态调整 Listview的第一行的paddingTop值,然后就能实现ListView的下拉刷新。

 

有下面几个ListView常用的方法


getFirstVisiblePosition() 取得界面上第一个显示的位置
getLastVisiblePosition() 取得界面上最后一个显示的位置
setSelection(int position)  设置当前选中的位置,List会自动调至该位置

sdetVerticalScrollBarEnable(true)   设置scrollbar不能往下拉

getMeasuredHeight()    达到测量的长度,要在下面的measureView调用之后再调用,不然得到的是0
getBottom()   得得到view的最下面在屏幕中的位置
getPaddingTop()

 

还有两个方法也不错,测量view的高度

private void measureView(View child) {
		ViewGroup.LayoutParams p = child.getLayoutParams();
		if (p == null) {
			p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
					ViewGroup.LayoutParams.WRAP_CONTENT);
		}

		int childWidthSpec = ViewGroup.getChildMeasureSpec(0, 0 + 0, p.width);
		int lpHeight = p.height;
		int childHeightSpec;
		if (lpHeight > 0) {
			childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight,
					MeasureSpec.EXACTLY);
		} else {
			childHeightSpec = MeasureSpec.makeMeasureSpec(0,
					MeasureSpec.UNSPECIFIED);
		}
		
		Log.d(TAG, "childWidthSpec:" + childWidthSpec + " childHeightSpec:" + childHeightSpec);
		child.measure(childWidthSpec, childHeightSpec);
	}
 

在OnTouchEvent 的Move事件中计算出当下移动的位置

 

private void refreshHead(MotionEvent e){
		int point = e.getHistorySize();
		for(int i = 0; i < point; i ++){
			int historicalY = (int) e.getHistoricalY(i);
			int topPadding = (int)((historicalY - mLastPositionY - mRefreshViewHeight) / 1.7);
			mRefreshView.setPadding(mRefreshView.getPaddingLeft(), topPadding, 
					mRefreshView.getPaddingRight(), mRefreshView.getPaddingBottom());
			
			if(getFirstVisiblePosition() == 0){
				if(mRefreshView.getBottom() > 50){
					mListState = PULL_READ_REFRESH;
					displayRefreshView();
				} else {
					mListState = PULL_REFRESH;
				}
			}
			
		}
	}

 

分享到:
评论

相关推荐

    Android应用源码 ListView下拉刷新 Demo

    ListView下拉刷新功能是现代移动应用中的一个常见特性,允许用户通过下拉列表来获取最新的数据,如社交媒体的新消息或天气更新。这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解...

    android listview 下拉刷新 动态加载数据 图文混排

    以上就是关于“Android ListView下拉刷新、动态加载数据及图文混排”的实现步骤。通过这个功能,用户可以在滚动到列表底部时加载更多内容,而下拉刷新则允许用户获取最新的数据,提高了用户体验。

    android--ListView下拉刷新demo

    这个“android--ListView下拉刷新demo”就是一个实例,旨在帮助新手理解并实现这一功能。 `ListView`的下拉刷新通常通过集成第三方库如SwipeRefreshLayout或者自定义实现来完成。SwipeRefreshLayout是Android SDK...

    Android ListView下拉刷新 Demo.rar

    本Demo "Android ListView下拉刷新 Demo.rar" 主要是为了展示如何在ListView中实现下拉刷新功能,帮助开发者更好地理解和实践这一功能。 首先,我们要理解下拉刷新的基本概念。下拉刷新,顾名思义,是指用户在...

    酷炫ListView下拉刷新框架

    "酷炫ListView下拉刷新框架"就是这样一个工具,它使得在ListView上实现这种功能变得既简单又具有视觉吸引力。 下拉刷新框架通常包括以下组件和机制: 1. **手势识别**:框架会监听用户的下拉手势,当用户向上滑动...

    Android布局ListView下拉刷新demo

    "Android布局ListView下拉刷新demo"正是为了实现这样的目标,它提供了一种用户友好的方式来更新列表数据,即下拉刷新功能。这个demo由郭林大神创建,并在此基础上进行了微调和注释,方便开发者学习和参考。 首先,...

    ListView下拉刷新水滴效果

    "ListView下拉刷新水滴效果"就是一个典型的例子,它通过动画效果使得下拉刷新的动作更加生动有趣,为用户呈现出一种动态的水滴落下的视觉体验。 实现这种效果通常涉及到自定义ViewGroup和动画的运用。关键组件是...

    Android应用源码 ListView下拉刷新 Demo.zip

    本示例"Android应用源码 ListView下拉刷新 Demo.zip"是一个专门探讨ListView下拉刷新功能的实践项目,适用于开发者参考和学习。下拉刷新是现代移动应用中常见的一种交互设计,允许用户通过在列表顶部向下拉动来获取...

    完美的ListView下拉刷新上拉加载实例Demo

    "完美的ListView下拉刷新上拉加载实例Demo"就是一个这样的示例项目,它旨在帮助开发者理解和实现这种交互模式。 下拉刷新(Pull-to-Refresh)功能允许用户通过在ListView顶部向下拉动来更新列表内容,通常用于获取...

    三种ListView下拉刷新的样式

    本篇文章将详细介绍三种不同的ListView下拉刷新样式,以及如何实现它们。 首先,下拉刷新功能通常允许用户通过在ListView顶部向下拉动来获取最新的数据。这种交互方式在众多移动应用中非常常见,特别是在新闻、社交...

    安卓下拉上拉刷新相关-ListView下拉刷新上拉自动加载demo.zip

    本示例代码"安卓下拉上拉刷新相关-ListView下拉刷新上拉自动加载demo.zip"主要探讨了如何在ListView中实现这一功能。 首先,"下拉刷新"是指用户在ListView顶部向下拉动时,触发刷新操作,通常会显示一个刷新进度条...

    Android ListView 下拉刷新、上拉加载

    4. 性能优化:对于大数据量的列表,可以使用ViewHolder模式减少视图复用的开销,或者使用ListView的HeaderView和FooterView来实现下拉刷新和上拉加载的界面。 总结,下拉刷新和上拉加载是Android应用中常见的功能,...

    android listview下拉刷新代码

    本篇文章将详细讲解如何在Android中实现ListView的下拉刷新功能,以达到类似手机微博的用户体验。 首先,我们需要了解下拉刷新的基本原理。在Android中,下拉刷新通常由一个可扩展的Header View组成,当用户下拉时...

    自定义listview下拉刷新上拉加载更多以及与google官方的下拉刷新结合使用

    总的来说,自定义ListView下拉刷新和上拉加载更多虽然涉及到一些复杂的交互逻辑,但通过合理的设计和第三方库,可以大大简化开发过程。在实际项目中,可以根据需求选择自定义实现或者利用已有的解决方案,以提供更好...

    ListView下拉刷新实现

    在Android中,实现ListView下拉刷新有多种方式,但最常用的是使用开源库,如SwipeRefreshLayout。SwipeRefreshLayout是Android Support Library中的一个组件,它为子View(例如ListView或RecyclerView)提供了下拉...

    androidListView下拉刷新Demo

    本篇将详细探讨"androidListView下拉刷新Demo"的相关知识点。 一、下拉刷新原理 下拉刷新的基本原理是监听ListView的滑动事件,当用户上滑到ListView顶部并继续下拉时,会触发一个特定的回调函数,通常是在...

    android中ListView下拉刷新

    标题"android中ListView下拉刷新"所涉及的关键知识点主要包括以下几个方面: 1. **SwipeRefreshLayout**:这是Android SDK提供的一种用于实现下拉刷新效果的布局容器。它可以包裹一个可以滚动的视图,如ListView或...

    listView下拉刷新,到底部自动加载更多

    "ListView下拉刷新,到底部自动加载更多"是移动应用中的常见功能,它提供了用户友好的体验,允许用户通过下拉动作更新列表数据,同时在滚动到底部时自动加载更多内容,这种特性通常被称为"无限滚动"或"自动分页加载...

    自定义listView下拉刷新上拉加载更多

    首先,我们来看标题中的"自定义listView下拉刷新"。下拉刷新(Pull-to-Refresh)是一项常见特性,允许用户通过向下拉动列表来刷新数据。在Android中,可以使用SwipeRefreshLayout来实现这一效果。但在这里,我们将...

    Android Listview下拉刷新上拉加载源码

    "Android Listview下拉刷新上拉加载源码"这个资源可能包含了实现这些功能的具体代码示例。 下拉刷新功能允许用户通过手势向下拉动ListView的顶部来更新列表内容,通常用于获取最新数据。这种功能的实现通常依赖于第...

Global site tag (gtag.js) - Google Analytics