Android之自定义View
自定义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相关推荐
- android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...
- Android 系统(264)---android进阶——自定义View
android进阶--自定义View 软件架构 01.自定义View简介 - onMeasure,onDraw,自定义属性 https://www.jianshu.com/p/48944aad200 ...
- android 动态生成直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...
- android五子棋编程教程全集,android简单自定义View实现五子棋
本文实例为大家分享了android自定义View实现五子棋的具体代码,供大家参考,具体内容如下 先说一下吧,android的自定义View就是自己实现一个类去继承View,实现其中的方法,这里面我最感 ...
- Android 中自定义View 裁剪扇形图片
Android 中自定义View 裁剪扇形图片 当需要裁剪图片为扇形区域时,使用Canvas.clipPath(path)方法可以裁剪为扇形区域 ps:此方法会导致绘制图片边缘有锯齿,暂无解决方法(知 ...
- 【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现
利用一个简单的画图app来说明安卓的图形处理类与自定义View的应用. 如下图,有一个供用户自己任意画图.涂鸦的app, 这里不做那么花俏了,仅提供黑白两色,但可以改变笔尖的粗细. 实质上这里的橡皮擦 ...
- android开发自定义View(三)仿芝麻信用积分
此文参考了https://github.com/HotBitmapGG/CreditSesameRingView 感谢作者的分享!! 首先看一下支付宝上显示的样子 然后看一下模仿的效果 代码 基础部分 ...
- Android 高级自定义View实战
2019独角兽企业重金招聘Python工程师标准>>> 在android组件中主要分为两种:容器(LinearLayout....)和子View(TextView......),但是 ...
- Android之自定义View以及画一个时钟
https://www.2cto.com/kf/201509/443112.html 概述: 当Android自带的View满足不了开发者时,自定义View就发挥了很好的作用. 建立一个自定义View ...
- Android中自定义View的研究 -- 在XML中引用自定义View
如果在一直使用SetContentView(new HellwView(this)觉得总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的便携性,这种感觉让人很不爽,呵呵,在这节里 ...
最新文章
- 使用Druid数据源时候这个问题碰到过没:connection holder is null
- python空值填充为固定值_Python基础:numpy中空值怎样设置
- 【OpenCV3】cv::compare()使用详解
- 使用dotnet Cli向nuget发布包
- python——适用于py3的pillow图像处理模块plist组图分割
- 软件设计原则及设计模式
- 常用SQL语句整理及示例
- My BlackBerry
- 【汇编程序】实现1-100求和(使用LOOP循环)
- Homekit直连的灯带控制套装
- html实现图片裁剪,【前端】图片裁剪(二)Jcrop实现裁剪
- PLC可编程控制器、单片机开发应用及变频调速综合实训装置
- Mapped Statements collection does not contain ... Mybatis报错解决
- php微信公众号报修系统,微信公众号如何实现在线报修系统?
- Outlier Detection Based on Fuzzy Rough Granules in Mixed Attribute Data论文精读
- 基于iPhone 上的运动协处理器M7判断用户当前的运动(姿态)类型
- Aspose.PDF for Java 20.x
- HTML5权威指南读书笔记03(第7,8章)--icon,base,锚点,一些七七八八的元素
- 数据分析师进阶必备6大数学利器
- 鸡声茅店月,人迹板桥霜;莫道君行早,更有早行人
热门文章
- ideal的tomcat 没有artifact
- 23考研660数一数二数三221题,微分方程
- highchart给滑块配置滚动条
- 物联网传输感知课程设计-提纲
- 魔性手游《刀剑大乱斗》源码-H5+安卓+IOS三端源码
- java里两条竖杠应该怎么打_图解怎么在打出一个竖杠或两个竖杠
- Java API源码在哪里找_详解查看JAVA API及JAVA源码的方法
- 0107连通分量-无向图-数据结构和算法(Java)
- java enum使用_java enum用法详解
- 苹果手机计算机的使用技巧,IPHONE玩机技巧介绍 让你的操作更高效