Android自定义View基础(一)

版权声明: https://blog.csdn.net/ZHENZHEN9310/article/details/86477147

一、坐标系

屏幕坐标系: 默认以屏幕左上角为原点O (0,0),往左为正,往下为正

View坐标系: view布局时有四个属性(left、top、right、bottom)是相对于父布局的

  • childView相对于parentView

      getTop();       //获取子View左上角距父View顶部的距离
      getLeft();      //获取子View左上角距父View左侧的距离
      getBottom();    //获取子View右下角距父View顶部的距离
      getRight();     //获取子View右下角距父View左侧的距离
    

MotionEvent中getX()和getRawX()的区别

  • 当手指触摸屏幕时会产生一个MotionEvent (里面封装了坐标和事件类型等)

      event.getX();       //触摸点相对于其所在组件坐标系的坐标
      event.getY();
    
      event.getRawX();    //触摸点相对于屏幕默认坐标系的坐标
      event.getRawY();
    

二、角度和弧度

  • 两者进制是不同的(角度是60进制,弧度是10进制),在合适的地方使用合适的单位来描述会更加方便。

      例如:角度是60进位制,遇到30°6′这样的角,应该转化为10进制的30.1°。
      但弧度就不需要,因为弧度本身就是十进制的实数。
    
  • 圆一周对应的角度为360度(角度),对应的弧度为2π弧度。

      当弧长等于圆周长的360分之一时,两条射线的夹角的大小为1度. 
      当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度. 圆周长=2πr
    
  • 角度增加方向为顺时针。

三、颜色

Android支持的颜色

当RGB全取最小值(0或0x000000)时颜色为黑色,全取最大值(255或0xffffff)时颜色为白色

  • Java中定义的颜色

      int color = Color.GRAY; //灰色,系统定义的颜色,内部是static final int   0xFF888888
      int color = Color.argb(127, 255, 0, 0);//(alpha << 24) | (red << 16) | (green << 8) | blue;
      int color = Color.parseColor("#ffffff"); //string的转int
      int color = 0xaaff0000; //带有透明度的红色,16进制表示
    
  • xml中定义的颜色

      #f00            //低精度 - 不带透明通道红色
      #af00           //低精度 - 带透明通道红色
    
      #ff0000         //高精度 - 不带透明通道红色
      #aaff0000       //高精度 - 带透明通道红色
    

在/res/values/color.xml 文件中如下定义:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>
  • Java中引用xml中颜色

      ContextCompat.getColor(context, R.color.colorAccent);
    

参考:

安卓自定义View教程目录

猜你喜欢

转载自blog.csdn.net/ZHENZHEN9310/article/details/86477147