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  当发生轨迹球事件时
  • 相关阅读:
    Android源码分析(二)-----如何编译修改后的framework资源文件
    Android源码分析(一)-----如何快速掌握Android编译文件
    AI2(App Inventor 2)离线版服务器网络版
    AI2(App Inventor 2)离线版服务器单机版
    AI2(App Inventor 2)离线版服务器(2019.04.28更新)
    解释器模式
    迭代器模式
    备忘录模式
    访问者模式
    命令模式
  • 原文地址:https://www.cnblogs.com/wytiger/p/5364916.html
Copyright © 2011-2022 走看看