Andorid开发自定义View(一)

走远了吗. 提交于 2019-12-14 04:52:56

1 View与ViewGroup

LinearLayout等布局控件继承ViewGroup,TextView继承View,而ViewGroup也继承自View

2 坐标系

Android系统中有两个坐标系,分别为View坐标系和Activity坐标系

2.1 Andorid坐标系

android将屏幕左上角的顶点作为Andorid坐标系的原点,原点向右是X轴正方向,原点向下是Y轴正方向。使用getRawX()和getRawY()方法获得的是Andorid坐标系的坐标。

2.2 View坐标系

2.1.1 View获取自身的宽高 

width=getRight()-getLeft()//该控件最右面的位置距离减去最左面的距离
height=getBottom-getTop()//最下面的控件位置减最上面的距离

 系统提供了获取View控件宽和高的方法 int型


    private void getHeight()
    {
        TextView textView = new TextView(context);
        textView.getHeight();//获取控件高度
        textView.getWidth();//获取控件宽度
    }

2.2.2 View自身的坐标

通过以下方法获取View到父控件的距离 int型

 textView.getTop();//获取View自身 顶边到其父布局顶边 的距离
 textView.getBottom();//获取View自身 底边 到其父布局顶边 的距离
        
 textView.getLeft();//获取View自身左边 到其父布局左边的距离
 textView.getRight();//获取View自身右边 到其父布局左边的距离

2.2.3 MotionEvent提供的方法

View 和ViewGroup的最终点击事件都是由onTouchEvent提供

  @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        float x = event.getX();//获取点击事件距离控件左边的距离,即视图坐标
        float y = event.getY();//获取 点击事件距离控件顶边的距离,即视图坐标

        float rawX = event.getRawX();//获取点击事件距离整个屏幕左边的距离,及绝对坐标
        float rawY = event.getRawY();//获取点击事件距离整个屏幕顶边的距离,及绝对坐标
        return super.onTouchEvent(event);
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!