Android总结 之 View系统学习(一)

一. View的体系结构

在这里插入图片描述

view是Android 所有控件的基类,ViewGroup相当于View的结合,一些Layout,如FrameLayout、LinearLayout和RelativeLayout都是继承于ViewGroup。

二. View的属性

在这里插入图片描述

  1. getTop()
  2. getButtom()
  3. getRight()
  4. getLeft()
  5. getHeiht()
  6. getWidth()

View通过点击事件点击到的点也能通过MotionEvent得到信息:

  1. getX() 点到控件左边的距离
  2. getY() 点到控件顶边的距离
  3. getRawX() 点到屏幕左边的距离
  4. getRawY() 点到屏幕右边的距离

三. View的滑动

  1. layout() 传参左上右下
  2. offsetLeftAndRight() 和 offsetTopAndButtom() 左右上下
  3. setLayoutParams 直接设置参数
  4. 动画 添加动画之后这个view会回到之前的位置,除非设置fillAfter=“true”
  5. scrollATo()位移到的位置 scrollBy()位移的多少
  6. scroller 第五节详细介绍

四. Animator动画

  1. ObjectAnimoator:

静态工厂:ObjectAnimator.ofFloat(view,propertiesName,values)其中propertiesName包括:

translationX、translationY平移、rotation、rotationX、rotationY围绕View支点旋转、alpha透明度、x、y最终位置

  1. ValueAnimator 数值发生器,产生一定规律的数字,让调用者控制动画的过程
  2. 动画有四个状态:start,repeat,end,cancel,我们可以对这几个过程进行监听。大部分时间onAnimationEnd这个过程比较重要。
  3. 动画组:AnimatorSet(建造者模式 AnimatorSet.builder)
函数解释
after(Animator anim)现有动画插入到传入动画之后执行
after(Animator anim)现有动画延迟指定毫秒后执行
before(Animator anim)现有动画插入到传入动画之前
with(Animator anim)将现有动画和传入动画同时执行

五. Scroller的执行过程

在这里插入图片描述

六. View的组成

在这里插入图片描述

其中,Activity包含一个Window对象,这个对象是由PhoneWindow来实现的,PhoneWindow将DecorView作为整个应用窗口的根View,DecorView将屏幕分成两个FrameLayout,一个是TitleView,一个是ContentView。

七. 事件分发机制

写一段事件分发的伪代码:

public boolean dispatchTouchEvent(MotionEvent ev){
    boolean result = false;
    if(onInterceptTouchEvent(ev)){
        result = super.onTouchEvent(ev);
    }else{
        result = child.disatchTouchEvent(ev);
    }
    return result;
}

点击事件是从上往下的传递规则,当点击事件产生后,由Activity来处理,传递给PhoneWindow,再传递给DecorView,最后传递给顶层的viewGroup。

如果该ViewGroup的onInterceptTouchEvent方法返回true代表他要拦截这个事件,这个事件就会交给这个view的onTouchEvent来处理,如果返回false则代表他不拦截这个事件,交给他的子元素dispatchTouchEvent来处理,所以,一直到最底层的View,由于View没有子View,就会调用该View的onTouchEvent方法。

点击事件的处理是从下而上的,传到底层的View时,如果这个View不能处理(OnTouchEvent返回false),那么回传递给父类,调用他的onTouchEvent()处理,以此类推,直到被处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值