美文网首页Android自定义控件
Android 自定义view 基础篇(一)

Android 自定义view 基础篇(一)

作者: justCode_ | 来源:发表于2017-06-12 08:53 被阅读0次

    目录

    从0到1Android自定义View(一) 零散基础知识.png

    一、Android 坐标系

    1、Android 屏幕坐标

    数学中常见的坐标系与 Android 系统上 View 的坐标系是有点差别的,Android 设备中,屏幕的左上角为坐标原点,向右为 x 轴增大方向,向下为 y 轴增大方向。

    Android坐标系与数学坐标系的区别.png

    2、View 的坐标

    View 的坐标是相对父容器而言的

    getTop();//获取子View左上角距父View顶部的距离

    getLeft();//获取子View左上角距父View左侧的距离

    getBottom();//获取子View右下角距父View顶部的距离

    getRight();//获取子View右下角距父View左侧的距离

    其中的源代码:

    /*** Top position of this view relative to its parent.

    *  相对应父控件的top位置,单位为像素,即头部到父控件的距离

    * @returnThe top of this view, in pixels.

    */

    @ViewDebug.CapturedViewProperty

    public final int getTop(){

          return mTop; 

    }

    View坐标系.png

    3、MotionEvent中 get 和 getRaw 的区别

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

    event.getY();

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

    event.getRawY();

    getY和getRawY.jpg

    二、Android 中的角度与弧度

    Android 自定义 View 中,经常会用到一些角度弧度的计算,还有一些数学函数的应用,因此,Android 中的角度和弧度我们也需要了解。

    1、角度与弧度的定义

    角度:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度.

    弧度:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度.

    2、角度和弧度的换算关系

    圆一周对应的角度为360度(角度),对应的弧度为2π弧度。

    故得等价关系:360(角度) = 2π(弧度) ==> 180(角度) = π(弧度)

    得出公式:

    一角度=π/180弧度

    一弧度= 180/π角度

    注意:

    在常见的数学坐标系中角度增大方向为逆时针方向

    在默认的屏幕坐标系中角度增大方向为顺时针方向

    角度增大的方向.png

    三、颜色

    1、Java 中定义颜色

    xml 定义颜色相信刚接触 Android 的都基本会用的,所以这里就介绍下 Java 中定义颜色,毕竟颜色在自定义 View 中也是必不可少的。

    intcolor = Color.BLACK;//黑色intcolor = Color.argb(127,255,0,0);//半透明红色intcolor  = Color.parseColor("#ffffff");//白色

    2、透明度

    透明度也是必不可少的,透明度分为 256 阶(0-255),计算机上用 16 进制表示为(00-ff)。透明就是 0 阶,不透明就是25 5阶,如果 50% 明就是 127 阶(256 的一半当然是 128,但因为是从 0 开始,所以实际上是127 )。

    透明度 和 不透明度 是两个概念, 它们加起来是 1,或者 100%

    ARGB 中的透明度alpha,表示的是不透明度。

    透明度参照表.png

    注:非原创,不装逼,不虚假。

    相关文章

      网友评论

        本文标题:Android 自定义view 基础篇(一)

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