Android 自定义View流程中的几个方法解析:

  1. onFinishInflate():从布局文件.xml加载完组件后回调
  2. onMeasure() :调用该方法负责测量组件大小
  3. onSizeChanged() :组件大小发生改变时回调该方法
  4. onLayout() :该方法负责确定组件的显示的位置
  5. onDraw() :该方法负责将组件在屏幕中画出来

自定义View流程中几个方法的执行顺序就是这排列的顺序。

1)onMeasure():该方法负责对控件大小进行测量

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //该方法的参数是根据布局文件中的设置获取的

      super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
      int width=MeasureSpec.getSize(widthMeasureSpec);//获取控件的宽
//在其他地方可以通过getMeasuredWidth()获取该值 }

2)onLayout():负责确定View显示的位置

子视图的具体位置都是相对于父视图而言的。View的onLayout()方法为空实现,而ViewGroup的onLayout()方法是abstract的,所以继承自ViewGroup的View必需覆写onLayout()方法。

这该方法的最后用以下方法设置子View位置。

        child.layout(l, t, r, b);

深入了解参考:http://www.codekk.com/blogs/detail/54cfab086c4761e5001b253f

http://www.gcssloop.com/customview/CustomViewProcess

http://www.lai18.com/content/10251886.html

Android 自定义View的更多相关文章

  1. Android自定义View 画弧形,文字,并增加动画效果

    一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类   B ...

  2. (转)[原] Android 自定义View 密码框 例子

    遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...

  3. Android 自定义View合集

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

  4. Android 自定义View (五)——实践

    前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...

  5. Android 自定义 view(四)—— onMeasure 方法理解

    前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...

  6. Android 自定义 view(三)—— onDraw 方法理解

    前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view<Android 自定义view(二) -- attr 使用>,那么接下来我们继续深究自定义view,下一步将要去简单理解自 ...

  7. Android 自定义view(二) —— attr 使用

    前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...

  8. Android自定义View之CircleView

    Android自定义View之CircleView 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5999 ...

  9. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

随机推荐

  1. linux关闭双显卡的方法

    我正在使用的一体机是双显卡,在linux下没有很么太好的办法来切换双显卡, 导致使用一会儿后就发烫,关键是这时风扇呜呜的响很吵人 最后找到了下面的解决方法来关掉独立显卡 见 https://githu ...

  2. 从svn资源库目录checkout出maven项目方法

    从svn资源库目录checkout出maven项目方法,如下图所示:

  3. 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】

    转自:http://www.cnblogs.com/skynet/archive/2011/03/29/1998970.html 在项目开发时,有时候想知道源码文件中有多少后缀名为.cc..c..h的 ...

  4. Newtonsoft.Json

    在线生成实体:http://tool.chinaz.com/tools/json2entity.aspx RootObject ac = new RootObject(); ac = JsonConv ...

  5. 进制转换及API接口中的转换

    //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.Wri ...

  6. ElasticSearch学习记录

    中文api 什么是集群? 集群(cluster) >由一个或多个节点组织在一起. >由一个唯一的名字标识,默认为"elasticsearch". 节点(node) &g ...

  7. AngularJS 学习

    原文链接: https://www.zybuluo.com/frank-shaw/note/509653 Promises in AngularJS, Explained as a Cartoon h ...

  8. 使用PHP QR Code生成二维码

    使用PHP QR Code生成二维码   HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址: http://phpqrcode.so ...

  9. linux screen 命令详解

    一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  10. jquery 设置页面元素不可点击、不可编辑、只读(备忘)

    $("input").attr('readonly', true); $("textarea").attr('readonly', true); $(':rad ...