-
[目录]Android自定义View教程
一个从零起步的自定义View教程。
本教程从最基础的内容讲解,并且深入到了相关的各个细节,不论你是刚入门的菜鸟,还是有一定经验的工程师相信本系列文章都会对你有所帮助。 你可以将本教程当作学习资料来学习自定义View相关的各种知识,也可以作为工具来使用,在需要的时候查询相关的一些知识细节。
-
[目录]雕虫晓技
简单技术的深度挖掘,从简单中发现不简单
雕虫晓技这一系列文章的定位为杂谈,因此你会发现里面不仅有 Android 相关技术,还有一些乱七八糟的工具推荐,一些与开发相关的小技巧,同时也会包括一些个人杂谈等内容。
-
安卓自定义View进阶-画笔基础(Paint)
在Android自定义View系列文章中,前面的部分有详细的讲解画布(Canvas)的功能和用法,但是和画布(Canvas)共同出现的画笔(Paint)却没有详细的讲解,本文带大家较为详细的了解一下画笔的相关内容。 Paint 在英文中作为名词时主要含义是涂料,油漆,颜料的意思,作为动词则具有绘画、粉刷的意思,不过在程序相关的中文博客里面,Paint 通常被解释为画笔,本文也将采用这种翻译,因此本文里面提到的画笔如没有特殊表明就指代 Paint。0.引子通过本系列前面的文章知道,View 上的内容是通过 C...…
-
雕虫晓技(十) Android超简单气泡效果
【示例项目:BubbleSample】最近有用到水下气泡上升效果,因此在网上查了一下资料,结果还真找到了,就是这篇文章 [Android实例] 水下气泡上升界面效果, 不过这篇文章所附带的示例代码是有些问题的,例如View移除后,线程没有正确关闭,锁屏后再打开屏幕,气泡会挤成一团等问题,因此我在它的原理基础上稍为进行了一些调整和修改,解决了这些问题,它可以实现下面这样的效果:0. 基本原理气泡效果的基本原理非常简单,其实所谓的气泡就是一个个的半透明圆而已,它的基本逻辑如下: 如果当前圆的数量没有超过数量上限...…
-
ArcSeekBar(圆弧拖动条)
GitHub项目地址: https://github.com/GcsSloop/arc-seekbar这个是在公司项目中准备使用的一个控件,本准备直接在网上搜一个用,可惜找到的很多都是 ProgressBar,并不具备拖拽功能,于是自己动手实现了一个,其功能和特性均仿照 SeekBar 进行设计。效果预览支持的特性 进度功能。 自定义属性配置。 线条宽度。 开口角度。 旋转角度。 渐变色。 最大进度值。 拖动按钮颜色、大小、样式(填充、描边、填充 描边)。 状态变化回调。主要文件 ...…
-
雕虫晓技(九) Netty与私有协议框架
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客1.前言【本文示例源码下载】在本系列的前一篇,说了 Android 与数据流的斗争,主要是 Android 前端自身处理方案。这一篇则是涉及一些前后端方面的数据传输的问题。通常来说,Android 和服务端之间的数据传输都会采用标准协议规范,且大多数是基于 HTTP 协议的,例如在Android端最常用的 Retrofit,则是 RESTful 风格的一套网络框架。虽然这是我们最常用的框架之一,但是很多人对该框架了解并不是特别...…
-
雕虫晓技(八) Android与数据流的斗争
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客本文并没有什么实质性的内容,只是自己工作和学习这段时间的一些经验杂谈,仅从自己的角度阐述一下自己观察到的一些内容,可能并不全面,也不一定正确,仅供大家参考一下。目前 Android 开发,从广义上来说可以划为前端的一部分,毕竟大部分 Android 开发所做的工作就是从服务器获取数据,将这些数据用合适的方式展示给用户,再把用户操作产生的数据传递给服务器。在这样的情境下 Android 开发所需要解决的一个核心问题就是数据的传递...…
-
安卓自定义View进阶-缩放手势检测(ScaleGestureDecetor)
0. 前言Android 缩放手势检测,ScaleGestureDetector 相关内容的用法和注意事项,本文依旧属于事件处理这一体系,在大多数的情况下,缩放手势都不是单独存在的,需要配合其它的手势来使用,所以推荐配合 手势检测(GestureDetector) 一起观看。如果是用在自定义的控件上,则需要配合 Matrix 相关内容使用起来可能会更加方便,如果对 Matrix 不太熟悉也可以看本系列文章之前的内容来补充一下相关知识。如果你没看过之前的文章,可以到 自定义 View 系列 来查看这些内容。缩放...…
-
雕虫晓技(七) 用旧Android手机做远程摄像头
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客0. 前言科技发展越来越快,手机也换的越来越频繁,有很多旧手机都被淘汰了,这些旧手机一般没什么用,也不能卖,毕竟手机中可能还存在着一些私人数据可能没有清空,因此这些旧手机就只能放在家里落灰了。对于大多数人来说,这些旧手机都是无法被利用起来的,虽然网上有很多的利用旧手机的教程,但很多要么是很鸡肋,要么是操作难度较高,需要较强的动手能力。那么今天呢,就教大家如何低成本的快速将旧 Android 手机变成一个可远程访问的摄像头。本文...…
-
[专栏]雕虫晓技(六) 网格分页布局源码解析(下)
0. 前言pager-layoutmanager: https://github.com/GcsSloop/pager-layoutmanager在网格分页布局源码解析(上)中,主要分享了如何定义一个网格布局,正常运行的效果看起来其实和 GridLayoutManager 有些类似。这是它的下篇,主要讲解如何让它滑动时一页一页的滚动,而不是随意的滚动,除此之外,还包括一些其他相关内容,例如滚动、平滑滚动和超长距离滚动需要注意的一些细节。1. 分页对齐在开始讲解前,先看一下启用了分页对齐和未启用分页对齐的效果有...…
-
[专栏]雕虫晓技(五) 网格分页布局源码解析(上)
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客0.前言pager-layoutmanager: https://github.com/GcsSloop/pager-layoutmanager这个是我之前公开分享的一个开源库 【PagerLayoutManager(网格分页布局)】 的详细解析,在开始讲解之前,先看看它能实现的一些效果。 上面是它的应用场景之一,再看一下实现这种场景所需的代码:// 布局管理器PagerGridLayoutManager layoutMana...…
-
雕虫晓技(四) 搭建私有Maven仓库(带容灾备份)
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客0. 前言随着 Android 开发的发展,Android 开发也相对越来越简单,很多基础库只用简单的添加一行依赖就可以使用了,不用自己去手动添加,升级也只需要修改一下版本号,简单便捷。那么它是如何实现的呢?事实上,我们所依赖的这些文件,是存放在一些公开仓库中的,当我们添加这些依赖时,Gredle 会自动去仓库中查找是否存在,如果存在,就下载下来放到本地参与编译。我们最常用的一些公开库大部分是放在 jcenter 仓库中的,我...…
-
雕虫晓技(三) 通用圆角布局全解析
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客1. 前言之前,我在 GitHub 分享了一个开源库:rclayout,这个库的主要目的是快速实现 Android中 的圆角需求,例如这样的效果。分享这个库的时候只是觉得可能有用而已,但没有想到居然有了 800 多个 Star,看来有不少人像我一样,对圆角这一需求比较苦恼。圆角算是一种比较常见的需求了,最常应用于图片,因此可以找到大量的自定义圆角 ImageView,不仅如此,一些比较流行的图片加载框架也都对圆角进行了支持,像...…
-
雕虫晓技(二) 编码
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客前言对于编程,一般需要先设计,再编码,即针对某一项功能进行详细的分析后,得出具体的技术方案,然后编码进行实现,这是最理想的状态,但是现实不可能这么理想。在公司的项目中,一般不会有太充裕的时间,专一用来琢磨技术方案,再加上个人能力有限,前期分析很难具体到每一个细节中,那么在这种情况下应该如何编程呢?下面就分享几个自己使用的准则。一、功能优先程序员主要工作是写代码,最终目标则是产品,而产品的核心是其中的功能,如果功能没有完成,代码...…
-
雕虫晓技(一) 组件化
关于作者GcsSloop,一名 2.5 次元魔法师。微博 | GitHub | 博客前言本文是我工作这段时间的部分经验总结,仅从个人的角度谈一下对工作中编程的看法。今年毕业出来工作,前期需要学习和实践的东西有很多,生活的节奏也在进行调节,因此就没有太多的精力去写文章了,从而导致我的“Android自定义View”系列文章一直处于停更状态。其实并非没有时间,而是没有太多的精力投入到这上面,对于技术文章来说,如果想要写的通俗易懂,不误导读者,不仅需要对其中运用到的各个技术细节都进行考证,而且要花费大量的精力去梳理...…
-
PagerLayoutManager(分页布局)
具有分页功能的 Recyclerview 布局管理器,主打分页,可以替代部分场景下的网格布局,线性布局,以及一些简单的ViewPager,但也有一定的局限性,请选择性使用。 网格分页布局源码解析(上) 网格分页布局源码解析(下)1. 效果预览 2. 支持的特性 网格布局,设置合适的行列数可以模拟线性布局或者ViewPager。 分页效果,支持自动回调页码的变化(总页数和当前页数)。 布局方向,支持横向滚动和垂直滚动。 方向切换,支持切换滚动方向。 支持电视,支持TV上按键翻页。 内存稳定,不...…
-
RCLayout(圆角布局)
Android 通用圆角布局,快速实现圆角需求。之前做项目的时候有圆角相关需求,在网上找了很多方案都不够满意,于是自己做了一个,目前已经使用了一段时间,更新了多个版本,我遇到的问题都进行了修复,并且添加了很多方便的可配置属性,以满足不同需求。【GitHub · 源代码】效果预览 支持的特性 包裹任意组件。 设置圆角大小。 分别对每一个角设置圆角大小。 设置描边宽度。 设置描边颜色。 圆形。 支持Padding。 圆角抗锯齿。 内容可点击区域即为显示区域。 是否剪裁自身背景。主要文件 ...…
-
Encrypt(加密工具包)
Android 加密解密工具包,字符串,byte[],文件等对象的加密和解密工具集合,包含了多种加密方案,例如:编码工具(Base64Util),信息摘要工具(MD5Util、SHAUtil),对称加密工具(AESUtil、DESUtil),非对称加密工具(RSAUtil)。其中所有的工具都经过了测试,如果发现有什么问题,可以到 【GitHub · Encrypt】 提交Issues。 加密类型 摘要 相关方法 简单加密 换...…
-
安卓自定义View进阶-手势检测(GestureDetector)
Android 手势检测,主要是 GestureDetector 相关内容的用法和注意事项,本文依旧属于事件处理这一体系,部分内容会涉及到之前文章提及过的知识点,如果你没看过之前的文章,可以到 自定义 View 系列 来查看这些内容。在开发 Android 手机应用过程中,可能需要对一些手势作出响应,如:单击、双击、长按、滑动、缩放等。这些都是很常用的手势。就拿最简单的双击来说吧,假如我们需要判断一个控件是否被双击(即在较短的时间内快速的点击两次),似乎是一个很容易的任务,但仔细考虑起来,要处理的细节问题也有...…
-
安卓自定义View进阶-多点触控详解
Android 多点触控详解,在前面的几篇文章中我们大致了解了 Android 中的事件处理流程和一些简单的处理方案,本次带大家了解 Android 多点触控相关的一些知识。多点触控 ( Multitouch,也称 Multi-touch ),即同时接受屏幕上多个点的人机交互操作,多点触控是从 Android 2.0 开始引入的功能,在 Android 2.2 时对这一部分进行了重新设计。在本文开始之前,先回顾一下 MotionEvent详解 中提到过的内容: Android 将所有的事件都封装进了 Mot...…
-
Markdown实用技巧-编辑器(Typora)
本次的安利对象是一个 Markdown 编辑器,是会长1见过的最简单,最优雅的编辑器,先来看一下它的界面吧:它的界面非常简单,有多种主题可选,更重要的是它的预览界面和编辑界面是一体的,而不像其他编辑器那样是左右分开的。从上面的示例中可以看出,其输入模式支持多种,不论是手动输入语法还是使用快捷键,都非常的流畅,实时看到效果变化,除此之外 Typora 还有很多优点。Typora 的优点 预览和编辑界面一体。 强大的快捷键。 兼容常见扩展语法。 兼容 HTML (新版进行了完善)。 支持 YAML 格式...…
-
程序员练级指北
之前非常有幸收到 脉脉不得语 的邀请参加 郑州GDG1 举办的 DevFest2 活动,并上台分享了一下自己的拙见,回来之后我将自己演讲的内容整理了一下,并分享给大家,希望对一些人有帮助,关于 郑州GDG 更多的活动内容,大家可以到 GDGZhengzou 查看。另外,欢迎关注我的 GitHub 和 微博 。我在本次活动中的演讲主题是《程序员练级指北》,主要内容如何从零开始,并逐渐成长为一名合格的程序员,里面的内容是基于自身的经历和见解所书写的,并不一定适合所有人,建议选择性采纳。为了演讲不那么枯燥乏味,我...…
-
安卓自定义View进阶-特殊控件的事件处理方案
本文带大家了解 Android 特殊形状控件的事件处理方式,主要是利用了 Region 和 Matrix 的一些方法,超级实用的事件处理方案,相信看完本篇之后,任何奇葩控件的事件处理都会变得十分简单。不得不说,Android 对事件体系封装的非常棒,即便对事件体系不太了解的人,只要简单的调用方法就能使用,而且具有防呆设计,能够保证事件流的完整性和统一性,最大可能性的避免了事件处理的混乱,着实令人佩服。然而世界上并没有绝对完美的东西,当”事件处理”遇上”自定义View”,一场好戏就开演了。特殊形状控件在通常的情...…
-
Markdown实用技巧-链接和图片
Sloop 喝过半杯咖啡,涨红的脸色渐渐复了原,旁人便又问道,“ Sloop,你当真会写文章么?” Sloop 看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连半个赞也捞不到呢?” Sloop 立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是技术名词之类,一些不懂了。在这时候,众人也都哄笑起来:办公室内外充满了快活的空气。在这些时候,我可以附和着笑,老板是决不责备的。而且老板见了 Sloop,也每每这样问他,引人发笑。Sloop 自己知道不能和他们谈天,便只好向实习生说话。有一回...…
-
安卓自定义View进阶-MotionEvent详解
Android MotionEvent 详解,之前用了两篇文章 事件分发机制原理 和 事件分发机制详解 来讲解事件分发,而作为事件分发主角之一的 MotionEvent 并没有过多的说明,本文就带大家了解 MotionEvent 的相关内容,简要介绍触摸事件,主要包括 单点触控、多点触控、鼠标事件 以及 getAction() 和 getActionMasked() 的区别。Android 将所有的输入事件都放在了 MotionEvent 中,随着安卓的不断发展壮大,MotionEvent 也开始变得越来越复...…
-
Markdown实用技巧-基础语法
本文为 Markdown实用技巧 系列的基础文章,并没有不可描述的内容 (⊙ω⊙)为保证语法兼容性,本文只介绍基础语法,扩展语法等其它内容,会在后续的文章中单独介绍。注意:所有的标记符号均使用英文,中文无效。标题Markdown 支持多种标题格式。利用 = (等号)和 -(减号)可以定义一级标题和二级标题,(任何数量的 = 和 - 都有效果) : Markdown 预览 一级标题==== 一级标题 二级标题---- ...…
-
Markdown实用技巧-快速入门
本文为 Markdown实用技巧 系列的基础文章,并没有不可描述的内容 (⊙ω⊙)自从接触了 Markdown 之后,就一直用 Markdown 作为自己的主要书写工具,不论是平时做一些简单的纪录,还是用来写博客,写文档都是非常方便。你现在看到的这篇文章就是用 Markdown 进行书写的。 我最早因为 GitHub 而了解到 Markdown,当时支持 Markdown 的平台并不多,现在很多平台都已经开始支持 Markdown了,不论是老牌的 CSDN 还是比较新的 简书、掘金、DiyCode 等都支持...…
-
安卓自定义View进阶-事件分发机制详解
Android 事件分发机制详解,在上一篇文章 事件分发机制原理 中简要分析了一下事件分发机制的原理,原理是十分简单的,一句话就能总结:责任链模式,事件层层传递,直到被消费。 虽然原理简单,但是随着 Android 不断的发展,实际运用场景也越来越复杂,所以想要彻底玩转事件分发机制还需要一定技巧,本篇事件分发机制详解将带大家了解 … 你以为我接下来要讲源码?我就不按套路,所有的源码都是为了适应具体的应用场景而写的,只要能够理解运用场景,理解源码也就十分简单了。所以本篇的核心问题是:正确理解在实际场景中事件分...…
-
让脚本说话"厉害了我的哥"
前段时间发现 Mac 上一个有趣的方法可以让系统说话。例如在终端输入:say "厉害了我的哥"于是把我自己经常使用的图片压缩脚本升了一下级,人工(智能)语音提示,开启装逼新时代! 本次升级进行了平台安全判断,不会影响其它平台用户的正常使用。在 Mac 上,它说话同时输出信息,在其他平台上只会输出信息。语音提示默认开启,可以关闭语音提示,将源码中voice设置为 False 即关闭语音提示。voice = False # 是否语音提示想要调教输出内容的自己进源文件修改吧,代码量不到一百行,短小精悍,纯种 P...…
-
安卓自定义View进阶-事件分发机制原理
之前讲解了很多与View绘图相关的知识,你可以在 安卓自定义View教程目录 中查看到这些文章,如果你理解了这些文章,那么至少2D绘图部分不是难题了,大部分的需求都能满足,但是关于View还有很多知识点,例如: 让绘图更加炫酷的Paint,让View动起来的动画,与用户交互的触控事件 等一系列内容。本次就带大家简单的了解一下与交互息息相关的东西-事件分发原理。 本次魔法小火车的终点站是事件分发,请各位魔法师带好装备,准备登车启程。注意:本文中所有源码分析部分均基于 API23(Android 6.0) 版本...…
-
程序员不可不知的版权协议
前一段时间知乎上关于版权问题的讨论有不少,例如这个 新浪微博上的「知乎大神」是谁?涉嫌侵权吗?, 而且最近喜马拉雅FM也因为背景音乐版权问题导致很多栏目被下架和推迟更新,而我作为一个喜欢分享的魔法师,也遇到过一些版权相关方面的问题,刚好借此机会向大家科普一下开源协议和知识共享协议。开源协议相信很多小伙伴在开发的时候都默认遵循 不重复造轮子(偷懒) 这一原则,只要有了思路就马上在GitHub搜索一下,看看是否有人已经做了,如果已经有做好的,自然就不客气啦,拿过来修改一下就能用,不由得心中暗喜,又省了好多时间能用...…
-
安卓自定义View进阶-Matrix Camera
本篇依旧属于Matrix,主要讲解Camera,Android下有很多相机应用,其中的美颜相机更是不少,不过今天这个Camera可不是我们平时拍照的那个相机,而是graphic包下的Camera,专业给View拍照的相机,不过既然是相机,作用都是类似的,主要是将3D的内容拍扁变成2D的内容。众所周知,我们的手机屏幕是一个2D的平面,所以也没办法直接显示3D的信息,因此我们看到的所有3D效果都是3D在2D平面的投影而已,而本文中的Camera主要作用就是这个,将3D信息转换为2D平面上的投影,实际上这个类更像是...…
-
用JitPack发布开源库时附加文档和源码
很早之前写过一篇用JitPack发布Android开源库的文章,有小伙伴反馈说发布到JitPack上的开源库没有文档注释,使用起来很不方便,这是我的失误,上一篇文章只是讲解了如何使用JitPack发布开源库,最终发布的只有arr(即编译好的动态链接库),不仅没有文档注释(Javadoc),也没有源码(sources),本次就教大家如何在发布同时添加上注释和源码。由于JitPack本身就是一个自定义Maven仓库,所以与上传Maven的配置方式基本一样。配置项目的 build.gradle项目的 build.g...…
-
安卓自定义View进阶-Matrix详解
这应该是目前最详细的一篇讲解Matrix的中文文章了,在上一篇文章Matrix原理中,我们对Matrix做了一个简单的了解,偏向理论,在本文中则会详细的讲解Matrix的具体用法,以及与Matrix相关的一些实用技巧。 ⚠️ 警告:测试本文章示例之前请关闭硬件加速。Matrix方法表按照惯例,先放方法表做概览。 方法类别 相关API 摘要 基本方法 equals hashCode toString toShortStrin...…
-
ArrayList与LinkedList遍历性能比较
用实例测试ArrayList与LinkedList遍历性能。结构差别:我们常用的List有两种,ArrayList和LinkedList,虽然两者都是LIst,但由于内部存储结构的不同,使用不同的遍历方法性能却是千差万别的。 List 存储结构 特点 ArrayList 数组结构 可以根据下标直接取值。 LinkedList 链表结构 如果需要寻找某一个下标的数值必须从...…
-
安卓自定义View进阶-Matrix原理
本文内容偏向理论,和 画布操作 有重叠的部分,本文会让你更加深入的了解其中的原理。本篇的主角Matrix,是一个一直在后台默默工作的劳动模范,虽然我们所有看到View背后都有着Matrix的功劳,但我们却很少见到它,本篇我们就看看它是何方神圣吧。 由于Google已经对这一部分已经做了很好的封装,所以跳过本部分对实际开发影响并不会太大,不想深究的粗略浏览即可,下一篇中将会详细讲解Matrix的具体用法和技巧。 ⚠️ 警告:测试本文章示例之前请关闭硬件加速。Matrix简介Matrix是一个矩阵,主要功能是...…
-
安卓自定义View进阶-PathMeasure
可以看到,在经过 Path之基本操作Path之贝塞尔曲线 和 Path之完结篇 后, Path中各类方法基本上都讲完了,表格中还没有讲解到到方法就是矩阵变换了,难道本篇终于要讲矩阵了?非也,矩阵这一部分仍在后面单独讲解,本篇主要讲解 PathMeasure 这个类与 Path 的一些使用技巧。 PS:不要问我为什么不讲 PathEffect,因为这个方法在后面的Paint系列中。先放一个图镇楼,省的下面无聊的内容把你们都吓跑了Σ( ̄。 ̄ノ)ノPath & PathMeasure顾名思义,PathMe...…
-
安卓自定义View进阶-Path之完结篇
经历过前两篇 Path之基本操作 和 Path之贝塞尔曲线 的讲解,本篇终于进入Path的收尾篇,本篇结束后Path的大部分相关方法都已经讲解完了,但Path还有一些更有意思的玩法,应该会在后续的文章中出现。一.Path常用方法表 为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的重载方法要等到API21才添加上啊。宝宝此刻内心也是崩溃的。 作用 相关方法 备注 ...…
-
安卓自定义View进阶-Path之贝塞尔曲线
在上一篇文章Path之基本操作中我们了解了Path的基本使用方法,本次了解Path中非常非常非常重要的内容-贝塞尔曲线。一.Path常用方法表 为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的重载方法要等到API21才添加上啊。宝宝此刻内心也是崩溃的。 作用 相关方法 备注 移动起点 moveTo 移动下一次操作的起点位置 ...…
-
使用JitPack发布Android开源库
自从谷歌宣布不支持Eclipse之后,大批Android程序猿情愿或者不情愿的迁移到了AndroidStudio,从此过上了使用Gradle构建程序的”优越”生活。 关于Gradle的坑,就不吐槽了,我怕一会儿控制不住情绪。今天我们就谈一下Gradle的优越性。说到Gradle的优越性,其中有一点比较明显的就是依赖开源库更加方便了,基本上一两行代码就能搞定。免去了还要手动下载自己配置的痛苦。然而,这也仅仅是对使用者而言,而对于发布这些开源库的人就苦逼了,主要是上传太痛苦。目前来说,比较常见的 Android...…
-
安卓自定义View进阶-Path之基本操作
在上一篇Canvas之图片文字中我们了解了如何使用Canvas中绘制图片文字,结合前几篇文章,Canvas的基本操作已经差不多完结了,然而Canvas不仅仅具有这些基本的操作,还可以更加炫酷,本次会了解到path(路径)这个Canvas中的神器,有了这个神器,就能创造出更多炫(zhuang)酷(B)的东东了。一.Path常用方法表 为了兼容性(偷懒) 本表格中去除了部分API21(即安卓版本5.0)以上才添加的方法。 作用 相关方法 备注 ...…
-
安卓自定义View进阶-Canvas之图片文字
在上一篇文章Canvas之画布操作中我们了解了画布的一些基本操作方法,本次了解一些绘制图片文字相关的内容。如果你对前几篇文章讲述的内容熟练掌握的话,那么恭喜你,本篇结束之后,大部分的自定义View已经难不倒你了,当然了,这并不是终点,接下来还会有更加炫酷的技能。一.Canvas的常用操作速查表 操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 ...…
-
安卓自定义View进阶-Canvas之画布操作
上一篇Canvas之绘制基本图形中我们了解了如何使用Canvas绘制基本图形,本次了解一些基本的画布操作。本来想把画布操作放到后面部分的,但是发现很多图形绘制都离不开画布操作,于是先讲解一下画布的基本操作方法。一.Canvas的常用操作速查表 操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基本形状 d...…
-
安卓自定义View进阶-Canvas之绘制图形
在上一篇自定义View分类与流程中我们了解自定义View相关的基本知识,不过,这些东西依旧还是理论,并不能拿来(zhuang)用(B), 这一次我们就了解一些能(zhaung)用(B)的东西。在本篇文章中,我们先了解Canvas的基本用法,最后用一个小示例来结束本次教程。一.Canvas简介Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大。一般来说,比较基础的东西有两大特点: 1.可操作性强:由于这些是构成上层的基础,所以可操作性必然十分强大。 2.比较难用:...…
-
安卓自定义View进阶-分类与流程
本章节为什么要叫进阶篇?(虽然讲的是基础内容),因为从本篇开始,将会逐渐揭开自定义View的神秘面纱,每一篇都将比上一篇内容更加深入,利用所学的知识能够制作更加炫酷自定义View,就像在台阶上一样,每一篇都更上一层,帮助大家一步步走向人生巅峰,出任CEO,迎娶白富美。 误,是帮助大家更加了解那些炫酷的自定义View是如何制作的,达到举一反三的效果。自定义View绘制流程函数调用链(简化版)一.自定义View分类我将自定义View分为了两类(sloop个人分类法,非官方):1.自定义ViewGroup自定义Vi...…
-
安卓自定义View基础-颜色
简要介绍安卓中的颜色相关内容,包括颜色的定义,创建颜色的几种方式,以及颜色的混合模式等。一.简单介绍颜色安卓支持的颜色模式: 颜色模式 备注 ARGB8888 四通道高精度(32位) ARGB4444 四通道低精度(16位) RGB565 屏幕默认模式(16位) Alpha8 仅有透明通道(8位) PS:其中字母表示通...…
-
安卓自定义View基础-角度与弧度
安卓中角度(angle)与弧度(radian)的有关问题。一.前言1.为什么讲这个?在我们自定义View,尤其是制作一些复杂炫酷的效果的时候,实际上是将一些简单的东西通过数学上精密的计算组合到一起形成的效果。这其中可能会涉及到画布的相关操作(旋转),以及一些正余弦函数的计算等,这些内容就会用到一些角度、弧度相关的知识。2.为什么对角的描述存在角度与弧度两种单位?简单来说就是为了方便,为了精确描述一个角的大小引入了角度与弧度的概念。由于两者进制是不同的(角度是60进制,弧度是10进制),在合适的地方使用合适的单...…
-
安卓自定义View基础-坐标系
一.屏幕坐标系和数学坐标系的区别由于移动设备一般定义屏幕左上角为坐标原点,向右为x轴增大方向,向下为y轴增大方向,所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的,详情如下:(PS:其中的∠a 是对应的,注意y轴方向!)实际屏幕上的默认坐标系如下: PS: 假设其中棕色部分为手机屏幕二.View的坐标系注意:View的坐标系统是相对于父控件而言的.getTop(); //获取子View左上角距父View顶部的距离getLeft(); //获取子View左上角距父View左侧...…
-
二十多行代码画太极
一个然并卵的自定义View实例,觉得很有趣就做了一个试试,效果看起来貌似还是挺不错的,代码也非常简单。如果想系统的学习自定义View,可以参考: 安卓自定义View教程目录完成效果图技术基础这一篇内容主要设计到安卓中的2D绘图部分,主要用到的是Canvas,使用到的主要技术可以参考下面两篇文章: 安卓自定义View进阶 - Canvas之绘制图形 安卓自定义View进阶 - Canvas之画布操作绘制太极1.定义画笔由于太极图像由黑白两色构成,为了方便就定义了两个画笔,分别绘制黑色和白色。private ...…
-
在AndroidStudio中使用PlantUML(for Win)
点击下面切换平台:| Mac | Win| Unified Modeling Language (UML)又称统一建模语言或标准建模语言,用来描述 类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。是用来帮助自己理清众多类之间复杂关系的不二利器,也能帮助别人快速理解你的设计思路。那么,我们怎么在AndroidStudio中创建自己的UML类图呢?接下来我就教大家如何用正确的姿势创建UML类图。一.用正确的姿势安装panltUML插件1.File->Settings->Pl...…
-
在AndroidStudio中使用PlantUML(for Mac)
点击下面切换平台:| Mac| Win|Unified Modeling Language (UML)又称统一建模语言或标准建模语言,用来描述 类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。是用来帮助自己理清众多类之间复杂关系的不二利器,也能帮助别人快速理解你的设计思路。那么,我们怎么在AndroidStudio中创建自己的UML类图呢?接下来我就教大家如何用正确的姿势创建UML类图。一.用正确的姿势安装panltUML插件1.File->Settings->Plug...…
-
安卓自定义View教程目录
这是一个从零起步,从入门到懵逼的自定义View教程。本教程从最基础的内容讲解,并且深入到了相关的各个细节,不论你是刚入门的菜鸟,还是有一定经验的工程师相信本系列文章都会对你有所帮助。你既可以将本教程当作学习资料来学习自定义View相关的各种知识,也可以作为工具来使用,在需要的时候查询相关的知识细节。基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 - 角度弧度 安卓自定义View基础 - 颜色进阶篇 安卓自定义View进阶 - 分类和流程 安卓自定义View进阶 - Canvas之...…
-
关于
我是 GcsSloop, 一名生活在2.5次元的魔法师,我一直在致力于研究基础魔法,并且始终坚信利用这些基础魔法,可以创造出华丽而又强大的高级魔法。我尝试用很多种方式去分析这些基础魔法,并从中提炼出魔法的结晶,以方便了解这些基础魔法的妙用。最终我制作了一些魔法卷轴,上面详细记述了一些基础魔法的特性和使用诀窍,并分类整理好存放在我的魔法储藏室中。更多的魔法卷轴正在制作当中,如果你觉得这些魔法卷轴不错的话,告诉其他的小伙伴,或者鼓励一下我。为了不浪费大家的时间,我发布在这个网站上的所有文章会保持原创,并尽量保证文...…