zoukankan      html  css  js  c++  java
  • 自定义View完全解析

    自定义View主要包括以下3种方式:

    一、组合控件,利用已有控件的组合,来满足自己的需求。

    例子:顶部导航栏

    二、继承已有View,比如继承TextView、ImageView等,根据需要重写相应的方法,主要是重写onDraw来实现自己的需求。

    例子:圆形头像

    三、完全自定义View,包括自定义属性,测量、布局、绘制等。 

    例子:自定义验证码控件   自定义圆形进度条

    ----------------------------分割线----------------------------------

    完全自定义View主要包括以下步骤:

    1、自定义View的属性

    2、在Constructor中获得自定义属性并创建画笔等

    3、重写onMesure 

    4、重写onLayout

    5、重写onDraw

    说明:一般情况下,自定义View需要重写onMeasure与onDraw; 自定义ViewGroup必须重写onLayout,一般需要重写onMeasure不用重写onDraw. 

    补充:View的常见回调方法(与绘制流程密切相关)

    onFinishInflate()  当应用从XML加载该控件并用它构建界面之后调用的方法
     
    onMeasure()  测量View及其子控件的大小
    onLayout()  当该控件需要分配其子控件的位置、大小时
    [onPreDraw()  在组件将要绘制之前调用]
    onDraw()  当组件开始绘制时调用
     
    dispatchTouchEvent  事件分发的方法
    onInterceptTouchEvent  事件拦截的方法
    onTouchEvent   触摸事件的方法
     
    onAtrrachedToWindow  当把该控件放入到某个窗口时
    onDetachedFromWindow  当把该控件从某个窗口上分离时触发的方法
     
    onVisibilityChanged  控件可见性发送改变时调用
    onWindowVisibilityChanged  当包含该控件的窗口的可见性发生改变时触发的方法
    onFocusChanged  控件焦点改变时调用
    onWindowFocusChanged  当包含该控件的窗口的焦点发生改变时触发的方法
     
    onSizeChange  当该组件的大小被改变时
    onTrackballEvent  当发生轨迹球事件时
  • 相关阅读:
    [POI2013]BAJ-ytecomputer [动态规划]
    【2019.10.15】网课 Za
    【初赛】
    [NOI2014]魔法森林[最短路 spfa]
    【洛谷2019金秋营模拟赛1】
    【luogu1315】 观光公交[贪心]
    【luogu4450】收集邮票 [期望dp]
    [HAOI2012]高速公路 [线段树 期望]
    ALGO-185 Trash Removal
    精度计算——减法
  • 原文地址:https://www.cnblogs.com/wytiger/p/5364916.html
Copyright © 2011-2022 走看看