美文网首页
第三章:Android控件架构与自定义控件详解

第三章:Android控件架构与自定义控件详解

作者: 夜瑾漠 | 来源:发表于2018-08-16 21:11 被阅读0次

    《Android 群英传》——读书笔记

    一、Android控件架构

    • Android中控件的分类:ViewGroup控件 以及 View控件
    • VewGroup(父控件):可以包含多个View控件,并对其进行管理。上层控件负责下层子控件的测量与绘制,并进行交互事件的传递。
    • Activity中使用的findViewById()就是在树控件中以树的深度优先遍历来查找对应元素。
      View树结构图.jpg
    • 通过调用requestWindowFeature(Window.FEATURE_NO_TITLE)来设置全屏显示,一定要在调用setContentView()方法之前才会生效。
      标准视图树.png

    二、View的测量

    • Android系统在绘制View之前,必须对View进行测量,即告诉系统改画一个多大的View。(在onMeasure()方法中进行)
    • Android提供的测量View的类——MeasureSpec()类
    • MeasureSpec——32位的int值。高2位:测量的模式。低30位:测量的大小。为提高优化效率在计算中采用的是位运算
    • 测量模式的分类(三种):
    • 1)EXACTLY——精确模式
              为layout_width属性或者layout_height属性指定具体数值(100dp或者match_parent)时所使用的模式
    • 2)AT_MOST——最大值模式
              wrap_content 不超过父控件允许的最大尺寸即可。
    • 3)UNSPECIFIED
              不指定其大小测量模式,View想多大就多大,通常在绘制自定义View时才会使用。
    • View类默认的onMeasure()方法只支持EXACTLY模式

    三、View的绘制

    • 画板——Canvas
    • 画笔——Paint
    • 通常需要继承View并重写他的onDraw()方法来完成绘图
    • 其他地方使用Canvas需要创建一个Canvas对象。
    Canvas canvas = new Canvas(bitmap);
    
    • 传入参数bitmap与通过这个bitmap创建的Canvas画布紧密相连,这个过程称为:装载画布
    • bitmap 用来存储所有绘制在Canvas上的像素信息

    四、ViewGroup的测量

    • 当ViewGroup的大小为 wrap_content 时,ViewGroup就需要对子View进行遍历,获取所有子View的大小,从而决定自身的大小。
    • ViewGroup在测量时,遍历所有的子View,调用子View的Measure方法来获得每一个子View的测量结果。
    • ViewGroup测量结束后,通过遍历子View的Layout方法,来指定其具体显示的位置,从而来决定其布局的位置。

    五、ViewGroup的绘制

    • 通常情况下不用绘制
    • 会调用 dispatchDraw() 方法俩绘制其子View,遍历所有子View并调用子View的绘制方法来完成绘制工作。

    六、自定义View

    • 在自定义View时,重写onDraw()方法来绘制View的显示内容,若View使用 wrap_content 属性,还必须重写 onMeasure()方法
    • 在View中通常有一下一些比较重要的回调方法:
          1) onFinishInflate():从xml加载后回调
          2) onSizeChanged():组件大小改变时回调
          3) onMeasure():回调该方法来进行测量
          4) onLayout():回调该方法来确定显示的位置
          5) onTouchEvent():监听到触摸事件时回调
    • 通常情况下有一下三种方法来实现自定义的控件
          1) 对现有控件进行拓展
          2) 通过组合来实现新的控件
          3) 重写View来实现全新的控件

    1、对现有控件进行拓展

    • 非常重要的自定义控件方法,在原生控件的基础上进行拓展

    2、创建复合控件

    • 可以很好的创建出具有重用功能的控件集合

    相关文章

      网友评论

          本文标题:第三章:Android控件架构与自定义控件详解

          本文链接:https://www.haomeiwen.com/subject/tltzmftx.html