当前位置: 首页 > news >正文

OverScroll介绍

OverScroll

OverScroll作用

首先,OverScroll虽然内置了很多看起来像执行滑动效果的方法名,比如startScroll(int, int, int, int),springBack(int, int, int, int, int, int)等等,但是他们并不实际执行滑动效果,只是用于辅助计算,真正的滑动效果需要自己实现。

startScroll为例,查看源码可以发现该方法只是设定了动画参数和相关状态,并没有开启动画

void startScroll(int start, int distance, int duration) {mFinished = false;mCurrentPosition = mStart = start;mFinal = start + distance;mStartTime = AnimationUtils.currentAnimationTimeMillis();mDuration = duration;// UnusedmDeceleration = 0.0f;mVelocity = 0;
}

computeScrollOffset()源码中,可以更加明显的体会到OverScroll作为计算辅助类的作用

switch (mMode) {case SCROLL_MODE:long time = AnimationUtils.currentAnimationTimeMillis();// Any scroller can be used for time, since they were started// together in scroll mode. We use X here.final long elapsedTime = time - mScrollerX.mStartTime;final int duration = mScrollerX.mDuration;if (elapsedTime < duration) {final float q = mInterpolator.getInterpolation(elapsedTime / (float) duration);mScrollerX.updateScroll(q);mScrollerY.updateScroll(q);} else {abortAnimation();}break;....

该方法也没有进行实现滑动效果,仅在调用时更新滑动参数。那么又是在哪里实现滑动效果?

滑动实现

  • View#overScrollBy

    对传入的值进行校验:是否超出滚动边界,最后实际调用onOverScrolled(newScrollX, newScrollY, clampedX, clampedY)
    由于这个方法参数出其的长,简单说一下各参数的含义
    @param deltaX 需要横向滑动的值,单位px
    @param scrollX 已经横向滑动过的值,单位px
    @param scrollRangeX 最大横向滑动的范围,单位px
    @param maxOverScrollX 最大允许超出横向边界值,单位px
    @param isTouchEvent 是否由touch event触发

    运行记录如下。scrollX表示view当前的位置,deltaX为滑动增量,也即是view将要滑动到的位置。如果允许Over Scroll,那么滑动的范围就是scrollRangeX+maxOverScrollX,到达滑动范围最值后不再滑动。

    I/ScrollData: at scrollX:573 with deltaX:0 range is:920 with maxOver:10
    I/ScrollData: at scrollX:573 with deltaX:34 range is:920 with maxOver:10
    I/ScrollData: at scrollX:607 with deltaX:47 range is:920 with maxOver:10
    I/ScrollData: at scrollX:654 with deltaX:40 range is:920 with maxOver:10
    I/ScrollData: at scrollX:694 with deltaX:49 range is:920 with maxOver:10
    I/ScrollData: at scrollX:743 with deltaX:42 range is:920 with maxOver:10
    I/ScrollData: at scrollX:785 with deltaX:43 range is:920 with maxOver:10
    I/ScrollData: at scrollX:828 with deltaX:42 range is:920 with maxOver:10
    I/ScrollData: at scrollX:870 with deltaX:43 range is:920 with maxOver:10
    I/ScrollData: at scrollX:913 with deltaX:40 range is:920 with maxOver:10
    I/ScrollData: at scrollX:930 with deltaX:33 range is:920 with maxOver:10
    I/ScrollData: at scrollX:930 with deltaX:31 range is:920 with maxOver:10
    I/ScrollData: at scrollX:930 with deltaX:28 range is:920 with maxOver:10
    I/ScrollData: at scrollX:930 with deltaX:10 range is:920 with maxOver:10
    I/ScrollData: at scrollX:930 with deltaX:0 range is:920 with maxOver:10
    I/ScrollData: at scrollX:930 with deltaX:-10 range is:920 with maxOver:10
  • View#onOverScrolled

    该方法为了响应overScrollBy()的调用,但是这个在View里是没有实现的,需要我们自己实现滑动逻辑。

  • View#scrollTo

    是真正实现滑动效果的方法,设置view滚动位置

  • View#scrollBy

    实际调用scrollTo(mScrollX + x, mScrollY + y)

  • View#computeScroll

    源码注释中解释:由父类调用,在必要时更新子类mScrollX 和 mScrollY的值。作用类似于ValueAnimator.AnimatorUpdateListener的功能,由invalidate()调用,用于在动画效果中实时更新mScrollX和mScrollY,并对其做出相应的滑动响应。

如何使用

  1. 初始化OverScroll对象,默认使用非粘性流体插值器,如果需要可以额外指定插值器。
  2. 通过OverScroll提供方法,如startscroll等,设定动画效果,并开始计算滑动效果中x,y值。注意此时并没有开始滑动动画
  3. 通知view更新
  4. computeScroll方法中根据OverScroll计算值,通过scrollTo等方法,执行实际滑动效果
  5. 通知view更新

重复执行step.4,step.5知道滑动效果结束。

参考:
How to use Android scroller
cy overscrollby 介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35331.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

MATLAB 数学应用 微分方程 时滞微分方程 ddesd

求解带有常规时滞的时滞微分方程 (DDE) 语法 sol ddesd(ddefun,delays,history,tspan) sol ddesd(ddefun,delays,history,tspan,options) 参数 参数说明ddefun用于对微分方程 y′(t) f(t,y(t),y(d(1),…,y(d(k))) 的右侧进行计算的函数句柄。此函数必须为以下形式&#…...

Java 从多线程到并发编程(七)—— wait notify 生产者消费者问题 管程法 信号灯法

文章目录前言 &#xff65;ᴗ&#xff65;wait 与 notifynotify 和 notifyAll深入了解 阻塞线程的状态切换生产者消费者模型wait notify深入一点管程法管程法 仓库管程法 生产者管程法 消费者管程法 main调用管程法结果if还是while信号灯法总结 ◡前言 &#xff65;ᴗ&#xff…...

雨课堂期末考试答案----查了好多份答案,一道一道的进行查找正确答案,基本可以保证是正确答案

1.主观题 (10分) 工程为何总是伴随着风险?导致工程风险的因素有哪些? 2.判断题 (1分) 目前对水利工程价值的伦理判断基本是遵循功利主义原则。()对 3.单选题 (1分) 下列哪一项不属于工程实践全球性特征?( )C A 生态性 B 深远性 C 社会性 D 整体性 4.单选题 (1分) …...

阿里面试官力荐:Java面试必刷的17套一线大厂真题(含答案)

金三银四过去之后&#xff0c;回顾好多同学的面试经历&#xff0c;总结出了这份大厂面试真题的合集&#xff08;含答案&#xff09;&#xff0c;里面包含了Java中级到Java架构师的方方面面&#xff0c;其中大厂也包含了阿里巴巴&#xff0c;京东&#xff0c;百度&#xff0c;拼…...

Vue系列3——Vue计算属性、监视属性和生命周期

点赞多大胆&#xff0c;就有多大产&#xff01;开源促使进步&#xff0c;献给每一位技术使用者和爱好者&#xff01; 干货满满&#xff0c;摆好姿势&#xff0c;点赞发车 路漫漫其修远兮&#xff0c;吾将上下而求索 前言 本章节咱们来说一下Vue中两个非常重要的计算属性、监视…...

学习第五篇:【SpringBoot-Labs】Spring Boot 调试环境、热部署入门、Lombok、MapStruct入门

本周&#xff08;8.21-8.27&#xff09;将学习芋道 Spring Boot的以下文章&#xff1a; 8.21&#xff1a; 快速入门 8.22&#xff1a;Spring Boot 自动配置原理 、Jar 启动原理 8.23&#xff1a;调试环境、 热部署入门、消除冗余代码 Lombok 入门 8.24&#xff1a;对象转换 Map…...

剑指 Offer 11. 旋转数组的最小数字

class Solution:def minArray(self, numbers: List[int]) -> int:left 0right len(numbers) - 1while left < right:# 取中点mid left (right - left) // 2# 如果 numbers[mid] > numbers[right] ,分界点落在 (mid, right]if numbers[mid] > numbers[right]:le…...

offer来了读书笔记-数据库三范式

面试中被问到了数据库三范式&#xff0c;只知道范式是数据库的设计规范&#xff0c;但是具体文档化的内容一下子却想不起来了&#xff0c;回顾平时的数据库表设计&#xff0c;其实也没有特别遵守范式&#xff0c;一切都是以方便开发为第一要素&#xff0c;这里对数据库的几个范…...

Linux 之 RAID 磁盘阵列

目录一、RAID磁盘阵列1.1 RAID磁盘阵列介绍1.2 常用的RAID级别1.2.1 RAID 0&#xff08;条带化存储&#xff09;1.2.2 RAID 1 (镜像存储)1.2.3 RAID5 磁盘列阵1.2.3 RAID6 磁盘列阵1.2.4 RAID 10&#xff08;先做镜像&#xff0c;再做条带&#xff09;1.2.5 RAID 01&#xff08…...

740_CTEX安装

全部学习汇总&#xff1a; https://github.com/GreyZhang/g_Tex 最终还是走上了这条路&#xff0c;没有抵制住这个神秘的诱惑。其实&#xff0c;TEX对我来说似乎并不是一个必须要接触的东西&#xff0c;接触的最大原因也是因为高德纳创造了他&#xff0c;我想看看这一套工具背后…...

【论文阅读笔记】Partial Convolution based Padding

论文地址&#xff1a;https://arxiv.org/abs/1811.11718 代码地址&#xff1a;https://github.com/NVIDIA/partialconv 论文小结 本文提出一种有效地解决因padding造成的无效信息增加的方案。   本文提出的解决方案借鉴于partial convolution的思想&#xff0c;以此一起解决…...

用 Python 进行 OCR 图像识别

数据采集就怕遇到图片,只能看不能复制怎么办。手动将文字提取出来,要耗费很大的工作量。 例如下图,某楼盘的一房一价表,怎么样发现单价低位的房子?光凭肉眼很难发现吧,能否让计算机进行文字的识别,然后再对这些数值型信息进行数据分析? 首先把图片中的单价提取出来, …...

大端小端存储二进制与字节的转换

大端小端二进制与字节的转换 单位换算 位&#xff1a;“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节&#xff1a;8个二进制位构成1个“字节(Byte)”&#xff0c;它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字&#xff0c…...

5个实用提速深度学习模型的方法

您是否通过深度学习模型获得了良好的准确性&#xff0c;却发现推理时间不足以部署到生产环境中&#xff1f;您是否对如何优化模型的推理速度迷失了方向&#xff1f;那么这篇文章是给你的。众所周知&#xff0c;数据科学项目有一个奇特的特性&#xff0c;即项目者需要不断转换关…...

Linux系统中安装MySQL

文章目录提前须知Linux版本的MySQL下载卸载系统自带的数据库安装前准备解压MYSQL安装包创建MYSQL用户和用户组创建data文件夹修改MYSQL目录的归属用户准备MYSQL的配置⽂件正式开始安装MYSQL复制启动脚本到资源目录设置MySQL系统服务并开启⾃启启动MySQLD将MySQL的BIN目录加入PA…...

(更新时间)2021年6月3日 商城高并发秒杀系统(.NET Core版) 24-性能优化-nginx负载均衡优化

一、关于Nginx的负载均衡 在服务器集群中&#xff0c;Nginx起到一个代理服务器的角色&#xff08;即反向代理&#xff09;&#xff0c;为了避免单独一个服务器压力过大&#xff0c;将来自用户的请求转发给不同的服务器。 二、Nginx负载均衡策略 负载均衡用于从“upstream”模…...

webui自动化测试框架(2)——对基本操作进行封装common

接上篇&#xff1a;webui自动化测试框架&#xff08;1&#xff09;——框架介绍 封装driver.py: driver的初始化&#xff0c;查找元素&#xff0c;点击元素&#xff0c;输入内容&#xff0c;切换iframe&#xff0c;切换Windows等 1.类&#xff0c;构造函数init里面适配浏览器…...

Python学习日记3

今天换了一个视频资源学习&#xff0c;因为发现之前的教学视频讲的是python2&#xff0c;python2跟现在的python3差别很大&#xff0c;所有换了一个平台学习。 今天学习内容主要是把python重新从头看了一遍&#xff0c;重新学习了一下&#xff0c;补充了关系运算符的知识&…...

如何用Python快速爬取小姐姐的美图

最近有一个小伙伴拿一个python代码来问我为什么报错&#xff1f; 我仔细一看&#xff1a;是用来爬取某个网站妹子图的代码&#xff0c;结果发现那个网站已经404了&#xff0c;当然爬不到了。 其实很多初学者都喜欢拿网上的案例作为练习&#xff0c;但是我们的爬虫可能会对一些…...

CentOS8安装activeMQ

Active简介 ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件&#xff1b;由于ActiveMQ是一个纯Java程序&#xff0c;因此只需要操作系统支持Java虚拟机&#xff0c;ActiveMQ便可执行。 它解决了下面的问题&#xff1a; 做到系统解耦&#xff0c;当新的模块接进来时&am…...

TensorFlow项目1——鸢尾花识别(来源:北大曹健老师tensorflow学习视频)

项目1.鸢尾花识别 1.完整代码 import matplotlib.pyplot as plt from sklearn import datasets from pandas import DataFrame import pandas as pd import numpy as np import tensorflow as tf# 数据处理 #1.读取iris数据&#xff08;sklearn已有&#xff09; #2.随机打乱&…...

1.5 异常

什么是异常 异常就是在程序运行期间&#xff0c;因为某些原因导致程序出现了错误的情况。 异常封装了三个重要信息: 类型&#xff0c;信息&#xff0c;行号 异常的简单继承结构 Throwable |- Error 系统级别的错误&#xff0c;无法处理&#xff0c;只能停止运行 |- Excepti…...

使用朴素贝叶斯过滤垃圾邮件

示例&#xff1a;使用朴素贝叶斯对电子邮件进行分类(1) 收集数据&#xff1a;提供文本文件。(2) 准备数据&#xff1a;将文本文件解析成词条向量。 (3) 分析数据&#xff1a;检查词条确保解析的正确性。(4) 训练算法&#xff1a;使用我们之前建立的trainNB0()函数。(5) 测试算法…...

链表反转。

举个例子来分析一下如何实现链表的反转。 链表示例&#xff1a;9—>6—>8—>7—>1—>null。 1&#xff09;首先定义两个指针cur、pre分别指向链表头和链表尾。 2&#xff09;定义一个临时指针&#xff0c;指向cur.next。 3&#xff09;修改cur指针的指向&#x…...

day01_java常识丶环境搭建丶入门程序

Java语言发展历史 Java诞生于SUN&#xff08;Stanford University Network&#xff09;&#xff0c;09年SUN被Oracle&#xff08;甲骨文&#xff09;收购。Java之父是詹姆斯.高斯林(James Gosling)。1996年发布JDK1.0版。 目前最使用最多的版本是Java8。 ​ Java技术体系平台 …...

C++类的讲解(一)(超详细)

C类的讲解 1、面向对象和类的介绍 1&#xff09;面向对象 C语言使用面向过程的编程方式&#xff0c;而C则增加了面向对象的编程方式。 面向过程&#xff1a;分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就…...

KNN算法基础教学

目录 1、KNN算法概述 2、什么是knn算法 3、算法原理解析 3.1、通用步骤 3.2、k的取值对预测结果的影响 3.3、k的选取 4、实战应用 &#xff08;癌症检测数据&#xff09; 完整代码&#xff1a; 1、KNN算法概述 KNN可以说是最简单的分类算法之一&#xff0c;同时&#xff0…...

Google Earth Engine(GEE)——容易犯的错误3(请在select之前使用filter )和(用updateMask()代替mask())、组合reducer的使用!

首先过滤再select() 通常&#xff0c;在对集合执行任何其他操作之前&#xff0c;按时间、位置和/或元数据过滤输入集合。在选择性较少的过滤器之前应用更多选择性过滤器。空间和/或时间过滤器通常更具选择性。例如&#xff0c;请注意select()和之前filter()应用&#xff1a; m…...

elasticsearch7 2021.8.24版本可用 ---head插件总是健康状态未连接

特别要注意跨域和discovery.zen.ping.unicast.hosts 要不然&#xff0c;head插件总是健康状态未连接 1.主节点配置文件 [rootes_master ~]# cat /home/wx/elasticsearch-7.9.0/config/elasticsearch.yml cluster.name: ELK-Cluster node.name: elk-node1 # 开启跨域访问支持&…...

【DCTWVRP】遗传算法求解带容量+距离+时间窗的车辆路径规划问题【Matlab 1211期】

一、VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem&#xff0c;VRP)是运筹学里重要的研究问题之一。VRP关注有一个供货商与K个销售点的路径规划的情况&#xff0c;可以简述为&#xff1a;对一系列发货点和收货点&#xff0c;组织调用一定的车辆&#xff0c…...

Condition 是什么?怎么用?

前言 本文隶属于专栏《100个问题搞定Java并发》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见100个问题搞定Java并发 正文 如果大家理解了 Object.wait()…...

Condition详解

Condition Condition 是一个多线程协调通信的工具类&#xff0c;可以让某些线程一起等待某个条件&#xff08;condition&#xff09;&#xff0c;只有满足条件时&#xff0c;线程才会被唤醒 condition的使用 //生产者消费者模型代码 Override public void run() {while (tru…...

这么卷,现在测试工程师要求会写工具了?

Fintech概念正受到不少互联网金融公司的热捧&#xff0c;主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。 尤其是在很多互联网金融公司&#xff0c;业务分析师BA(Business Analyst)&#xff…...

DENSE_RANK() 函数的使用

业务场景&#xff1a;按月对每个工地状态进行评分&#xff0c; 满分一百分&#xff0c; 对每个工地评分后&#xff0c; 进行排名&#xff0c; 要求相同分数的工地排名相同 在我不知道DENSE_RANK()这个函数前&#xff0c; 我是对每个工地进行算分&#xff0c;所有工地是一个lis…...

MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()

目录 &#x1f3b2;概念 &#x1f3af;语法结构 &#x1f3ac;序号函数 &#x1f3a8;准备数据 &#x1f3b8;ROW_NUMBER() 直接排序 &#x1f484;rank&#xff08;&#xff09;相同的并列排序 &#x1f364;dense_rannk&#xff08;&#xff09;连续并列的排序 &…...

RANK

&#xff0c;以下是从redbook中看到的一段&#xff1a;The available space on each rank is divided into extents. The extents are the building blocks of the logical volumes. An extent is striped across all disks of an array as shown in Figure 4-4 on page 71 and…...

Python视觉深度学习系列教程 第二卷 第3章 理解rank-1rank-5精度

第二卷 第三章 理解rank-1&rank-5精度 在讨论高级深度学习主题&#xff08;例如迁移学习&#xff09;之前&#xff0c;让我们先退后一步&#xff0c;讨论1级、5级和N级准确率的概念。在阅读深度学习文献时&#xff0c;尤其是在计算机视觉和图像分类领域&#xff0c;您可能会…...

Rank loss调研

Rank loss调研 A Generic Graph-based Neural Architecture Encoding Scheme for Predictor-based NAS这一篇文章对于rank loss有着详细的介绍。作者在真正做实验的时候&#xff0c;使用了好几种rank相关的loss&#xff0c;最后发现pairwise的这种comparator是最好的。 如果MSE…...

mysql不支持rank()_Mysql 实现 rank 和 != 问题

我一直相信, 人是能预测未来的, 这应该是前几年看弗洛伊德, 荣格的一些心理学书, 给我的一些感受, 有个片段是关于做梦的, 一个人梦见子弹穿过他自己的头颅, 结果不久, 他就去世了. 这个片段当时给了我很多奇思妙想, 关于人类的潜意识, 也许未来就在潜意识中, 但生活中可能无法…...

sql rank_SQL RANK功能概述

sql rankWe perform calculations on data using various aggregated functions such as Max, Min, and AVG. We get a single output row using these functions. SQL Sever provides SQL RANK functions to specify rank for individual fields as per the categorizations....

pandas 中 rank 的用法

官方文档 例子&#xff1a; import pandas as pd import numpy as npa pd.DataFrame(np.arange(12).reshape(3,4),columns list("abdc")) a a.sort_index(axis1,ascendingFalse) a 1、直接rank&#xff08;&#xff09; a.rank() 显示了排名&#xff0c;方向是…...

Low rank 论文

最近把以前的几篇关于Low-rank的文章重新看了一遍&#xff0c;由于之前的一些积累&#xff0c;重新看一遍感觉收获颇多。写这篇博文的时候也参考了一些网上的博客&#xff0c;其中数这篇博文最为经典http://blog.csdn.net/abcjennifer/article/details/8572994。Rachel-zhang这…...

mysql rank_MySQL实现rank排名(一)自定义变量@rank

自定义变量本文只介绍自定义变量的概念&#xff0c;后面的文章会贴出关于排名的案例。说明&#xff1a;MySQL变量包括系统变量和自定义变量。用户自定义变量主要包括局部变量和用户变量。用户自定义变量是不区分大小写的。使用&#xff1a;声明赋值使用(查看、比较、运算等)1. …...

Oracle中rank() over()函数排名

--已知&#xff1a;两种排名方式(分区和不分区)&#xff1a;使用和不使用partition --两种计算方式(连续,不连续),对应函数&#xff1a;dense_rank,rank 查询原始数据&#xff1a;学号、姓名、科目名、成绩 select * from t_score 1、rank() over(order by 列名 排序)的结果是…...

关于Python中rank()函数的理解

刚开始学习《利用Python进行数据分析》这本书&#xff0c;当学习到对Serises和Dataframe进行排名的时候&#xff0c;有些疑惑&#xff0c;去网上搜索了很多关于这方面的解释&#xff0c;要么就是一两句带过&#xff0c;要么就是照搬书上的例子与结果&#xff0c;把我们这些刚入…...

tkinter窗口布局Frame

原文地址 分类目录——tkinter 先看效果 emmm&#xff0c;看起来并不是想要的亚子&#xff0c;框架会保证各个frame的相对位置&#xff0c;大小时可变大小的&#xff0c;随着内容而增大 Frame应用实例 tk.Label(window, texton the window).pack()# 在window上创建一个frame…...

你不知道的npm

npm 前端工程化离不开 npm&#xff08;node package manager&#xff09; 或者 Yarn 这些管理工具。npm 或 Yarn 在工程项目中&#xff0c;除了负责依赖的安装和维护以外&#xff0c;还能通过 npm scripts 串联起各个职能部分&#xff0c;让独立的环节自动运转起来。 npm诞生…...

selenium切换frame与跳出frame

文章目录切换至 frame 中切换至父 frame跳出 frame切换至 frame 中 已知有 iframe 其 id 是 frame1&#xff0c;我们想切换其中来操纵其中的元素 frame() 目前接受的参数有第几个 frame&#xff0c;frame 的名字或 id&#xff0c;frame 定位的元素 public final By frameBy …...

GoFrame系列:1、GoFrame简介

GoFrame系列&#xff1a;1、GoFrame简介 文章目录GoFrame系列&#xff1a;1、GoFrame简介1. 前言2. 学习资料3. 简易安装和限制4. 接下来1. 前言 目前我们的网关中将使用GoFrame作为web后台框架进行web开发&#xff08;这让我想起了早期我们利用OpenWrt做的智能家居网关&#…...

frame切换、多窗口切换

目标 1. 掌握切换frame的方法 2. 掌握多窗口切换的技巧 frame切换 frame&#xff1a;HTML页面中的一种框架&#xff0c;主要作用是在当前页面中指定区域显示另一页面元素&#xff1b;形式一&#xff1a;[了解] <frameset cols"25%,75%"> <frame src…...