1. 程式人生 > >scrollview 實現滑動到底部再滑動載入資料的功能

scrollview 實現滑動到底部再滑動載入資料的功能

http://copier8.iteye.com/blog/1287060

思路:在滑動基礎上新增scrollview到底檢測事件

1.首先檢測是否滑動

Java程式碼  收藏程式碼
  1. <span style="white-space: normal; background-color: #ffffff;"><pre name="code"class="java"><pre name="code"class="java">此段格式不知道怎麼刪除!</pre>  
  2.  </pre>  
  3. </span>  
Java程式碼  收藏程式碼
  1. // 滑動載入
  2.         scrollView.setOnTouchListener(new OnTouchListener() {  
  3.             @Override
  4.             publicboolean onTouch(View v, MotionEvent event) {  
  5.                 // TODO Auto-generated method stub
  6.                 switch (event.getAction()) {  
  7.                     case MotionEvent.ACTION_DOWN :  
  8.                         break;  
  9.                     case MotionEvent.ACTION_MOVE :  
  10.                         //檢查滑動事件
  11.                          Log.d(TAG,"滑到底部");  
  12.                         break;  
  13.                     default :  
  14.                         break;  
  15.                 }  
  16.             }     
  17.         });  

2.對scrollview新增到底檢測監聽事件

但是scrollview 不能像listview那樣新增onscrolllistener監聽,所以需要自己檢測

Java程式碼  收藏程式碼
  1. if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {  
  2.         //到底部
  3.         Log.d(TAG,"滑到底部");  
  4. }  

 3.組合程式碼

Java程式碼  收藏程式碼
  1. // 滑動載入
  2. scrollView.setOnTouchListener(new OnTouchListener() {  
  3.         @Override
  4.         publicboolean onTouch(View v, MotionEvent event) {  
  5.         // TODO Auto-generated method stub
  6.             switch (event.getAction()) {  
  7.                 case MotionEvent.ACTION_DOWN :  
  8.                     break;  
  9.                 case MotionEvent.ACTION_MOVE :  
  10.                     View view = ((ScrollView) v).getChildAt(0);  
  11.                     if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {  
  12.                         //載入資料程式碼
  13.                     }  
  14.                         break;  
  15.                 default :  
  16.                         break;  
  17.                 }  
  18.             }  
  19.         });  

 4.測試的時候 發現這樣會導致滑動多次觸發,所以優化程式碼如下

Java程式碼  收藏程式碼
  1. privateint index = 0;  
  2. // 滑動載入
  3.         scrollView.setOnTouchListener(new OnTouchListener() {  
  4.             @Override
  5.             publicboolean onTouch(View v, MotionEvent event) {  
  6.                 // TODO Auto-generated method stub
  7.                 switch (event.getAction()) {  
  8.                     case MotionEvent.ACTION_DOWN :  
  9.                         break;  
  10.                     case MotionEvent.ACTION_MOVE :  
  11.                         index++;  
  12.                         break;  
  13.                     default :  
  14.                         break;  
  15.                 }  
  16.                 if (event.getAction() == MotionEvent.ACTION_UP &&  index > 0) {  
  17.                     index = 0;  
  18.                     View view = ((ScrollView) v).getChildAt(0);  
  19.                     if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {  
  20.                         //載入資料程式碼
  21.                     }  
  22.                 }  
  23.                 returnfalse;  
  24.             }  
  25.         });