View基础知识

Android View(一)——View的基础知识 目录一.View的基础知识1.什么是View2.View的位置参数3.MotionEvent4. TouchSlop5. VelocityTracker6. GestureDetector 一.View的基础知识 1.什么是View View是一种界面层的控件的一种抽象,它代表了一个控件,是Android中所有控件的基类。 2.View的位置参数 3.MotionEvent 在我们触摸屏幕的过程中,可以分为三种情况,分别是按下、滑动、弹起。Android中为我们封装好了一个MotionEvent类,使 阅读详情

View的位置参数

  • top: 左上角的纵坐标
  • left: 左上角的横坐标
  • right: 右下角的横坐标
  • bottom: 右下角的纵坐标

Attention: View在平移过程中,top和left表示的是原始左上角的位置信息,不改变,改变的是x, y, translationX 和 translationY;

View的实现

@UiThread
public class View implements Drawable.Callback, KeyEvent.Callback,
        AccessibilityEventSource {

MotionEvent

  • ACTION_DOWN 手指刚接触屏幕
  • ACTION_MOVE 手指在屏幕上移动
  • ACTION_UP 手机从屏幕上 松开的一瞬间
  • 点击屏幕离开后松开,时间序列为DOWN->UP;
  • 点击屏幕滑动一会再松开,事件序列为DOWN->MOVE->…>MOVE->UP.

  • getX/getY返回的是相对于当前View左上角的X和Y坐标

  • getRawX/getRawY返回的是相当于手机屏幕左上角的X和Y的坐标。

TouchSlop

系统所能识别出的被认为是滑动的最小的距离。
- 获取

ViewConfiguration.get(getContext()).getScaledTouchSlop().

VelocityTracker

速度追踪,用于追踪手指在滑动过程中的速度,包括水平和数值方向的速度。
- 使用过程
在View的onTouchEvent方法中

VelocityTracker velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(event);

velocityTracker.computeCurrentVelocity(1000)//根据传入的时间间隔计算相应的速度,单位ms
int xVelocity = (int) velocityTracker.getXVelocity();
int yVelocity = (int) velocityTracker.getYVelocity();
velocityTracker.clear();
velocityTracker.recycle();//使用完成,清空

GestureDetector

手势检测,用于辅助检测,单击,滑动,长按,双击等行为。
在实际的开发中可以不使用GestureDetector,完全可以在自己的View和onTouchEvent方法中实现所需的监听;
双击行为最好使用GestureDetector

Scroller

弹性滑动

    Scroller mScroller = new Scroller(this.getContext());

    private void smoothScrollTo(int destX, int destY) {
        int scrollX = getScrollX();
        int delta = destX - scrollX;

        mScroller.startScroll(scrollX, 0, delta, 0, 1000);
        invalidate();
    }

    public void computeScroll() {
        if (mScroller.computeScrollOffset()) {
            scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
            postInvalidate();
        }
    }
View的事件体系——View的基础知识 View基础知识 View不属于Android四大组件,但是它的作用甚至超过了四大组件,当Android系统所提供的基础控件不能满足我们的需求时,我们就需要自定义View来满足我们的需求,这就需要我们对View体系有深入的理解。 为了更好地了解View的内容,我们将介绍:View的位置参数,MotionEvent,TouchSlop对象,VelocityTracker对象,GestureDetector对象和Scroller对象。 1.什么是View 众所周知,Android中有许许多多的基础控件,例如:B 阅读详情

相关推荐

安卓基础知识之View篇(一):View 必须要知道的基础知识

安卓基础知识系列旨在简明扼要地提供面试或工作中常用的基础知识,让对安卓还不太熟悉的小伙伴更快地入门。同时自己在工作中,也没法完全记住所有的基础细节,写这样的系列文章,可以让自己形成一个更完备的知识体系,同时给自己日后留个知识参考。 开始的开始 View 是除了安卓四大组件以外用的最多的控件,我们需要利用 Android 内置的 View 控件(TextView、LinearLayout等)完成业务需求,有时甚至需要自定义控件来满足特殊的业务需求。View 还负责与用户的交互(点击、滑动、长按等操作),掌.

qq_40987010的博客 4055

关于Unity的ViewSpace(CameraSpace)的坐标系

  从昨天开始遇到一个看似很小,但令我苦恼的问题,由于对Unity的坐标系没有直接搞清楚,所以导致一个shader没看懂,于是发了个贴:http://game.ceeger.com/forum/read.php?tid=11367&fid=2,结果到晚上终于搞明白了,心情大好,趁热分享。   因为实在是懒得再重新写一遍了,我就把原帖子抄一遍:   一楼: 大家好,我是unity新...

weixin_30432179的博客 578

Android View系列一: View基础知识

1.什么是ViewView是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件,除了View,还有ViewGroup(控件组),ViewGroup内部包含了许多控件,即一组View.ViewGroup继承View.2.View的位置参数View的位置由四个顶点决定:top left right bottom top:是左上角纵坐标. left:是左上角横坐标. ri

姚佳伟 6124

基于yoloV3的目标检测

日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 4.8. 基于yoloV3的目标检测 学习目标 熟悉利用yolo模型进行目标检测的方法 能够完成目标检测功能的实现 在这里我们进行的目标检测是基于OPenCV的利用yoloV3进行目标检测,不涉及yoloV3的模型结构、理论及训练过程,只是利用训练好的模型进行目标检测,整个流程如下: 基于OPenCV中的DNN模块 加载已训练好的yolov3模型及其权.

あずにゃん梓喵的博客 4699

四、界面编程(一) View的基础知识及架构详解

View虽然不属于四大组件,但是它的作用堪比四大组件,甚至比Receiver和Provider的重要性都更大。本文将介绍View的基础知识、常用概念、测量绘制简介等内容,通过这些内容的理解,可以更深入的了解View,也为更复杂的内容做下铺垫。

KevinWXT的博客 2901

Android自定义View系列之理论基础知识

一、坐标系(屏幕坐标系和布局坐标系) 在Android坐标系中,以屏幕左上角作为原点,这个原点向右是X轴的正轴,向下是Y轴正轴,所以开发中调用方法的时候就有了以屏幕上边和左边为参考值,有了参考值你才好定位呀。 除了上面说的Android坐标系,到了View布局的时候有布局坐标系(也称View坐标系,但这种坐标系是相对的,因为Android中的View/ViewGroup是嵌套存在),布局坐标的关系如下图 上图中最里层是一个View(如TextView/Button/ImageView....

sunbinkang的博客 714

读书笔记----App研发录 第一章 重构

读书笔记—-App研发录 第一章 重构   对代码的重构,本质上遵循了六大设计原则。这是编码的根本准则,只有遵循这些准则,才会让代码避免恶化的脚步。拥有更好的扩展性,易读性和便于维护。这是一个良好项目的开始。

PirateBrook的天梯 632

最全软考高项工具技术总结(上)

第四版教材把工具和技术分为:数据收集技术、数据分析技术、数据表现技术、决策技术、沟通技巧、人际关系和团队技能、其他。我会按照上面的分类总结说明并标识他们用在哪些过程。小伙伴们可以通读理解做到有印象能选对应付上午选择,选几个深化用在下午论文的举例中。没必要背!

PM喵的窝 2045

一篇文章,告别Flutter状态管理争论,问题和解决

状态管理, Flutter, 移动端,我们创造工具,使用工具,改进工具,才有软件的繁荣。不一定非要讨论那个框架或技术有高低差异。在实际开发中,稳定,熟悉是稳定三角的另外两个重要的方面,不同的框架的缺点,总会有一些或者优雅,或者败絮其中的解决方案,在项目中,最重要的适合,合适的工具会让我们开发过程事半功倍,其次是稳定性和学习难度, 不过,一切都需要合适的权衡(trade off)动态的去匹配当下最重要的事。

PirateBrook的天梯 1899

下载Python3.10的相关方法及问题解决

下载Python3.10的相关方法及问题解决 报错unable to locate package python3.10-dev以及subprocess.CalledProcessError: Command ‘(‘lsb_release‘, ‘-a‘)‘ returned non-zero exit status 1问题解决

Istil 1555

使用PackStack工具自动化部署OpenStack

搭建 OpenStack 环境,每个组件的安装和配置都需要熟悉其特定的依赖关系、参数设置等,对于初学者来说容易出错。PackStack 工具通过集成一系列脚本和配置文件,便于快速搭建OpenStack练习环境。CPU:支持 Intel VT - x 或 AMD - V 硬件虚拟化技术,并且要在 BIOS 里开启此功能。内存:16GB以上存储:200GB以上可用空间(2)VMware WorkStation16.0以上版本(3)远程连接工具(如Xshell、MobaXterm)

2301_80440447的博客 4094

自定义View之常用工具类汇总

在自定义View的过程中,我们经常用到各种工具类来简化我们的工作。这篇文章就对sdk提供的一些常用的工具类进行一下总结。ViewConfiguration这个类是在自定义View的过程中使用频率非常高的。比如自定义View需要和用户进行Touch交互的时候,常常需要获得TouchSlop,就是通过这个类来获得。获取ViewConfiguration实例:ViewConfiguration vc =

Lorien Zhang的博客 980

Anaconda镜像源切换全攻略:从清华源到恢复默认设置的完整流程

本文详细介绍了Anaconda镜像源的管理与优化,重点讲解了如何配置清华源以提升国内下载速度。内容涵盖镜像源工作原理、清华源详细配置步骤、多源管理策略、常见问题排查以及如何安全恢复默认设置,帮助用户构建完整的镜像源管理体系。

weixin_28828243的博客 1020

【Android】View 的基础知识

简单介绍了 Android 中 View 的基础知识

LiuYaoheng的博客 780

实战拆解:RAG vs Agent在金融风控中的性能对比

2024年上半年我帮某华东地区城商行做零售交易反欺诈系统升级时,技术团队曾发生过一次激烈争论:一派认为应该优先上RAG(检索增强生成)方案,成本低、落地快、合规性好;另一派坚持要上Agent(智能体)方案,推理能力强、能应对复杂新型欺诈。最终我们做了完整的AB测试,结论是两者没有绝对的优劣,只有场景适配的差异:RAG适合高并发、低时延的实时风控场景,Agent适合低并发、高准确率要求的事后核查/大额审批场景,两者结合的 hybrid 方案能覆盖95%以上的风控需求。本文我会结合真实项目的测试数据,从核心概念

AI天才研究院 251

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

【Android】View—基础知识,滑动,弹性滑动

在 Android 中,View是用户界面(UI)中的基本组件,用于绘制图形和处理用户交互。所有的 UI 组件(如按钮、文本框、图片等)都是View的子类。可以说,View是构建 Android 应用界面的基础。View是一种界面层的控件的一种抽象,它代表了一个控件。除了View还有ViewGroup,里面包含了许多个控件,即一组View。在Android设计中,ViewGroup也继承了View,也就意味着View本身可以是单个控件也可以是由多个控件组成的一组控件。

2301_79977698的博客 1395

从报错到定位:Memtest86 DQ位算法解析与实践指南

本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。

sre5engineer的博客 486

View的基础知识

1. 什么是View View是所有控件的基类,下到各种Button,TextView,ImageView,上到LinearLayout,RelateLayout,甚至你自定义的控件,都是继承View这个基类,所以说,View是代表着界面层的一个抽象控件。除了View,还有一种叫ViewGroup,也就是控件组。ViewGroup本身也继承了View,View可以理解为存放很多View的组合,...

C先生的博客 456

智能驾驶辅助系统(ADAS)全解析:功能详解 + 技术原理 + 实战案例

智能驾驶辅助系统(ADAS)是现代汽车技术的重要组成部分,旨在提升驾驶安全性和便利性。本文详细解析了ADAS的多个功能模块,包括自适应巡航控制(ACC)、车道偏离预警/车道保持辅助(LDW/LKA)、前向碰撞预警/自动紧急制动(FCW/AEB)、盲区检测/变道辅助(BSD/BSM)、倒车影像、自动泊车辅助(APA)、交通标志识别(TSR)、自动远光控制(AHB)、后方交叉来车预警(RCTA)和驾驶员疲劳监测。每个功能模块都基于特定的技术原理,如毫米波雷达、摄像头、传感器融合和深度学习算法,以实现对车辆周围环

weixin_43199439的博客 2099

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android高级UI进阶之路(一) —— View的基础知识

View 可以说是在日常开发中,天天使用的角色,虽然说 View 不属于四大组件,但是它的作用跟重要程度你真不可小视。该类型的文章打算写一个系列,对于自己复习或新手学习提供一个方式。更多Android系列教程上传在GitHub:在介绍 View 的基础知识之前,我们需要知道它到底是什么?

金戈鐡馬 1162

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Android前台Service
下一篇: 关于DialogFragment的一些学习
PirateBrook
博客等级 码龄11年 90粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值