歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發教程:ListView下拉回彈刷新

Android開發教程:ListView下拉回彈刷新

日期:2017/3/1 10:52:05   编辑:Linux編程

現在QQ空間和新浪微博ListView下拉刷新做的比較炫,正好公司也有這樣的需求,實現起來還是相對簡單的。關鍵是要自定義一個ListView頭部(初始化的時候裡面的控件是不可見的),然後在點擊、拖動、松開的時候觸發事件,顯示ListView頭,計算出拖拽的距離,跟ListView頭的高度做比較,以此來顯示對應的ListView頭裡的控件(下拉圖標、提示文字、圓形進度條等)。好了,下面貼出效果圖:

好,開始上代碼,先是布局文件main.xml,沒什麼好說的:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical"
  6. android:background="@color/mainColor" >
  7. <!-- 這裡是自定義的ListView -->
  8. <com.focustech.android.CustomListView
  9. android:id="@+id/list"
  10. android:layout_width="fill_parent"
  11. android:layout_height="wrap_content"
  12. />
  13. </LinearLayout>

ListView頭布局head.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <RelativeLayout
  7. android:id="@+id/head_contentLayout"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:paddingLeft="30dp" >
  11. <FrameLayout
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:layout_alignParentLeft="true"
  15. android:layout_centerVertical="true" >
  16. <ImageView
  17. android:id="@+id/head_arrowImageView"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:layout_gravity="center"
  21. android:src="@drawable/ic_pulltorefresh_arrow" />
  22. <ProgressBar
  23. android:id="@+id/head_progressBar"
  24. style="?android:attr/progressBarStyleSmall"
  25. android:layout_width="wrap_content"
  26. android:layout_height="wrap_content"
  27. android:layout_gravity="center"
  28. android:visibility="gone" />
  29. </FrameLayout>
  30. <LinearLayout
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:layout_centerHorizontal="true"
  34. android:gravity="center_horizontal"
  35. android:orientation="vertical" >
  36. <TextView
  37. android:id="@+id/head_tipsTextView"
  38. android:layout_width="wrap_content"
  39. android:layout_height="wrap_content"
  40. android:text="下拉可以刷新"
  41. android:textColor="#ffffff"
  42. android:textSize="20sp" />
  43. <TextView
  44. android:id="@+id/head_lastUpdatedTextView"
  45. android:layout_width="wrap_content"
  46. android:layout_height="wrap_content"
  47. android:text="最近更新"
  48. android:textColor="#cc6600"
  49. android:textSize="10sp" />
  50. </LinearLayout>
  51. </RelativeLayout>
  52. </LinearLayout>
Copyright © Linux教程網 All Rights Reserved