Android开发之解决NestedScrollView滑动监听兼容低版本的方法
NestedScrollView的滑动监听目前仅限api23及以上,为了兼容低版本如下自定义方法
可以自定义NestedScrollView即可如下:
package cn.net.gfan.world.widget;import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.widget.NestedScrollView;
import android.util.AttributeSet;/*** 自定义NestedScrollView* 解决滑动监听只能在API23以上才能使用的问题** @author xiayiye5* 2020年8月3日12:56:50*/
public class XiaYiYeNestedScrollView extends NestedScrollView {private OnXiaYiYeScrollChanged mOnXiaYiYeScrollChanged;public XiaYiYeNestedScrollView(@NonNull Context context) {this(context, null);}public XiaYiYeNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public XiaYiYeNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);if (mOnXiaYiYeScrollChanged != null) {mOnXiaYiYeScrollChanged.onScroll(l, t, oldl, oldt);}}public void setXiaYiYeOnScrollChanged(OnXiaYiYeScrollChanged onXiaYiYeScrollChanged) {this.mOnXiaYiYeScrollChanged = onXiaYiYeScrollChanged;}public interface OnXiaYiYeScrollChanged {/*** 滑动的方法** @param left 左边* @param top 上边* @param oldLeft 之前的左边* @param oldTop 之前的上边*/void onScroll(int left, int top, int oldLeft, int oldTop);}
}
调用方法:
//设置滑动监听事件nestNewTopic.setXiaYiYeOnScrollChanged(new XiaYiYeNestedScrollView.OnXiaYiYeScrollChanged() {@Overridepublic void onScroll(int left, int top, int oldLeft, int oldTop) {final int[] colorValue = {0X00000000};float height = ScreenTools.dip2px(getApplicationContext(), 287) - getStatusBarHeight();int startColor = ContextCompat.getColor(mContext, R.color.color_transparent);int endColor = ContextCompat.getColor(mContext, R.color.white);if (top <= 0) {tvTitle.setTextColor(Color.WHITE);ivMainSearch.setImageResource(R.drawable.icon_main_tab_search_white);ivMainMsg.setImageResource(R.drawable.icon_main_tab_msg_white);colorValue[0] = startColor;} else if (top >= height) {//设置标题栏想要的颜色tvTitle.setTextColor(ContextCompat.getColor(parentContext, R.color.color_333));ivMainSearch.setImageResource(R.drawable.icon_main_tab_search);ivMainMsg.setImageResource(R.drawable.icon_main_tab_msg);colorValue[0] = endColor;} else {colorValue[0] = (int) argbEvaluator.evaluate(top / height, startColor, endColor);}//设置渐变背景色rlTitle.setBackgroundColor(colorValue[0]);}});
如上代码即可
感谢原博主:博主直达
Android开发之解决NestedScrollView滑动监听兼容低版本的方法相关推荐
- Android事件的响应,Android 开发事件响应之基于监听的事件响应
Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事 ...
- Android RecyclerView(九)滑动监听综述
Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...
- Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色
效果图 滑动前: 滑动中: 滑动到底部: 项目结构 ObservableScrollView package com.jukopro.titlebarcolor;import android.cont ...
- 解决Fiddler不能监听Java HttpURLConnection请求的方法
在默认情况下,Fiddler不能监听Java HttpURLConnection请求.究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是 在应用程 ...
- android scrollview 滚动监听,Android开发之ScrollView的滑动监听
我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 protected void onScrollChanged ...
- Android开发之使用BroadcastReceiver实时监听电量(源代码分享)
Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的.我们可以动态注册这个类的一个实例通过Context.registerReceiver()方法 ...
- Android 开发中的View事件监听机制
在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...
- Android监听左右滑删除通知,Android 滑动监听RecyclerView线性流+左右划删除+上下移动...
废话不多说了,直接给大家贴代码了.具体代码如下所示: xmlns:tools="http://schemas.android.com/tools" android:layout_w ...
- android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部
1.创建 ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...
最新文章
- pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5]
- 框架源码系列四:手写Spring-配置(为什么要提供配置的方法、选择什么样的配置方式、配置方式的工作过程是怎样的、分步骤一个一个的去分析和设计)...
- javascript 学习笔记(四) 倒计时程序
- 用react-service做状态管理,适用于react、react native
- linux 使用退格键时出现^H解决方法
- haproxy负载均衡_使用haproxy搭建web集群
- 同花顺如何切换k线_K线之形态学:浅谈纸白银产品该如何去做好交易?
- 微服务SpringCloud中的负载均衡,你都会么?
- 比特币在推特上的活跃度正接近2017年水平
- python类的应用_python中文件类的应用
- php mysql_affected_rows获取sql执行影响的行数
- 使用k8s Ingress暴露gRPC服务
- 圆满结束,一睹各位大神风采
- 温故知新----css盒模型
- php 爬虫图片,随机图片API-json格式基于python爬虫和PHP
- Js常用40个页面效果
- docker 启动失败:specified both as a flag and in the configuration fir/daemon.json
- Excel批量转置——录制会循环的宏
- tiktok也会像Facebook一样封号吗?哪些行为会封号?
- sql优化和索引常见的面试题(面试总结)
热门文章
- php数据存储mysql_php – 在MySQL中存储路线数据的最佳方式
- word域变成正常文本_超级干货|最全的PPT、Excel、Word实用宝典,助你办公效率翻倍!...
- 计算机自适应测试的应用 托福,计算机自适应测试系统的研究和应用.pdf
- python opencv 识别角度_OpenCV入门之获取图像的旋转角度
- 【学习Koa】原生koa2 静态资源服务器例子
- 记录一下:关于mysql数据误删除恢复的问题
- [转]用C#编写ActiveX控件(一)
- MFC添加自定义消息及重写消息过程
- Marshal在C#中的应用(void *指针到IntPtr的转化)
- 操作系统与数据库知识点