★60.自定义控件 ★01.基础

View坐标系

简介

View的坐标系统是相对于父View而言的.

示意图

★60.自定义控件 ★01.基础_第1张图片

代码

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

Event坐标系

示意图

★60.自定义控件 ★01.基础_第2张图片

代码

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

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

角度与弧度

角度->弧度:

math rad = deg \times \frac {\pi } {180}

弧度->角度:

math deg = rad \times \frac {180} {\pi}

角度增大时的方向:

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

颜色

颜色模式

颜色模式 备注
ARGB8888 四通道高精度(32位)
ARGB4444 四通道低精度(16位)
RGB565 屏幕默认模式(16位)
Alpha8 仅有透明通道(8位)

创建颜色的几种方式

方式一

int color = Color.GRAY;     //灰色

方式二

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

方式三

int color = 0xaaff0000;     //带有透明度的红色

xml文件中定义颜色

xml定义

  • res/values/color.xml 文件中如下定义:


    #ff0000
    #00ff00

使用

  • 引用 res/values/color.xml 文件中定义的颜色:
int color = getResources().getColor(R.color.mycolor);

关于透明通道的算法

因为我们的显示屏是没法透明的,因此最终显示在屏幕上的颜色里可以认为没有 Alpha通道Alpha通道 主要在两个图像混合的时候生效。
默认情况下,当一个颜色绘制到Canvas上时的混合模式是这样计算的:
(RGB通道) 最终颜色 = 绘制的颜色 + (1 - 绘制颜色的透明度) × Canvas上的原有颜色

你可能感兴趣的:(★60.自定义控件 ★01.基础)