自定义View自定义View有四个构造函数如果View是在Java代码里面new的,则调用第一个构造函数如果View是在.xml里声明的,则调用第二个构造函数不会自动调用. 一般是在第二个构造函数里主动调用  如View有style属性时最后一个基本上用不到Measure:测量View的宽高(1.在某些情况下,需要多次测量(measure)才能确定View最终的宽高;(2.该情况下,measure过程后得到的宽高可能不准确;(3.此处建议:在layout过程中onLayout()去获取最终的宽高Layout:(1.计算视图(View)的位置(2.即计算View的四个顶点位置:Left、Top、Right和BottomDraw:绘制View视图系统自带的View可以在xml中配置属性,对于写的好的自定义View同样可以在xml中配置属性,为了使自定义的View的属性可以在xml中配置,需要以下4个步骤:1. 通过 <declare-styleable> 为自定义View添加属性2. 在xml中为相应的属性声明属性值3. 在运行时(一般为构造函数)获取属性值4. 将获取到的属性值应用到View自定义view 的三种方式:
1. 组合基础控件就是将系统原有的控件进行组合,构成一个新的控件。这种方式下,不需要开发者自己去绘制图上显示的内容,标题栏例子:继承LinearLayout,RelativeLayout等都可以。继承这些系统现成的ViewGroup,是因为这样可以不用再重写onMeasure,onLayout等,这样省事很多。由于这里是一个布局控件,要用LayoutInflater来填充,所以需要继承ViewGroup,如果继承View的直接子类,编译会不通过。2. 继承基础控件,做相应的更改。通过继承系统控件来完成自定义View,一般是在原有控件基础上修改,不会做大幅度改动,如在TextView的文字下方添加下划线。复用系统控件的onMeasure和onLayout方法,重写onDraw方法,在其中绘制一些需要的内容。3. 继承View 或 ViewGroup:(1)直接继承View类自绘View控件时,这一过程是在重写的onDraw方法中实现的。由于是view,它没有子控件了,所以重写onLayout没有意义。onMeasure的方法可以根据自己的需要来决定是否需要重写,很多情况下,不重写该方法并不影响正常的绘制。然后在Activity界面的布局文件中引入(1)直接继承ViewGroup类需要直接继承ViewGroup,onLayout是ViewGroup中的抽象方法,直接继承者必须实现该方法。所以onLayout方法必须要实现的,如果这里面的方法体为空,那该控件的子view就无法显示了。要想准确测量,onMeasure方法也是要重写的。下面例子中,只演示了第一个子view的测量和布局,onLayout方法中的child.layout,就完成了对子view的布局。

感谢 :自定义View的三种实现方式及自定义属性使用介绍_低调函数的博客-CSDN博客_自定义view的三个方法

Android之自定义View相关推荐

  1. android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...

    本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...

  2. Android 系统(264)---android进阶——自定义View

    android进阶--自定义View 软件架构 01.自定义View简介 - onMeasure,onDraw,自定义属性  https://www.jianshu.com/p/48944aad200 ...

  3. android 动态生成直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...

    本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...

  4. android五子棋编程教程全集,android简单自定义View实现五子棋

    本文实例为大家分享了android自定义View实现五子棋的具体代码,供大家参考,具体内容如下 先说一下吧,android的自定义View就是自己实现一个类去继承View,实现其中的方法,这里面我最感 ...

  5. Android 中自定义View 裁剪扇形图片

    Android 中自定义View 裁剪扇形图片 当需要裁剪图片为扇形区域时,使用Canvas.clipPath(path)方法可以裁剪为扇形区域 ps:此方法会导致绘制图片边缘有锯齿,暂无解决方法(知 ...

  6. 【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现

    利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用. 如下图,有一个供用户自己任意画图.涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细. 实质上这里的橡皮擦 ...

  7. android开发自定义View(三)仿芝麻信用积分

    此文参考了https://github.com/HotBitmapGG/CreditSesameRingView 感谢作者的分享!! 首先看一下支付宝上显示的样子 然后看一下模仿的效果 代码 基础部分 ...

  8. Android 高级自定义View实战

    2019独角兽企业重金招聘Python工程师标准>>> 在android组件中主要分为两种:容器(LinearLayout....)和子View(TextView......),但是 ...

  9. Android之自定义View以及画一个时钟

    https://www.2cto.com/kf/201509/443112.html 概述: 当Android自带的View满足不了开发者时,自定义View就发挥了很好的作用. 建立一个自定义View ...

  10. Android中自定义View的研究 -- 在XML中引用自定义View

    如果在一直使用SetContentView(new HellwView(this)觉得总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的便携性,这种感觉让人很不爽,呵呵,在这节里 ...

最新文章

  1. 使用Druid数据源时候这个问题碰到过没:connection holder is null
  2. python空值填充为固定值_Python基础:numpy中空值怎样设置
  3. 【OpenCV3】cv::compare()使用详解
  4. 使用dotnet Cli向nuget发布包
  5. python——适用于py3的pillow图像处理模块plist组图分割
  6. 软件设计原则及设计模式
  7. 常用SQL语句整理及示例
  8. My BlackBerry
  9. 【汇编程序】实现1-100求和(使用LOOP循环)
  10. Homekit直连的灯带控制套装
  11. html实现图片裁剪,【前端】图片裁剪(二)Jcrop实现裁剪
  12. PLC可编程控制器、单片机开发应用及变频调速综合实训装置
  13. Mapped Statements collection does not contain ... Mybatis报错解决
  14. php微信公众号报修系统,微信公众号如何实现在线报修系统?
  15. Outlier Detection Based on Fuzzy Rough Granules in Mixed Attribute Data论文精读
  16. 基于iPhone 上的运动协处理器M7判断用户当前的运动(姿态)类型
  17. Aspose.PDF for Java 20.x
  18. HTML5权威指南读书笔记03(第7,8章)--icon,base,锚点,一些七七八八的元素
  19. 数据分析师进阶必备6大数学利器
  20. 鸡声茅店月,人迹板桥霜;莫道君行早,更有早行人

热门文章

  1. ideal的tomcat 没有artifact
  2. 23考研660数一数二数三221题,微分方程
  3. highchart给滑块配置滚动条
  4. 物联网传输感知课程设计-提纲
  5. 魔性手游《刀剑大乱斗》源码-H5+安卓+IOS三端源码
  6. java里两条竖杠应该怎么打_图解怎么在打出一个竖杠或两个竖杠
  7. Java API源码在哪里找_详解查看JAVA API及JAVA源码的方法
  8. 0107连通分量-无向图-数据结构和算法(Java)
  9. java enum使用_java enum用法详解
  10. 苹果手机计算机的使用技巧,IPHONE玩机技巧介绍 让你的操作更高效