Android监听ScrollView滑动到顶端和底部


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package cn.testscrollview;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ScrollView;
import android.app.Activity;
/**
  * Demo描述:
  * 监听ScrollView滑动到顶端和底部
  *
  * 注意事项:
  * 1 mScrollView.getChildAt(0).getMeasuredHeight()表示:
  *   ScrollView所占的高度.即ScrollView内容的高度.常常有一
  *   部分内容要滑动后才可见,这部分的高度也包含在了
  *   mScrollView.getChildAt(0).getMeasuredHeight()中
  *  
  * 2 view.getScrollY表示:
  *   ScrollView顶端已经滑出去的高度
  *  
  * 3 view.getHeight()表示:
  *   ScrollView的可见高度
  *  
  */
public class MainActivity extends Activity {
     private ScrollView mScrollView;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         init();
     }
     private void init(){
         mScrollView=(ScrollView) findViewById(R.id.scrollView);
         mScrollView.setOnTouchListener( new TouchListenerImpl());
     }
     private class TouchListenerImpl implements OnTouchListener{
         @Override
         public boolean onTouch(View view, MotionEvent motionEvent) {
             switch (motionEvent.getAction()) {
             case MotionEvent.ACTION_DOWN:
 
                 break ;
             case MotionEvent.ACTION_MOVE:
                  int scrollY=view.getScrollY();
                  int height=view.getHeight();
                  int scrollViewMeasuredHeight=mScrollView.getChildAt( 0 ).getMeasuredHeight();
                  if (scrollY== 0 ){
                         System.out.println( "滑动到了顶端 view.getScrollY()=" +scrollY);
                     }
                  if ((scrollY+height)==scrollViewMeasuredHeight){
                         System.out.println( "滑动到了底部 scrollY=" +scrollY);
                         System.out.println( "滑动到了底部 height=" +height);
                         System.out.println( "滑动到了底部 scrollViewMeasuredHeight=" +scrollViewMeasuredHeight);
                     }
                 break ;
 
             default :
                 break ;
             }
             return false ;
         }
         
     };
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     xmlns:tools= "http://schemas.android.com/tools"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     >
     <ScrollView
         android:id= "@+id/scrollView"
         android:layout_width= "fill_parent"
         android:layout_height= "wrap_content" >
     <TextView
         android:layout_width= "fill_parent"
         android:layout_height= "wrap_content"
         android:text= "@string/hello_world" />
     </ScrollView>
</RelativeLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值