当前位置:操作系统 > 安卓/Android >>

android UI进阶之实现listview的下拉加载

关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现。

最初的下拉加载应该是ios上的效果,现在很多应用如新浪微博等都加入了这个操作。即下拉listview刷新列表,这无疑是一个非常友好的操作。今天就和大家分享下这个操作的实现。

先看下运行效果:

 \\

\

\\


 

代码参考国外朋友Johan Nilsson的实现,http://johannilsson.com/2011/03/13/android-pull-to-refresh-update.html。

主要原理为监听触摸和滑动操作,在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> 
<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
        and

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,