黑马程序员技术交流社区

标题: 【Android】自定义View那些事【连载一】 [打印本页]

作者: Android_Robot    时间: 2016-7-11 16:27
标题: 【Android】自定义View那些事【连载一】
本帖最后由 Android_Robot 于 2016-10-19 14:56 编辑

自定义View那些事【一】


学Android的看过来,项目里这个截图,眼熟吧,哪个知识点是自定义View?能讲出来怎么实现的吗?

前言

Android系统已经为我们提供了有各种功能的View了,如显示文本的,图片的,还提供了一些ViewGroup控制子View显示的,如ListView,LinearLayout,RelativeLayout,然而呢,面对复杂多变的产品需求,这些还是无法满足。在黑马的课程中,我们有4天的专门讲解自定义View知识的课程,也在4个项目中去穿插的讲解自定义控件,可以说算是比较全面了。今天我从几个方面综合讲解下如何去自定义出你想要的View。

分析

当我们说要自定义一个View时,其实你是在想自定义这个View的这些方面:
1. 你想自定义这个View上显示的内容
2. 你想自定义这个View中子View的摆放位置
3. 你想让这个View跟随手指的移动进行某些变化
所以,我们就从这3个方面来学习如何自定义效果。

实践

如何自定义View显示的内容
首先,你要知道想自定义View应该去继承自谁,到底是View还是ViewGroup;如果你只是想自定义单个View的内容,那么应该继承自View;如果你想自定义一个布局的显示内容,那么应该继承ViewGroup。
现在我们设定需求,要做一个显示一个红色圆形的View,那么你要继承View,重写onDraw方法,因为onDraw方法就是允许自定义显示内容的方法。我们在里面绘制一个圆,代码如下:

效果图如下:

下面呢,我们在设一个复杂点的需求,要求自定义一个显示一个红色对勾的View,这时候要绘制对勾,需要借助Path类来勾勒。代码如下:
效果图如下:
Ok,以上这些就是如何自定义View内容的技巧,当然如果你想绘制更加复杂的效果,那就要仔细学习一下Canvas和Path的api了。
自定义View那些事【连载二】中,将会解决 如何自定义View中子View的位置。



其他精华推荐:
【强荐!】2016年最新Android学习路线图——按此路线图学习月薪过万{ 火速收入}
【Android】自定义View那些事【连载二】



作者: empty3717    时间: 2016-7-11 21:11
自定义view有三个构造方法,我们一般在那个三个参数的构造方法获得自定义的样式属性。
public 自定义的View(Context context, AttributeSet attrs, int defStyle) {}
作者: EvilFoX    时间: 2016-7-12 16:33
谢谢楼主,楼主辛苦了,黑马加油
作者: 一叶知秋来    时间: 2016-7-12 21:48
那些事儿,真给力!!
作者: chenglong25    时间: 2016-7-13 18:45
很不错的东西
作者: miniccc    时间: 2016-7-14 23:52
多谢楼主分享
作者: jjccxx12    时间: 2016-7-15 16:22
收藏了,楼主辛苦,深藏功与名。
作者: 申落土    时间: 2016-7-15 22:28
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
作者: sanmaovszhe    时间: 2016-7-16 22:51
每日水一贴!!!!!!
作者: zlb820    时间: 2016-7-19 12:12
谢谢分享
作者: 鳄鱼的眼泪    时间: 2016-7-21 08:47
1213242342354252
作者: sanmaovszhe    时间: 2016-7-22 23:18
键盘敲烂,月薪过万!
作者: Frank_Ms1ZR    时间: 2016-7-24 13:48
拜读了,,
作者: bbbbittersweet    时间: 2016-7-25 00:26
路过帮顶顶




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2