专栏首页Android群英传自定义View怎么学

自定义View怎么学

很多读者给我留言,让我讲下关于自定义View的分析,我想说,自定义View,看完这篇文章,就够了!

没错,是在吹牛逼,自定义View根本写不完,任何企图靠几篇文章就完全驾驭自定义View的,都是耍流氓,是要被打的。

学习自定义View绝对是一个没有止境的过程,你永远不知道射鸡师会拿着什么样的图来找你。在自定义View的江湖,有传说级别的爱哥,但已经退出江湖多年,好久没传出一篇自定义View的秘籍了,也有现在风生水起的养猪大侠CJJ,以他为首的一帮丧心病狂的自定义View开发者,曾经写过很多自定义View的文章和库,多看看他们的文章,可以吸取天地的精华,让你在学习自定义View的时候,至少比别人快一个车位。

好了,下面进入正题,自定义View到底怎么学。学习自定义View之路好比是在渡劫,越到后面,越是难以超越自我,但是入门,还是非常简单的。

资质

自定义View大部分时间都是在搞数学,特别是三角函数、角度、弧度等等知识,如果你数学高中都没毕业,请先完成你的学业!

第零劫

了解Android的View视图坐标系,知道什么是绝对坐标,什么是相对坐标,以及你现在在哪个坐标。这是开始学习自定义View的基础,不掌握好坐标,你后面连该往哪画都不知道,还自定义个啥?这一块在《Android群英传》中有详细的讲解,推广一下,别喷我。

第一劫

了解Canvas绘图的基本API,例如drawXXX之类的方法,这些是你的第一支画笔,如果你都不熟悉自己的画笔,那么还谈什么绘图?这一劫的基础一定要打好,多去尝试尝试这些API,修改修改参数,看看效果会发生怎样的变化,这一阶段的基础不打好,会让你后面如履薄冰。

第二劫

了解View的重要重载方法例如onSizeChanged()之类,以及getTop()、getXXX()这样的方法,到底取出的是什么样的数据,这些方法究竟在什么时候被调用。这一块在《Android群英传》中也有详细的讲解,推广一下,别喷我,again。

第三劫

了解View绘图的过程,底层的绘图原理,特别是onLayout()、onMeasure()这些方法到底是个什么鬼,以及你的View大小究竟是怎么计算出来的。这个阶段对于完成一个可商用的自定义View是至关重要的,你的绘图要想具有装逼的功能,就得满足不同人的需求,不仅要好看,而且要好用。

第四劫

了解Canvas的状态保存,坐标移动等内容,了解图层以及图层的保存,了解通过改变坐标来简化绘图的方法。这些东西就和真实的绘图很像了,特别是图层之类的概念,可以说是PS的核心了。

第五劫

了解Bitmap、Drawable等内容,知道如何对自定义View进行很好的拓展。利用好这些东西,可以对自定义View进行很好的补充。

第六劫

了解Path的API,了解通过Path来构造图像的方法,特别是贝塞尔曲线、以及PathMeasure的使用。这些都是数学绘图的高级使用技巧,掌握这些技巧,是后面进行自定义动画的基础,更是自定义View的高级技巧。

第七劫

了解图像的混合模式、Path的填充模式、环绕模式、Matrix等对图像特效的处理方式。这些是对图形图像的进一步处理,前面可能都是针对单独的效果,而利用混合模式、矩阵,可以实现更加丰富的效果。

http://www.imooc.com/learn/343 Android图像处理-变"换"莫测的图像

http://www.imooc.com/learn/302 Android图像处理-打造美图秀秀从它开始

这两门课是我在慕课网讲的对图像处理的两门视频课程。对于自定义View的特效实现,还是很有帮助的,欢迎大家前去围观。

在渡过这七劫之后,你就可以向着自定义动画进军了,这部分,我们下道菜才聊,先缓一缓,大家可以针对前面的劫数,来看看自己目前处于哪一劫。

其实自定义View并不是什么非常高深的东西,要学好自定义View,首先要对你的绘画工具了如指掌,看到要自定义的View,首先要在气势上压倒她,没有什么自定义View是做不出来的,仔细分析,如何用你手中的画笔、工具,来绘制,复杂的图形,是否可以拆解,是否可以通过一些技巧来简化。分析完毕,就是纯粹的坐标计算了,利用好View的API和重载方法,做最合适的计算。剩下的就是留给你装逼的时间了。另外,多看一些优秀的自定义View是如何实现的,以及一些解析自定义View的博客,对提高自己的绘图技术,也是很有帮助的。

本文分享自微信公众号 - Android群英传(android_heroes),作者:徐宜生

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于XDanmuku的Android性能优化实战

    用户1907613
  • 不怕搞事,自定义View云扩散效果

    用户1907613
  • Siri 帮我开灯

    用户1907613
  • 记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。

    前三天收到位网友的私信求助,问题大概如标题所示。具体是下面的情况,个人感觉,这个问题挺有趣,也会在实际项目开发中很常见。不想看前奏的请直接跳至解决方法。 问题原...

    林冠宏-指尖下的幽灵
  • HenCoder UI 部分 2-2 全新定义 View 的尺寸

    这期是 HenCoder 布局部分的第二期:重写 onMeasure() 来全新定制自定义 View 的尺寸。

    扔物线
  • Eclipse_常用技巧_02_使用Eclipse进行源码分析

           在代码区中选择需要的类和接口定义,然后右击,选择“Open Type Hiberarchy”,可以在“Hiberarchy View”中看到继承关...

    shirayner
  • android MVP 架构思路

    android MVP 架构思路 概念 mvp是一个新的android开发架构,在之前的mvc的基础上进行修改,目标是使得逻辑和显示解耦,达到模块化。 关于它俩...

    用户1263308
  • 【Dev Club分享】基于RxJava的一种MVP实现

    Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾...

    腾讯Bugly
  • 前端面试题

    3、实现效果,点击容器内的图标,图标边框变成border 1px solid red,点击空白处重置。

    grain先森
  • .Net 转战 Android 4.4 日常笔记(8)--常见事件响应及实现方式

    在Andrioid开发中,常见的事件如下 单击事件 OnClickListener 长按事件 OnLongClickListener 滑动事件 OnTouchL...

    用户1149182

扫码关注云+社区

领取腾讯云代金券