我是靠谱客的博主 酷酷皮卡丘,最近开发中收集的这篇文章主要介绍Android自定义View-基础概念篇(学习笔记)Android自定义View-基础篇,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android自定义View-基础篇

注明: 非常感谢 gcssloop 的博客,以下为我学习时的笔记记录。

坐标系

屏幕坐标系和数学坐标系的区别

由于移动设备一般定义屏幕左上角为坐标原点,向右为x轴增大方向,向下为y轴增大方向,所以在手机屏幕上的坐标系和数学中常见的坐标系是稍微有差别的。如下:

数学坐标系

安卓屏幕坐标系

实际屏幕上的默认坐标系如下:

屏幕默认坐标系示例

View上的坐标系

(View上的坐标系是相对于父控件而言的)

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

View坐标系

MotionEvent 中 get和getRaw的区别

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

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

get雨getRaw区别

核心要点

  1. 在数学中常见的坐标系和屏幕默认坐标系的差别
  2. View的坐标系是相对父控件而言
  3. MotionEvent 中的 get和getRaw的区别。

角度与弧度

andorid 中角度(angle) 与弧度 (radian) 的有关问题

为什么对角的描述存在角度和弧度两种单位?

为了精确描述一个角的大小引入了角度与弧度的概念。

由于两者进制是不同的(角度是60进制,弧度是10进制),在合适的地方使用合适的单位来描述会更加好。

例如:角度是60进位制,遇到30°6`这样的角,应该转化为10进制的 30.1°。但弧度就不需要,因为弧度本身就是10进制

角度与弧度的定义

角度和弧度一样都是描述角的一种度量单位,下面是它们的定义:

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

角度示意图

弧度示意图

三.角度和弧度的换算关系

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

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

由等价关系可得如下换算公式:

rad 是弧度, deg 是角度

公式例子
rad = deg x π / 1802π = 360 x π / 180
deg = rad x 180 / π360 = 2π x 180 / π

维基百科的公式:

rad 是弧度, deg 是角度

img

四.一些细节问题

由于默认屏幕坐标系和常见数学坐标系的小差别(坐标系问题点这里),所以在角上必然也会存在一些区别,例如:

在常见的数学坐标系中角度增大方向为逆时针,

在默认的屏幕坐标系中角度增大方向为顺时针。

角度增大方向

最后

以上就是酷酷皮卡丘为你收集整理的Android自定义View-基础概念篇(学习笔记)Android自定义View-基础篇的全部内容,希望文章能够帮你解决Android自定义View-基础概念篇(学习笔记)Android自定义View-基础篇所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部