A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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的位置。



其他精华推荐:
【Android】自定义View那些事【连载二】


13 个回复

倒序浏览
自定义view有三个构造方法,我们一般在那个三个参数的构造方法获得自定义的样式属性。
public 自定义的View(Context context, AttributeSet attrs, int defStyle) {}
回复 使用道具 举报
谢谢楼主,楼主辛苦了,黑马加油
回复 使用道具 举报
那些事儿,真给力!!
回复 使用道具 举报
很不错的东西
回复 使用道具 举报
多谢楼主分享
回复 使用道具 举报
收藏了,楼主辛苦,深藏功与名。
回复 使用道具 举报
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
回复 使用道具 举报
每日水一贴!!!!!!
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
1213242342354252
回复 使用道具 举报
键盘敲烂,月薪过万!
回复 使用道具 举报
拜读了,,
回复 使用道具 举报
路过帮顶顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马