自定义View坐标系


自定义View坐标系

坐标系

​ 需要注意view的坐标是相对父容器而言的,包括:getTop()、getBottom(),getLeft(),getRight()。

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

view中的方法

    1、视图左侧位置  view.getLeft()

    2、视图右侧位置 view.getRight()

    3、视图顶部位置 view.getTop();

    4、视图底部位置 view.getBottom();

    5、 视图宽度 view.getWidth();

    6、视图高度 view.getHeight()

MotionEvent中的坐标方法

    1、event.getRowX():触摸点相对于屏幕原点的x坐标

    2、event.getX():   触摸点相对于其所在组件原点的x坐标

颜色

颜色模式 备注
ARGB8888 四通道高精度(32位)
ARGB4444 四通道低精度(16位)
RGB565 屏幕默认模式(16位)
Alpha8 仅有透明通道(8位)

其中 A R G B 的取值范围均为0~255(即16进制的0x00~0xff)

创建颜色

  • 在java中创建颜色
int color = Color.GRAY;     //灰色
int color = Color.argb(127, 255, 0, 0);   //半透明红色
int color = 0xaaff0000;                   //带有透明度的红色
  • 在xml文件中定义颜色

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

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

定义颜色以#开头,后面跟十六进制的值,有如下几种定义方式:

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

使用颜色

  • 在java文件中引用xml中定义的颜色:
int color = getResources().getColor(R.color.mycolor);
  • 在xml文件(layout或style)中引用或者创建颜色
<!--在style文件中引用-->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/red</item>
</style>
​
android:background="@color/red"     //引用在/res/values/color.xml 中定义的颜色
​
android:background="#ff0000"        //创建并使用颜色

参考资料

http://www.gcssloop.com/customview/CustomViewIndex

http://blog.csdn.net/wangjinyu501/article/details/21827341


It's time for you to begin thinking out of the box