美文网首页
★60.自定义控件 ★01.基础

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

作者: iDragonfly | 来源:发表于2017-06-29 00:10 被阅读0次

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

    相关文章

      网友评论

          本文标题:★60.自定义控件 ★01.基础

          本文链接:https://www.haomeiwen.com/subject/jzbpcxtx.html