Android UI进阶之实现listview的下拉加载
Android UI进阶之实现listview的下拉加载
关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现。
最初的下拉加载应该是ios上的效果,现在很多应用如新浪微博等都加入了这个操作。即下拉listview刷新列表,这无疑是一个非常友好的操作。今天就和大家分享下这个操作的实现。
先看下运行效果:
代码参考国外朋友Johan Nilsson的实现,主要原理为监听触摸和滑动操作,在listview头部加载一个视图。那要做的其实很简单:1.写好加载到listview头部的view 2.重写listview,实现onTouchEvent方法和onScroll方法,监听滑动状态。计算headview全部显示出来即可实行加载动作,加载完成即刷新列表。重新隐藏headview。
首先写下headview的xml代码:
[html]- <RelativeLayout xmlns:Android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:paddingTop="10dip"
- android:paddingBottom="15dip"
- android:gravity="center"
- android:id="@+id/pull_to_refresh_header"
- >
- <ProgressBar
- android:id="@+id/pull_to_refresh_progress"
- android:indeterminate="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="30dip"
- android:layout_marginRight="20dip"
- android:layout_marginTop="10dip"
- android:visibility="gone"
- android:layout_centerVertical="true"
- style="?android:attr/progressBarStyleSmall"
- />
- <ImageView
- android:id="@+id/pull_to_refresh_image"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="30dip"
- android:layout_marginRight="20dip"
- android:visibility="gone"
- android:layout_gravity="center"
- android:gravity="center"
- android:src="@drawable/ic_pulltorefresh_arrow"
- />
- <TextView
- android:id="@+id/pull_to_refresh_text"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textStyle="bold"
- android:paddingTop="5dip"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:gravity="center"
- />
- <TextView
- android:id="@+id/pull_to_refresh_updated_at"
- android:layout_below="@+id/pull_to_refresh_text"
- android:visibility="gone"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:gravity="center"
- />
- </RelativeLayout>
|
评论暂时关闭