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

来源:互联网 发布:实时数据监控 编辑:程序博客网 时间:2024/05/18 13:46
packagecn.testscrollview;
importandroid.os.Bundle;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.View.OnTouchListener;
importandroid.widget.ScrollView;
importandroid.app.Activity;
/**
 * Demo描述:
 * 监听ScrollView滑动到顶端和底部
 *
 * 注意事项:
 * 1 mScrollView.getChildAt(0).getMeasuredHeight()表示:
 *   ScrollView所占的高度.即ScrollView内容的高度.常常有一
 *   部分内容要滑动后才可见,这部分的高度也包含在了
 *   mScrollView.getChildAt(0).getMeasuredHeight()中
 *  
 * 2 view.getScrollY表示:
 *   ScrollView顶端已经滑出去的高度
 *  
 * 3 view.getHeight()表示:
 *   ScrollView的可见高度
 *  
 */
publicclass MainActivity extendsActivity {
    privateScrollView mScrollView;
    @Override
    protectedvoid onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }
    privatevoid init(){
        mScrollView=(ScrollView) findViewById(R.id.scrollView);
        mScrollView.setOnTouchListener(newTouchListenerImpl());
    }
    privateclass TouchListenerImpl implementsOnTouchListener{
        @Override
        publicboolean onTouch(View view, MotionEvent motionEvent) {
            switch(motionEvent.getAction()) {
            caseMotionEvent.ACTION_DOWN:
 
                break;
            caseMotionEvent.ACTION_MOVE:
                 intscrollY=view.getScrollY();
                 intheight=view.getHeight();
                 intscrollViewMeasuredHeight=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;
            }
            returnfalse;
        }
         
    };
}
0 0