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

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上的原有颜色

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础篇 一、坐标系 1、屏幕坐标系和数学坐标系的区别 由于移动设备一般定义屏幕左上角为坐标原点,向右为x轴增大方向...
    吕侯爷阅读 490评论 0 2
  • 资料链接:1.GcsSloop的自定义系列 一、坐标系 1.移动设备坐标系 2.View的坐标系 注意:View的...
    Demon鑫阅读 280评论 0 0
  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 4,725评论 2 32
  • 父母跟孩子沟通,不能只是告诉孩子,什么是对的,什么该做,让孩子按照父母的建议去做,这样,只能解决一时的问题,无法解...
    伶丽阅读 157评论 0 2
  • 桃花顽强的防御着三月 八千里布阵 并借助膜拜灵魂 一纸契约携带从砖缝自豪挤出的 一朵黄花 四月满心绿的虔诚 感动着...
    凉爽清风阅读 215评论 0 4