关闭

【自定义View系列】android自定义View概述

366人阅读 评论(0) 收藏 举报
分类:

  自定义view是一个综合的技术体系,本说明文档不去分析一个个具体的自定义view的实现,因为自定义view五花八门,是不可能全部分析一遍的。虽然我们不能把自定义view都分析一遍,但是我们能够提取出一种思想,而面对陌生的自定义view时,运用这个思想去快速解决问题。这种思想的描述如下:首先要掌握基本功,比如view的弹性滑动、滑动冲突、绘制原理等等,这些东西都是自定义view所必须的,尤其是那些看起来很炫的自定义view,他们往往对这些技术点的要求更高;熟练掌握基本功后,在面对新的自定义view时,要能够对其分类并选择合适的思路。另外平时还需要多积累一些自定义view相关的经验,并逐渐做到融会贯通,通过这种思想慢慢的就可以提高自定义view的水平了。

自定义View相关类的体系

这里写图片描述

  这个体系充分的运用了面对对象封装、继承、多态的思想,主要采用模板方法模式。我们自己自定义View逃不出对以上几个方法的运用。

为何要进行自定义控件的学习

  实现Android现有控件不能够实现的功能,就需要采⽤⾃定义控件的⽅式;

自定义View的步骤

这里写图片描述

自定义属性

1.在res/values创建attrs.xml
2.attrs.xml定义自定义属性
3.布局中给特定控件制定自定义属性
4.在控件内部获取自定义属性

AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto

http://blog.csdn.net/nwsuafer/article/details/42121521

注意:
必须重载两个构造方法,其中一个是代码创建使用的,一个是布局中引入使用的

自定义View类型1:对现有控件进行拓展

继承view,重写onDraw方法
可以利用已有控件的功能实现通用的功能,自己实现特有的部分就可以了。
可以调用控件已经存在的方法,实现功能;
利用onDraw可以实现控件显示的样子;
控件可以进行自定义属性的设置

步骤
1. 继承view或者view的子类
2. 声明构造方法!!!
一个参数的构造方法:在代码中使用会被调用
两个或者三个参数的构造方法,通过layout xl文件包含控件的时候,会自定调用
如果控件希望在layout使用,控件中必须包含两个或者3个参数的构造方法,通常两个参数的构造方法就行了,没有强制要求三个构造方法都写出来。
3. 当构造完成,就可以直接在布局xml中,引用控件
4. 自定义view的引用,采用<类全路径>去引用

自定义View类型2:通过组合来实现新的控件(继承viewgroup派生特殊的layout)

方式:将android中已有的控件,通过代码的方式,将这些控件组合在一起,实现更复杂的功能;
常见的案例:autocompletetextview、spinner
常见的第三方控件:瀑布流、拨号盘、侧滑菜单、水纹进度等等

步骤:
1. 集成viewgroup以及viewgroup的子类
2. 构造方法的声明
3. 初始化,其实各种效果都在初始化中实现

自定义View类型3:重写view来实现全新的控件

自己来实现外观,自己来写事件
步骤:
1. 继承view
2. 声明构造方法:现阶段 有三种构造方法
3. 绘制onDraw实现自己的外观
4. 尺寸的测量:告诉父容器,自身的尺寸
5. 可选:实现点击、手势
6. 可选:内容的刷新、线程的支持

自定义View的事件处理

包括:
View自身事件处理
Touch事件监听器事件处理
事件分发处理
常用接口回调来增加自定义View的扩展性

自定义View更新数据和刷新操作

1.invalidate强制View刷新,调用onDraw方法,invalidate必须在主线程中执行
2.postInvalidate强制View刷新,调用onDraw方法,postInvalidate可以在子线程执行,也可以在主线程执行

0
0
查看评论

【Android自定义View实战】之你应该明白的事儿

在Android的实际开发中,我们Android系统本身已经给我们提供了很丰富的UI以及各种实用的控件,例如TextView,Button,ImageView等。用这些基础控件已经能够实现非常优美的界面以及功能。然而在实际的开发中,我们由于客户的各种需求,App开发的各种标新立异,追求个性化,所以,...
  • u010785585
  • u010785585
  • 2016-10-24 14:45
  • 2726

Android 自定义View合集

自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/Mr-XiaoLiang 自定义控件三部曲 http://blog.csdn.net/ha...
  • u011507982
  • u011507982
  • 2016-04-20 12:04
  • 9789

Android 中自定义View的初步总结

