Android ScrollView的滑动监听
来源:互联网 发布:广州哪里可以学淘宝 编辑:程序博客网 时间:2024/05/22 17:19
在Android开发中,很多时候都要用到ScrollView来进行页面的滚动效果。那如果可以监听到用户的滚动状态来分别进行设置页面效果,APP的外观上肯定是可以加分的。
原生的ScrollView并没有实现类似ListView的onScrollListener的接口,在开发中如果需要监听ScrollView滑动状态,比如滑动到顶部(底部),滑动的距离等等,我们需要v4包下的NestedScrollView,或使用自定义View继承自ScrollView并设置监听的接口方法。
一、使用NestedScrollView
重写setOnScrollChangeListener方法,有五个参数: 第一个参数NestedScrollView v:是NestedScrollView的对象 第二个参数:scrollX是目前的(滑动后)的X轴坐标 第三个参数:ScrollY是目前的(滑动后)的Y轴坐标 第四个参数:oldScrollX是之前的(滑动前)的X轴坐标 第五个参数:oldScrollY是之前的(滑动前)的Y轴坐标
scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { } });
注意:这里的单位是像素,如果需要得到滑动的距离需要对像素进行转换成px或dp
//将像素转换为pxpublic static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); }//将px转换为dppublic static int px2dp(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }
二、使用自定义View继承自ScrollView
ScrollView的滚动监听事件不适用与低版本api, 所以使用自定义scrollview,自定义接口进行滚动监听。
//使用自定义view继承自ScrollViewpublic class MyScrollView extends ScrollView { private OnScrollListener listener; public void setOnScrollListener(OnScrollListener listener) { this.listener = listener; } public MyScrollView(Context context) { super(context); } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //设置接口 public interface OnScrollListener{ void onScroll(int scrollY); } //重写原生onScrollChanged方法,将参数传递给接口,由接口传递出去 @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if(listener != null){ //这里我只传了垂直滑动的距离 listener.onScroll(t); } }}
设置页面布局的时候我们就可以使用自定义的ScrollView了
同样的这里的四个参数想必大家都能够知道是什么了!!! 1. 第一个参数是目前水平滑动后的距离 2. 第二个参数是目前垂直滑动后的距离 3. 第三个参数是之前水平滑动前的距离 4. 第四个参数是之前水平滑动前的距离
同样的这里的单位也是dip像素,所以还需要用到上面的单位转换工具
这样我们就可以进行滑动监听了,我这里设置的是当我滑动到屏幕的520dp时,进行控件背景的改变。
这是我的滑动监听,搜索框的背景进行改变。
阅读全文
0 0
- Android 监听ScrollView的滑动
- Android 监听ScrollView的滑动
- Android 监听ScrollView的滑动
- Android 监听ScrollView的滑动
- Android ScrollView的滑动监听
- Android ScrollView滑动监听
- ScrollView滑动的监听
- ScrollView的滑动监听
- ScrollView的滑动监听
- android监听ScrollView滑动停止
- android 监听scrollview 滑动动作
- 【ScrollView】Android ScrollView监听滑动事件
- 监听ScrollView 的上下滑动
- Android控件:ScrollView的使用,滑动到底部的监听
- Android监听ScrollView控件的滑动起始和结束事件
- Android ScrollView滑动的监听方法为什么会报错
- Android中自定义ScrollView的滑动监听事件
- Android中实现监听ScrollView滑动事件
- 高斯混合模型GMM的理解
- crontab定时任务
- leetcode 640. Solve the Equation C++stringstream的一个很好地示范
- 以太坊智能合约编程之菜鸟教程
- With(ReadPast)就不会被阻塞吗?
- Android ScrollView的滑动监听
- 短视频平台小咖秀小程序,给你生活增添更多乐趣
- C#操作Excel类,功能比较全
- 全选/反选
- Handler实现轮播
- Model
- 软件版本的发布命名规则(吕万友)
- Codeforces 165C(二分)
- JavaScript 数组的操作方法