我是靠谱客的博主 高兴方盒,最近开发中收集的这篇文章主要介绍Android————View体系,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.View的层级关系:

在这里插入图片描述

二.安卓坐标系:

在这里插入图片描述

视图坐标系:

在这里插入图片描述

1.获取自身宽高

getHeight():获取View自身高度
getWidth():获取View自身宽度

2.获得View到其父控件的距离

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

3.MotionEvent提供的方法

getX():获取点击事件距离控件左边的距离,即视图坐标
getY():获取点击事件距离控件顶边的距离,即视图坐标
getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标
getRawY():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标

三.自定义View:

  • 1.继承View:继承View的自定义View实现起来要稍微复杂一些,不只是要实现onDraw()方法,而且在实现过程中还要考虑到wrap_content属性以及padding属性的设置(重写onMeasure);为了方便配置自己的自定义View还会对外提供自定义的属性,另外如果要改变触控的逻辑,还要重写onTouchEvent()等触控事件的方法。

  • 2.继承系统控件:在系统控件的基础上进行拓展,一般是添加新的功能或者修改显示的效果,一般情况下我们在onDraw()方法中进行处理。

四.自定义ViewGroup:

  • 定义子View类,继承ViewGroup,覆盖构造方法
  • 重写onMeasure()方法测量子控件和自身的尺寸
  • 重写onLayout()方法为所有子控件的摆放位置
  • 为布局容器自定义布局属性

五.自定义组合控件:

  • 组合控件主要是设定布局
    1.设置组合控件的布局xml
    2.继承某种类型的Layout

六.View的工作流程:

  • 无论是measure过程、layout过程还是draw过程,永远都是从View树的根节点开始测量或计算(即从树的顶端开始),一层一层,一个分支一个分支的进行(即树形递归),最终计算整个View树中各个View,最终确定整个View树的相关属性。

1.View的measure:

作用:测量View的宽和高(可能不准确,建议在layoutd onLayout()获取最终发宽和高)
在这里插入图片描述

2.View的Layout:

作用:计算视图(View)的位置(即计算View的四个顶点位置:Left、Top、Right 和 Bottom)
在这里插入图片描述
在这里插入图片描述

3.View的draw:

作用:绘制View视图
在这里插入图片描述
在这里插入图片描述

自定义View的步骤:

1.实现Measure、Layout、Draw流程:

根据自定义View的种类不同(单一View / ViewGroup),需自定义实现不同的方法
在这里插入图片描述

2.自定义属性:

①在values目录下创建自定义属性的xml文件
②在自定义View的构造方法中加载自定义XML文件 & 解析属性值
③在布局文件中使用自定义属性

七.View的滑动(六种方法):

1.layout方法(不常用)
2.offsetLeftAndRight()与offsetTopAndBottom()
3.LayoutParams(改变布局参数)
4.使用动画
5.scollTo与scollBy
6.Scroller

八.动画:

1.View动画(作用对象:视图View):
  • 补间动画
  • 逐帧动画
2.属性动画(作用对象:任意java对象)

九.补间动画:

  • 原理:
    通过确定开始和结束的视图样式,中间动画变化由系统补全来确定一个动画
  • 类型:
    1.平移动画Translate
    2.缩放动画Scale
    3.旋转动画Rotate
    4.透明度动画Alpha
  • 特点:
    使用简单方便,仅控制整体实体效果无法控制属性

十.逐帧动画:

  • 原理:
    将动画拆分为帧的形式,且定义每一帧=每一张图片
  • 本质:
    按顺序播放一组预先定义好的图片
  • 特点:
    使用简单方便,容易引起OutOfMemory避免使用尺寸较大的图片

十一.插值器和估值器:

在这里插入图片描述

十二.属性动画:

  • 原理:
    在一定时间间隔内,通过不断对值进行改变,不断将该值赋给对象的属性,实现动画效果
  • 特点:
    作用对象进行了扩展,不只是View对象,动画效果丰富,不只是4种基本变形还有其他动画效果
1.属性动画的核心类——ValueAnimator

方法:①ValueAnimator.ofInt(int values):将初始值以整型数值形式过渡到结束值
②ValueAnimator.ofFloat(int values):将初始值以浮点型数值形式过渡到结束值
③ValueAnimator.ofObject(int values):将初始值以对象的形式过渡到结束值

2.对任意属性进行动画操作——ObjectAnimator:

ObjectAnimator继承自ValueAnimator,ValueAnimator能用的方法在ObjectAnimator中照样可以用。

3.实现丰富多彩的动画效果——AnimatorSet:

将多个动画进行自由组合、排序,使得不同类型的动画最终可以一起实现复杂的效果,满足各种各样的交互应用。

动画的常见使用问题:

在这里插入图片描述

十三.View的事件分发机制:

  • 原理:当用户触摸屏幕时,就产生了点击事件,点击事件被封装成MotionEvent对象。而当这个MotionEvent产生后,那么系统就会将这个MotionEvent传递给View的层级,MotionEvent在View的层级传递的过程就是点击事件分发过程。

  • 事件的类型
    1.MotionEvent.ACTION_DOWN:按下View(所有事件的开始)
    2.MotionEvent.ACTION_UP:抬起View(与DOWN对应)
    3.MotionEvent.ACTION_MOVE 滑动View
    4.MotionEvent.ACTION_CANCEL 结束事件(非人为原因)
    在这里插入图片描述

总结:

在这里插入图片描述

最后

以上就是高兴方盒为你收集整理的Android————View体系的全部内容,希望文章能够帮你解决Android————View体系所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部