安卓自定义VIEWAndroidAndroid开发经验谈

Android 自定义 View

2018-01-23  本文已影响167人  5fc9b6410f4f

Android 从 0 开始自定义控件之 View 基础知识与概念(一)

自定义 View 可以说是 Android 路上的一道坎,会的人觉得简单,不会的觉得很难。最近正好在看《Android 开发艺术探索》讲的自定义 View 这里,于是打算从头理一理自定义 View,写写笔记,方便日后自己查阅也希望能帮助到你。


安卓自定义 View 基础 - 角度与弧度


在我们自定义 View,尤其是制作一些复杂炫酷的效果的时候,实际上是将一些简单的东西通过数学上精密的计算组合到一起形成的效果。
这其中可能会涉及到画布的相关操作 (旋转),以及一些正余弦函数的计算等,这些内容就会用到一些角度、弧度相关的知识。


Android 从 0 开始自定义控件之 自定义 View 基础实例(十)


在前面的博客当中,我们学习了 View 的一些工作原理知识等,现在是时候来写一波实例了,毕竟实践出真知嘛~ 在开始写实例之前,首先来了解下自定义 View 到底有哪几种吧,然后再根据每种分别写一个简单的小栗子。


HenCoder Android 开发进阶:自定义 View 1-3 文字的绘制


这期是 HenCoder 自定义绘制的第三期:文字的绘制。 之前的内容在这里: HenCoder Android 开发进阶 自定义 View 1-1 绘制基础 HenCoder Android 开发进阶 自定义 View 1-2 Paint 详解 如果你没听说过 HenCode…


HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础


从今天开始,HenCoder 就正式开讲知识技能了。按照我的计划,第一季是 UI,UI 一共分为三部分:绘制、布局和触摸反馈。本期是绘制部分的第一期。绘制大概会用 5~6 期的时间讲完,整个 UI 的绘制、布局和触摸反馈三部分大概会用十来期。更新频率大约为每周一更(不承诺哟)。 …


Android 从 0 开始自定义控件之 View 的 draw 过程 (九)


前面已经了解了 View 三大流程的 measure 和 layout 过程,这一篇继续学习最后的 draw 过程。draw 的过程依旧是在 ViewRootImpl#performTraversals 方法中调用的,其调用顺序是在最后, 相较与 measure 和 layout 过程要简单的多,它的作用就是将 View 绘制到屏幕上面。


HenCoder Android 开发进阶:自定义 View 1-4 Canvas 对绘制的辅助


这期是 HenCoder 自定义绘制的第 1-4 期:Canvas 对绘制的辅助——范围裁切和几何变换。 之前的内容在这里: HenCoder Android 开发进阶 自定义 View 1-1 绘制基础 HenCoder Android 开发进阶 自定义 View 1-2 Pa…


Android 从 0 开始自定义控件之自定义属性详解(十一)


和自定义 View 打交道,肯定是难免要写自定义属性的。虽然我们可以直接使用 Android 本身一些系统控件定义的属性,但是在实际开发中,由于我们所自定义 View 的多样性,所以我们就需要自己来定义属于我们所编写自定义控件的属性了。


安卓自定义 View 进阶 - 绘制基本图形


在上一篇自定义 View 分类与流程中我们了解自定义 View 相关的基本知识,不过,这些东西依旧还是理论,并不能拿来 (zhuang) 用(B), 这一次我们就了解一些能 (zhaung) 用(B)的东西。
在本篇文章中,我们先了解 Canvas 的基本用法,最后用一个小示例来结束本次教程。


Andriod 从 0 开始自定义控件之 View 的 layout 过程 (八)


在上一篇文章了,我们学习了 View 三大流程之一的 measure 过程,当 measure 过程完成后,View 的大小就测量好了。接下来就到了 layout 的过程了,layout 的过程就是用于确定 View 的位置。下面通过查看源码,来更深入的了解下 layout 的整个过程。


安卓自定义 View 进阶 - 画布操作


上一篇【Canvas 之绘制基本形状】中我们了解了如何使用 Canvas 绘制基本图形,本次了解一些基本的画布操作。合理的使用画布操作可以帮助你用更容易理解的方式创作想要的效果。


安卓自定义 View 进阶 - Path 之完结篇 (伪)


经历过前两篇 Path 之基本操作 和 Path 之贝塞尔曲线 的讲解,终于进入 Path 的收尾篇,本篇主要讲解Path中的填充模式,布尔运算,边界计算等。


安卓自定义 View 进阶 - Matrix 原理


Matrix 是一个在后台默默辛苦工作的劳模,我们经常看到它的劳动成果,却很少见到 Matrix,就让我们借助本篇文章来探访一下 Matrix 都做了哪些工作,是如何工作的。


安卓自定义 View 进阶 - 贝塞尔曲线


在上一篇文章 Path 之基本图形中我们了解了 Path 的基本使用方法,本次了解 Path 中非常非常非常重要的内容 - 贝塞尔曲线。让我们共同感受曲线之美。


Android 从 0 开始自定义控件之 View 的 measure 过程(七)


measure 过程要分两种情况,第一种是 View,第二种是 ViewGroup。如果是 View 的话,那么只通过 measure 方法就完成其测量过程,但是如果是 ViewGroup 的话,不仅需要完成自己的测量过程,还需要完成它所有子 View 的测量过程。如果子 View 又是一个 ViewGroup,那么继续递归这个流程。下面先从 View 开始,详细了解下 View 的 measure 过程。


安卓自定义 View 进阶 - Path 之玩出花样