概述在开发过程中,经常会遇到系统中提供的控件无法满足产品的设计需求,这时可能就需要考虑使用自定义的View来实现产品的设计细节了。对于自定义View,可以分为两种,一种是自定义控件(继承View),另一种是自定义布局容器(继承ViewGroup),下面就针对自定义控件View的应用进行简单的总结。
  • yuminfeng728
  • yuminfeng728
  • 2016-06-08 13:32
  • 3835

Android自定义View基础篇(一)

在讲解之前,我谈谈开发Android一年多以来的感受:大多数情况下只要会用,根本不管为什么要这么写,原理就更不会看了。代码真的很乱,没有规范,很多时候自己写的代码都不知道怎么改。就更别说扩展,复用,抽象。虽然做了6,7个项目,但真正踏实学到的东西不多。你呢?有何感想?来看看下面2张自定义的View:...
  • u012551350
  • u012551350
  • 2016-03-17 14:15
  • 1199

Android自定义view详解

对于我这样一个Android初级开发者来说,自定义View一直是一个遥不可及的东西,每次看到别人做的特别漂亮的控件,自己心里那个痒痒啊,可是又生性懒惰,自己不肯努力去看书,只能望而兴叹,每次做需求用到自定义控件,就直接去Github上找,找到合适的就用,找不到合适的,凑合也用,反正从来没想过要自己来...
  • pengpenggxp
  • pengpenggxp
  • 2016-07-11 17:39
  • 3226

Android自定义View 一<最简单的自定义View>

为什么要自定义Viewandroid提供了很多控件供我们使用 但有些功能是系统所提供的实现不 了的 这时候我们就需要自定义一个View来实现我们所需要的效果. 在Android中所有的控件都直接或间接的继承自View,分View和ViewGroup两部分. 我们常用的一些View比如T...
  • qq_36209474
  • qq_36209474
  • 2017-03-19 15:39
  • 1070

简单说说Android自定义view学习推荐的方式

这几天比较受关注,挺开心的,嘿嘿。 这里给大家总结一下学习自定义view的一些技巧。 1.首先 去看看鸿洋神的博客 Android 自定义view(1). 鸿洋神的入门教程讲的很详细。再次膜拜。 然后我这里对上面博客补充一些内容,那就是MeasureSpec相关的一些东西,这些东西...
  • wingichoy
  • wingichoy
  • 2016-01-08 15:24
  • 8163

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

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51454685 本文出自:【openXu的博客】 [TOC] 在上一篇博客《Android自定义View(一、初体验)》中我们体验了自定义控件的基本流程: 继承V...
  • u010163442
  • u010163442
  • 2016-05-21 03:53
  • 18712

安卓自定义View教程目录

这是一个从零起步,从入门到懵逼的自定义View教程。本教程从最基础的内容讲解,并且深入到了相关的各个细节,不论你是刚入门的菜鸟,还是有一定经验的工程师相信本系列文章都会对你有所帮助。 你既可以将本教程当作学习资料来学习自定义View相关的各种知识,也可以作为工具来使用,在需要的时候查询相关的知识细...
  • osle123
  • osle123
  • 2016-10-08 14:49
  • 1431

Android自定义View构造函数详解

目录目录 初始Custom View的构造函数 生成Custom View的自定义属性 在Custom View的构造函数中获取自定义属性 设置自定义属性值 在布局xml文件中为属性赋值 在style中为属性赋值 通过RstyledefStyle为属性赋值 在Custom View所在的Activi...
  • zinss26914
  • zinss26914
  • 2015-11-04 21:19
  • 10285
    写给自己
    ○ 种一棵树最好的时间是十年前,其次是现在

    ○ 坚持输出,坚持书写,才可以持续成长

    ○ 所有美好事物的成长都是缓慢的

    ○ 既往不恋,未来不迎,当下不杂

    ○ 业精于勤,荒于嬉,行成于思,毁于随

    ○将军赶路 不追小兔

    ○不要拘泥于语言,同样也不要拘泥于行业,眼光放远一点

    ○ 如果某件事你做的不够好,不必介怀,因为以后的每一次每一天你都会做得越来越好

    ○ 此心不于事上磨,更于何处磨此心

    ○ 保持热情,保持求知欲

    ○ 千里之行,始于足下

    ○ 最怕你一生碌碌无为,还安慰自己平凡可贵。

    ○ 对于任何事,要保持自觉积极主动探索尝试。但是如果自己不积极认真地生活,不管得到什么样的回答都没有用。——解忧杂货店
    个人资料
    • 访问:694399次
    • 积分:7156
    • 等级:
    • 排名:第3766名
    • 原创:298篇
    • 转载:53篇
    • 译文:0篇
    • 评论:121条
    个人简介