★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定义

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>

使用

int color = getResources().getColor(R.color.mycolor);

关于透明通道的算法

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

上一篇下一篇

猜你喜欢

热点阅读