• View和Activity的区别
  • View有哪些?
  • ViewGroup是什么?
  • 为什么Google产生ViewGroup?
  • View的层级结构是什么?
  • View的onMeasure()/onLayout()/onDraw()方法做了什么?

View和Activity的区别

android的四大组件,Activity是四大组件中唯一一个用来和用户进行交互的组件。可以说Activity就是android的视图层。
如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View的,真正用来显示和处理事件的实际上是View。
每个Activity内部都有一个Window对象, Window对象包含了一个DecorView(实际上就是FrameLayout),我们通过setContentView给Activity设置显示的View实际上都是加到了DecorView中。

View有哪些?

android提供了种类丰富的View来应对各种需求,例如提供文字显示的TextView,提供点击事件的Button,提供图片显示的ImageView,还有各种布局文件,例如Relativilayout,Linearlayout等等。他们都是继承自View。

ViewGroup是什么?

ViewGroup继承自View,并实现了两个接口ViewParent和ViewManager。
ViewManager提供了三个抽象方法addView,removeView,updateViewLayout。用来添加、删除、更新布局。
ViewParent主要提供了一系列操作子View的方法例如焦点的切换,显示区域的控制等等。

为什么Google产生ViewGroup?

实际上所有的事情View都能做,包括显示复杂的界面,我们只需要设计一个复杂的View即可。例如短信通知的icon,一个可以显示图片又可以显示文字的View,我们后期学习了View的draw方法后,可以轻松的设计一个View来达到这个效果,但是这样不仅复杂,而且重用性较差,还会因为一点小改动而重复的创造轮子,这显然不符合程序员偷懒的原则,所以我们可以完全把ImageView和TextView组合到一起就可以了,这个时候我们就需要一个容器,ViewGroup,来装这两个View。
ViewGroup和View最大的不同是可以组合多个View,那么多个View在一起,该如何摆放,这就是ViewGroup需要解决的问题。

View的层级结构是什么?

我们看到的界面,都是以一个ViewGroup作为根View,通过往ViewGroup中添加子View(可以是View,也可以是ViewGroup),来组合出各具特色的界面。
这种从根到叶的组合方式,我们可以看做成一个View树。(类似于XML),而View的显示和事件处理,都是依赖于这个View树。
绘制和事件处理的起始点,都是从根View开始一级一级的往下传递。我们从任意一层发起绘制,都将反馈到根View,然后再从上往下传递。
之前我们说过根View就是Window中的DecorView,也就是一个FrameLayout。

View的onMeasure()/onLayout()/onDraw()方法做了什么?

  • Measure测量一个View的大小
  • Layout摆放一个View的位置
  • Draw画出View的显示内容

其中measure和layout方法都是final的,无法重写,虽然draw不是final的,但是也不建议重写该方法。
这三个方法都已经写好了View的逻辑,如果我们想实现自身的逻辑,而又不破坏View的工作流程,可以重写onMeasure、onLayout、onDraw方法。

如果你觉得好,可以分享此公众号给你更多的人,原创不易。
————华丽分割线————–
长按二维码,关注公众号

Android View框架总结(一)相关推荐

  1. Android View框架的measure机制

    Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure)Android View框架的measure机制 http://www.cnblogs.com/xyh ...

  2. android版本更新框架、新闻客户端、音乐播放器、自定义View、Github客户端、指南针等源码...

    Android精选源码 XUpdate 一个轻量级.高可用性的Android版本更新框架 Android一个可定制的圆形进度条 Android自定义View分享 打钩动画源码 android音乐文件播 ...

  3. Android 游戏开发 View框架

    按键盘的上下键矩形就会上下移动: 通过实例化Handler对象并重写handkeMessage方法实现了一个消息接收器.然后再线程中通过sendMessage方法发送更新界面的消息,接收器收到更新界面 ...

  4. android view设置按钮颜色_Android 主题换肤技术方案分析

    写在前面 Android TV 电视开发,主题换肤,我感觉有两种层级的方式,一种是 系统级,另一种 是应用级, 我记得很早在 Linux 桌面开发的时候,我们之前的公司在GTK+上也实现了一套换肤UI ...

  5. Android项目框架综合实例

    综合使用ViewPager.Fragment.RecycleView等,实现类似"网易新闻浏览器 "的项目综合框架,要求实现: 底部导航,分别是"首页",&qu ...

  6. 5个最佳的Android测试框架

    2019独角兽企业重金招聘Python工程师标准>>> 谷歌的Android生态系统正在不断地迅速扩张.有证据表明,新的移动OEM正在攻陷世界的每一个角落,不同的屏幕尺寸.ROM / ...

  7. 开发自己的山寨Android注解框架

    目录 开发自己的山寨Android注解框架 开发自己的山寨Android注解框架 参考 Github黄油刀 Overview 在上一章我们学习了Java的注解(Annotation),但是我想大家可能 ...

  8. android layout后还原位置,Android图片框架photoview如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等...

    Android图片框架photoview如何记住状态并还原,包括缩放度,缩放后的移动的距离等等,尝试了好多方法都没有作用. private void generateImages() { for (i ...

  9. Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签

     转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10766053 之前用JakeWharton的开源框架ActionBarSherl ...

  10. 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。...

    (转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/lingu ...

最新文章

  1. 【廖雪峰python入门笔记】for循环
  2. 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法
  3. NAND FLASH分区规划
  4. CSAcademy Or Problem
  5. [JavaWeb-Servlet]Servlet的体系结构
  6. 【MyBiatis框架】原生态Jdbc的弊端已经Mybatis简介
  7. ssis 创建ssisdb_SSIS目录数据库(SSISDB)简介
  8. [NVIDIA] Ububtu 获取 CUDA_ARCH
  9. w8的计算机管理打不开,Win8.1系统打不开控制面板怎么办 win8.1无法打开控制面板如何解决...
  10. 微信定位服务器在哪个位置打开,微信开了定位功能附近的人都看不到我是怎么回事...
  11. C语言学习-翁凯(第十三章笔记)
  12. 离散数学之关系(传递闭包)
  13. Flash | 用几张帧图创建逐帧动画元件并插入场景层的一般步骤
  14. ZYNQ---PL端扩展串口
  15. 《灵飞经》②东岛门人 第四章 星隐真人
  16. Android 3D游戏开发技术详解与典型案例
  17. 微信智慧支付日系统服务器崩溃,微信支付大面积出现故障 微信支付系统繁忙怎么解决 微信支付崩溃原因是什么...
  18. Nelder-Mead(内德-米德)算法
  19. 揭开网格化管理平台的“面纱”
  20. 【编码译码】基于matlab LDPC编码和解码【含Matlab源码 2560期】

热门文章

  1. 局域网Maven Java包批量上传的方法
  2. 论文笔记_S2D.39_2015-ICCV-条件随机场作为递归神经网络(CRF-RNN)
  3. 自动驾驶_感知_跟踪
  4. 论文阅读-可变形卷积v2: More Deformable, Better Results
  5. centos挂载第二块硬盘
  6. 南阳oj 814 又见拦截导弹
  7. win7删除桌面快捷方式图片的小箭头
  8. Spatial Pyramid的BOW和Pyramid HOG的多核
  9. 基于二进制粒子群算法的配电网故障诊断- 附代码
  10. MATLAB 图像处理基础(2)