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  当发生轨迹球事件时
  • 相关阅读:
    HTTP状态详解
    表锁和行锁
    memcache 加载(对象)所遇到的问题。资源
    php 数据导出csv 注意问题。
    文件不存在的话创建文件 文件上传所遇到的问题、
    获取文件的后缀名。phpinfo
    手机访问pc网站自动跳转手机端网站代码
    计算机网络学习-20180826
    计算机网络学习-20180811
    集线器和交换机的区别
  • 原文地址:https://www.cnblogs.com/wytiger/p/5364916.html
Copyright © 2011-2022 走看看