android自定义View之零散基础知识

本文介绍了Android自定义View的基础知识,包括Android坐标系的特点、View的坐标获取方式、MotionEvent中坐标获取的区别、角度与弧度的概念及换算、颜色定义方法及透明度的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录(注:特别感谢原作者:来自简书的fuck两点水)


从0到1Android自定义View(一) 零散基础知识.png

一、Android 坐标系

1、Android 屏幕坐标

数学中常见的坐标系与 Android 系统上 View 的坐标系是有点差别的,Android 设备中,屏幕的左上角为坐标原点,向右为 x 轴增大方向,向下为 y 轴增大方向。


Android坐标系与数学坐标系的区别.png

2、View 的坐标

View 的坐标是相对父容器而言的

getTop();       //获取子View左上角距父View顶部的距离
getLeft();      //获取子View左上角距父View左侧的距离
getBottom();    //获取子View右下角距父View顶部的距离
getRight();     //获取子View右下角距父View左侧的距离

其中的源代码:

/**
* Top position of this view relative to its parent.
* 相对应父控件的top位置,单位为像素,即头部到父控件的距离
* @return The top of this view, in pixels.
*/ 
@ViewDebug.CapturedViewProperty 
public final int getTop() { 
    return mTop; 
}

View坐标系.png

3、MotionEvent中 get 和 getRaw 的区别

event.getX();       //触摸点相对于其所在组件坐标系的坐标
event.getY();

event.getRawX();    //触摸点相对于屏幕默认坐标系的坐标
event.getRawY();

getY和getRawY.jpg

二、Android 中的角度与弧度

Android 自定义 View 中,经常会用到一些角度弧度的计算,还有一些数学函数的应用,因此,Android 中的角度和弧度我们也需要了解。

1、角度与弧度的定义

角度:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度.

弧度:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度.

2、角度和弧度的换算关系

圆一周对应的角度为360度(角度),对应的弧度为2π弧度。

故得等价关系:360(角度) = 2π(弧度) ==> 180(角度) = π(弧度)

得出公式:

一角度=π/180弧度

一弧度= 180/π角度

注意:

在常见的数学坐标系中角度增大方向为逆时针方向
在默认的屏幕坐标系中角度增大方向为顺时针方向


角度增大的方向.png

三、颜色

1、Java 中定义颜色

xml 定义颜色相信刚接触 Android 的都基本会用的,所以这里就介绍下 Java 中定义颜色,毕竟颜色在自定义 View 中也是必不可少的。

int color = Color.BLACK;     //黑色

int color = Color.argb(127, 255, 0, 0);   //半透明红色

int color  = Color.parseColor("#ffffff");  //白色

2、透明度

透明度也是必不可少的,透明度分为 256 阶(0-255),计算机上用 16 进制表示为(00-ff)。透明就是 0 阶,不透明就是25 5阶,如果 50% 明就是 127 阶(256 的一半当然是 128,但因为是从 0 开始,所以实际上是127 )。

透明度 和 不透明度 是两个概念, 它们加起来是 1,或者 100%

ARGB 中的透明度alpha,表示的是不透明度。


透明度参照表.png
内容概要:本文档详细介绍了一个基于MATLAB实现的跨尺度注意力机制(CSA)结合Transformer编码器的多变量时间序列预测项目。项目旨在精准捕捉多尺度时间序列特征,提升多变量时间序列的预测性能,降低模型计算复杂度与训练时间,增强模型的解释性和可视化能力。通过跨尺度注意力机制,模型可以同时捕获局部细节和全局趋势,显著提升预测精度和泛化能力。文档还探讨了项目面临的挑战,如多尺度特征融合、多变量复杂依赖关系、计算资源瓶颈等问题,并提出了相应的解决方案。此外,项目模型架构包括跨尺度注意力机制模块、Transformer编码器层和输出预测层,文档最后提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,尤其是熟悉MATLAB和深度学习的科研人员、工程师和研究生。 使用场景及目标:①需要处理多变量、多尺度时间序列数据的研究和应用场景,如金融市场分析、气象预测、工业设备监控、交通流量预测等;②希望深入了解跨尺度注意力机制和Transformer编码器在时间序列预测中的应用;③希望通过MATLAB实现高效的多变量时间序列预测模型,提升预测精度和模型解释性。 其他说明:此项目不仅提供了一种新的技术路径来处理复杂的时间序列数据,还推动了多领域多变量时间序列应用的创新。文档中的代码示例和详细的模型描述有助于读者快速理解和复现该项目,促进学术和技术交流。建议读者在实践中结合自己的数据集进行调试和优化,以达到最佳的预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值