★60.自定义控件 ★01.基础
2017-06-29 本文已影响0人
iDragonfly
View坐标系
简介
子View
的坐标系统是相对于父View
而言的.
示意图
代码
getTop(); //获取子View左上角距父View顶部的距离
getLeft(); //获取子View左上角距父View左侧的距离
getBottom(); //获取子View右下角距父View顶部的距离
getRight(); //获取子View右下角距父View左侧的距离
Event坐标系
示意图
代码
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 文件中如下定义:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#ff0000</color>
<color name="green">#00ff00</color>
</resources>
使用
- 引用 res/values/color.xml 文件中定义的颜色:
int color = getResources().getColor(R.color.mycolor);
关于透明通道的算法
因为我们的显示屏是没法透明的,因此最终显示在屏幕上的颜色里可以认为没有 Alpha通道 。 Alpha通道 主要在两个图像混合的时候生效。
默认情况下,当一个颜色绘制到Canvas
上时的混合模式是这样计算的:
(RGB通道) 最终颜色 = 绘制的颜色 + (1 - 绘制颜色的透明度) × Canvas上的原有颜色