自定义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  当发生轨迹球事件时

自定义View完全解析的更多相关文章

  1. springmvc 自定义view支持json和jsonp格式数据返回

    1.如果controlloer上用@ResponseBody注解,则用<mvc:message-converter>里面配置的json解析器进行解析 <mvc:annotation- ...

  2. [转]Android自定义控件三部曲系列完全解析(动画, 绘图, 自定义View)

    来源:http://blog.csdn.net/harvic880925/article/details/50995268 一.自定义控件三部曲之动画篇 1.<自定义控件三部曲之动画篇(一)—— ...

  3. Android自定义View(三、深入解析控件测量onMeasure)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51490283 本文出自:[openXu的博客] 目录: onMeasure什么时候会被调用 ...

  4. Android自定义View(二、深入解析自定义属性)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:[openXu的博客] 目录: 为什么要自定义属性 怎样自定义属性 ...

  5. 【Android - 自定义View】之View的draw过程解析

    draw(绘制)过程的作用是将View绘制到屏幕上面.View中有 draw() 方法和 onDraw() 方法,但onDraw()方法是空方法:ViewGroup中没有draw()方法,也没有onD ...

  6. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  7. 自定义View其实很简单系列1-12

    作者: AigeStudio  http://blog.csdn.net/aigestudio 说明:文中的1/12表示12篇中的第1篇, 1/6=2/12表示12篇中的第2篇,其它类似. 自定义控件 ...

  8. Android 自定义View合集

    自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...

  9. Android 自定义view (一)——attr 理解

    前言: 自定义view是android自定义控件的核心之一,那么在学习自定义view之前,我们先来了解下自定义view的自定义属性的attr的用法吧 Android attr 是什么 (1)attr ...

随机推荐

  1. linux内核启动以及文件系统的加载过程

    Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...

  2. Java—FileOperator

    //基本用法 JFileChooser jfc = new JFileChooser(); int result = jfc.showOpenDialog(this); if(result != JF ...

  3. Ant 命令行编译Android项目

    首先把android sdk下的tools目录加到系统path环境变量里, 要么就得直接指定android.bat的绝对路径 对于一个新项目, 可以用这个命令创建需要的ant编译环境(可以看到andr ...

  4. 5 个最好的3D游戏开发工具(转)

    转自:http://www.open-open.com/news/view/33a4f0 5 个最好的3D游戏开发工具 jopen 2012-11-19 22:56:21 • 发布 摘要:UDK(th ...

  5. NOI2018准备 Day9

    tjvj清北入学测试又打了一上午,暴力搜索得了部分分,dp全崩了,8道题凑了500分. 下午打了个速度赛,成绩未知,另外又做了1道题,这效率low到爆!!!

  6. Session一次错误记录

    /// <summary>        /// 验证登录状态是否已失效        /// </summary>        /// <returns>< ...

  7. 虚拟机开机提示Operating System not found解决办法

    为了更好体验windows更多操作系统,有些用户会在VMware虚拟机中安装XP.win7或win8等等系统,有用户反映在虚拟机中安装XP开机后提示"Operating System not ...

  8. 学堂在线 UWP 首版

    好久没有写博客了,主要是最近在写一个小小的App.<( ̄︶ ̄)> 不知道看各位有木有爱看慕课的,作为一名资深的大三学渣的我有看慕课的习惯.一直在看学堂在线的慕课,感觉质量确实还可以,但是遗 ...

  9. Replace Pioneer注册

    以下是目前合法长期使用Replace Pioneer的唯一方法(除了购买之外): Replace Pioneer过期后,会弹出一个注册(Registration)窗口,其中有一个试用选项(Trial ...

  10. [BZOJ1188][HNOI2007]分裂游戏(博弈论)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1188 分析: 设SG[i]表示一个石子在位置i上的SG值 这个很容易暴力求,因为i的后 ...