scrollview 實現滑動到底部再滑動載入資料的功能
阿新 • • 發佈:2019-02-03
http://copier8.iteye.com/blog/1287060
思路:在滑動基礎上新增scrollview到底檢測事件
1.首先檢測是否滑動
Java程式碼- <span style="white-space: normal; background-color: #ffffff;"><pre name="code"class="java"><pre name="code"class="java">此段格式不知道怎麼刪除!</pre>
- </pre>
- </span>
-
// 滑動載入
- scrollView.setOnTouchListener(new OnTouchListener() {
- @Override
- publicboolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- switch (event.getAction()) {
-
case MotionEvent.ACTION_DOWN :
- break;
- case MotionEvent.ACTION_MOVE :
- //檢查滑動事件
- Log.d(TAG,"滑到底部");
- break;
- default :
- break;
- }
-
}
- });
2.對scrollview新增到底檢測監聽事件
但是scrollview 不能像listview那樣新增onscrolllistener監聽,所以需要自己檢測
Java程式碼- if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {
- //到底部
- Log.d(TAG,"滑到底部");
- }
3.組合程式碼
Java程式碼- // 滑動載入
- scrollView.setOnTouchListener(new OnTouchListener() {
- @Override
- publicboolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN :
- break;
- case MotionEvent.ACTION_MOVE :
- View view = ((ScrollView) v).getChildAt(0);
- if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {
- //載入資料程式碼
- }
- break;
- default :
- break;
- }
- }
- });
4.測試的時候 發現這樣會導致滑動多次觸發,所以優化程式碼如下
Java程式碼- privateint index = 0;
- // 滑動載入
- scrollView.setOnTouchListener(new OnTouchListener() {
- @Override
- publicboolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN :
- break;
- case MotionEvent.ACTION_MOVE :
- index++;
- break;
- default :
- break;
- }
- if (event.getAction() == MotionEvent.ACTION_UP && index > 0) {
- index = 0;
- View view = ((ScrollView) v).getChildAt(0);
- if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {
- //載入資料程式碼
- }
- }
- returnfalse;
- }
- });