View体系与自定义View

        1.1、 View与ViewGroup

     ViewAndroid所有控件的基类,我们平常用的布局控件 LinearLayout,它继承自      ViewGroupViewGroup 可以理解为 View的组合,它可以包含很多 View 以及ViewGroup

                需要注意的是ViewGroup也继承自View。ViewGroup作为View或者ViewGroup这些组件的容器,派生了多种布局控件子类,比如LinearLayout、RelativeLayout等。

        1.2、坐标系

                Android坐标系:在Android中,将屏幕左上角的顶角作为Android坐标系的原点,这个原点向右是X轴正方向,向下是Y轴正方向

              

                View坐标系:View坐标系,它与Android坐标系并不冲突,两者是共同存在的,它们一起来帮助开发者更好的控制View

        getTop(),获取View自身顶边到其父布局顶边的距离;
        getLeft(),获取View自身左边到其父布局左边的距离。
        getRight(),获取View自身右边到其父布局左边的距离。
        getBottom(),获取View自身底边到其父布局顶边的距离。
        View获取自身宽度:width = getRight() - getLeft();。当然系统提供了getWidth()来直接获取;
        View获取自身高度:height=getBottom() - getTop();。同样的系统提供了getHeight()来直接获取;
        触控事件中,使用getRawX()和触控事件中,使用getRawX()和getRawY()方法获得的坐标也是Android坐标系的坐标。getRawY()方法获得的坐标也是Android坐标系的坐标。
        在触摸事件中,使用onTouchEvent(MotionEvent event)方法来处理,MotionEvent也提供了获取焦点坐标的各种方法。
        getX():获取点击事件距离控件左边的距离,即视图坐标。
        getY():获取点击事件距离控件顶边的距离,即视图坐标。
        getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标。
        getRawY():获取点击事件距离整个屏幕顶边的距离,即绝对坐标。

         1.3、View的滑动

                滑动是Android实现自定义控件的基础,同时在开发中我们难免会遇到View的滑动处理。其实不管是哪种滑动方式其基本思想都是类似的。

                View滑动右很多种方法,在这里主要说明6种滑动方法,分别是Layout(),offsetLeftAndRight()、offsetTopAndButton()、LayoutParams、动画、scollTo与scollBy,Scroller

                 layout()方法设置显示的位置,因此我们方法我们同样也可以通过修改View的left、top、right、bottom四种属性来控制View的坐标

                offsetLeftAndRight():表示Left和Right进行偏移

                offsetTopAndBottom():表示Top和Bottom进行偏移               

                LayoutParams(改变布局参数):主要保存一个View的布局参数,因此我们可以通过Layout来改变View的布局参数从而达到改变View位置的效果。

                动画:在res目录新建anim文件并创建translate.xml

                scrollTo:表示移动一个具体的坐标点。

                scollBy:表示移动的增量为dx,dy。其中scollBy最终也是要调用scollTo的

                Scroller:实现有过渡效果,这个过程不是瞬间完成的,而是在一定时间间隔内完成的。

        1.4、属性动画:四种动画方式AlphaAnimation、RotateAnimation、TranslateAnimation、ScaleAnimation。

        1.5、View是事件分发机制:当我们点击屏幕时,就产生了点击事件,这个事件被封装成一个类:MotionEvent。而当这个MotionEventionEvent产生后,MotionEvent传递给View的层级,MotionEvent在view中的层级传递过程就是点击事件分发。

   

                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟、。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值