本篇主要讲解 Path 与 PathMeasure 的关系以及两者结合创造出的神奇效果,想必用来装逼也是不错的。


安卓自定义 View 进阶 - 事件分发机制详解


【Android 干货】从应用场景理解 android 事件分发机制,和外面那些妖艳的贱货完全不一样呢。


安卓自定义 View 基础 - 坐标系


由于移动设备一般定义屏幕左上角为坐标原点,向右为 x 轴增大方向,向下为 y 轴增大方向, 所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的。


安卓自定义 View 进阶 - 图片文字


在上一篇文章 Canvas 之画布操作中我们了解了画布的一些基本操作方法,本次了解一些绘制图片文字相关的内容。如果你对前几篇文章讲述的内容熟练掌握的话,那么恭喜你,本篇结束之后,大部分的自定义 View 已经难不倒你了,当然了,这并不是终点,接下来还会有更加炫酷的技能。


安卓自定义 View 进阶 - 分类和流程


本章节为什么要叫进阶篇?(虽然讲的是基础内容),因为从本篇开始,将会逐渐揭开自定义 View 的神秘面纱,每一篇都将比上一篇内容更加深入,利用所学的知识能够制作更加炫酷自定义 View,就像在台阶上一样,每一篇都更上一层,帮助大家一步步走向人生巅峰,出任 CEO,迎娶白富美。 误,是帮助大家更加了解那些炫酷的自定义 View 是如何制作的,达到举一反三的效果。


安卓自定义 View 进阶 - 事件分发原理


图解 Android 事件分发原理,让你深入了解事件分发过程中的权力结构。


Android 从 0 开始自定义控件之 View 的弹性滑动(三)


在上一篇(Android 从 0 开始自定义控件之 View 的滑动(二))中,用 scrollTo() 和 scrollBy() 方法实现了 View 的滑动,但是实现的效果非常的生硬,用户体验很差。
这一篇继续在原有基础上,扩展下 View 的弹性滑动。


Android 从 0 开始自定义控件之 ViewRoot 与 DecorView (五)


好几个星期没写博客了,今天继续来学习 View 相关的知识:View 的三大流程:测量流程、布局流程、绘制流程。
在了解这三大流程之前,首先来了解下 View 的几个基本概念,关于 ViewRoot 和 DecorView。


安卓自定义 View 进阶 - Matrix 详解


这应该是目前最详细的一篇讲解 Matrix 的中文文章了,在上一篇文章 Matrix 原理中,我们对 Matrix 做了一个简单的了解,偏向理论,在本文中则会详细的讲解 Matrix 的具体用法,偏向实战。另外本文也包括了一些关于 Matrix 的实用技巧。


android 从 0 开始自定义控件之 View 的滑动冲突详解(四)


滑动冲突可以说每一个 Android 开发者都遇到过,虽然 Android 已经在如 ViewPager 这些控件内部处理了滑动冲突,但是在我们自己定义控件,或者一些复杂的布局情况下,依然要去解决滑动冲突的情况。
这一篇文章总结了下滑动冲突出现的场景,以及其中的规则和解决方法。


Android 从 0 开始自定义控件之 View 的滑动(二)


由于 Android 的屏幕局限性,为了展示更多的东西,实现一个可以滑动的 View 还是非常重要的。所以这篇文章主要记下 View 的几种常见滑动方式:

1,通过 View 的 ScrollBy 和 ScrollTo 方法实现滑动。
2,通过动画给 View 施加位移效果来实现滑动。
3,通过改变 View 的 LayoutParams 使 View 重新布局从而实现滑动。


HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解


这期是 HenCoder 自定义绘制的第二期: Paint。如果你没看过第一期,可以先去看一下第一期: HenCoder Android 开发进阶:自定义 View 1-1 绘制基础 简介 上一期我已经简单说过, Canvas 的 drawXXX() 方法配合 Paint 的几个…


Android 从 0 开始自定义控件之深入理解 MeasureSpec (六)


MeasureSpec 是 View 的一个内部类,代表了一个 32 位的 int 值,高 2 位代表 SpecMode,低 30 位代表 SpecSize。SpecMode 是指测量模式,SpecSize 是指在某种测量模式下的规格大小。.

该类在很大程度上决定了 View 的尺寸规格,之所以说很大程度上是因为这个过程还受父容器的影响,是因为父容器影响 View 的 MeasureSpec 的创建过程。系统会将 View 的 LayoutParams 根据父容器所施加的规则转换成对应的 MeasureSpec,然后再根据这个 MeasureSpec 来测量出 View 的宽高。需要注意的是,这个的宽高是测量的宽高,并不一定是 View 最终的宽高。


安卓自定义 View 基础 - 颜色


简要介绍安卓中的颜色相关内容,包括颜色的定义,创建颜色的几种方式,以及颜色的混合模式等。


安卓自定义 VIew 进阶 - Matrix Camera


一个专业给 View 拍照的摄像机,安卓制作简单 3D 效果必不可少的工具,你值得拥有。


安卓自定义 View 进阶 - Path 基础


在上一篇 Canvas 之图片文字中我们了解了如何使用 Canvas 中绘制图片文字,结合前几篇文章,Canvas 的基本操作已经差不多完结了,然而 Canvas 不仅仅具有这些基本的操作,还可以更加炫酷,本次会了解到 path(路径)这个 Canvas 中的神器,有了这个神器,就能创造出更多炫 (zhuang) 酷(B)的东东了。

上一篇 下一篇

猜你喜欢

热点阅读