Android 浅谈SurfaceView 2020-03-01 店长 Android自定义View 收藏 评论 SurfaceView简介 SurfaceView在开发中可能不常用到,但是在游戏、视频或者复杂的交互特效中却独显优势了。可能有些开发者说,还有GLSurfaceView或者TextureView,这两个View不在本文探讨范围内。 SurfaceView也是继承自View,不过现在高版本上面查看源码可能是MockView,如果熟悉单元测试,可以看到这种命名方式就是测试中常用的命名方式,可以在 [...] 阅读更多 »
Android 正弦和贝塞尔曲线简单应用 2020-02-15 店长 Android自定义View 收藏 评论 本文主要就介绍如何使用正余弦或者贝塞尔曲线实现一个类似水波纹加载的动效。如果有看前面的文章,可以知道现在使用贝塞尔曲线相对比较容易,因为Android的Path中就有贝塞尔曲线的API,可以直接使用。但是,正余弦在Path中确实没有什么API供开发者直接使用,那么只能另寻其它方式了。 先上图,俗话说一图顶千言。 正弦曲线 在Path的API中有lineTo(x,y)方法,使用Math [...] 阅读更多 »
Android 浅谈贝塞尔曲线 2020-02-08 店长 Android自定义View 收藏 评论 本文也是自定义控件相关的内容,主要介绍贝塞尔曲线在Android开发中的应用。 首先通过理论介绍一下贝塞尔曲线的基本实现原理,然后借助于图片演示了一下贝塞尔曲线的实现方式。文中更多介绍的是关于二阶和三阶贝塞尔曲线的内容,如果想了解更高阶贝塞尔曲线内容,可以上网查看了解更多。 Android中提供了二阶和三阶贝塞尔曲线的API,借助于这些API可以实现许多炫酷的交互,比如加入购物车、水波纹、点赞 [...] 阅读更多 »
Android Path和PathMeasure 2020-02-02 店长 Android自定义View 收藏 评论 本文继续介绍自定义控件的相关内容,Path在一些高级特效中使用相当广泛,如一些加载特效、刮刮卡和前段时间的比较火的撕衣应用。 Path一般结合xfermode或者贝塞尔曲线做一些很炫的交互效果,有关贝塞尔曲线的内容这里暂不涉及,本文主要介绍Path的一些简单基础用法,相关的类还包括PathMeasure,需要掌握PathMeasure的两个方法:getLength()、getSegment。 [...] 阅读更多 »
Android Canvas用法之save、restore和saveLayer 2020-01-30 店长 Android自定义View 收藏 评论 本文跟上一篇博文类似,也是介绍自定义控件的相关内容,主要是onDraw()中常使用的方法。 主要涉及三个方法:save()、restore()、saveLayer(),当然了也会涉及到其它的方法,如restoreToCout()、setXfermode()。 重点需要掌握如何使用save()、restore()、saveLayer(),文中会通过示例代码以及运行后截图来对比展示,如果使用sav [...] 阅读更多 »
Android画笔Paint和FontMetrics 2020-01-05 店长 Android自定义View 收藏 评论 有关自定义控件的许多内容,一直都想抽时间梳理一下,当然了梳理的内容不会很深,都是一些比较常用的类或者方法,主要是为了后续用到时方便查阅与参考。 本文主要整理的是Paint的一些基本使用方法和技巧,其中涉及到文字绘制的,涉及绘制文字时需要知道基线的坐标与View的坐标参考点是不同的,需要知道坐标之间的转换方式。另外需要知道有哪些方式可以测量已经绘制的文字所占的宽度,包括可以精确测量的方式,也有相对 [...] 阅读更多 »
自定义ProgressDialog最佳实践 2017-01-15 店长 Android自定义View 收藏 评论 ProgressDialog简介 ProgressDialog也是在很多App中比较常见一个控件,大多数是使用它作为加载中的状态展示,也有部分App使用它作为升级过程中的一个弹框,可以同步显示下载进度。为什么需要自定义ProgressDialog,因为不同机型不同版本的手机差异性很大而且系统原生的很不美观。这里的ProgressDialog跟上一篇文章自定义AlertDialog最佳实践类似,使 [...] 阅读更多 »
自定义AlertDialog最佳实践 2017-01-11 店长 Android自定义View 收藏 评论 AlertDialog是每一个App所必须的控件,在Android4.0之前不可否认官方正版的Dialog很不美观,但是Android4.0之后的holo风格的Dialog已经可以上的了厅堂了,再后来的Material Design设计风格的拟物扁平化Dialog已经是给人耳目一新的感觉。虽然官方UI标准愈加完善,可是部分UI设计师依然是按照苹果iOS的规范设计App的UI,完全忽略不同平台UI包 [...] 阅读更多 »
Android 浅谈View的测量measure 2016-10-09 店长 Android自定义View 收藏 评论 本篇文章算是对Android自定义控件学习笔记三的补充和完善。一般一个View的呈现基本需要三大流程measure、layout、draw,measure作为View的三大工作流程之一,也是三大流程中第一个流程,主要用于确定View的测量宽/高,该流程的执行情况将直接影响后续的两个流程,可谓是重中之重,不可不察也。其余的两个流程layout用于确定View的最终宽高和四个顶点的位置,Draw则将V [...] 阅读更多 »
ViewDragHelper应用之仿QQ侧滑删除控件 2016-01-31 店长 Android自定义View 收藏 评论 概要 QQ消息列表侧滑删除在网上也有很多相关代码介绍,介绍的实现方式也各不一样,本文是将侧滑删除自定义为一个控件,这样使用就可以不仅仅限制在ListView中了。如果想理解本文逻辑首先得对ViewDragHelper有一定的了解,可以参考一下ViewDragHelper解析,在文章中对ViewDragHelper进行了简单的介绍并配有示例demo,通过本文也可以加深对ViewDragHelp [...] 阅读更多 »
Android QQ空间和新浪微博中视差视图实现 2015-12-13 店长 Android自定义View 收藏 评论 概要 在QQ空间和新浪微博中都有一个头部的视差滚动视图,就是一个下拉刷新的特效,看上去功能不复杂,实际上实现也不复杂,就是在ListView向下拖拽的过程中动态更改一下头部ImageView的高度就可以了。本来很早之前就用代码写过一次这种效果,是在一个视频教程中看到的,这个周末想使用时发现有些陌生了,所以这次就记录下来方面以后用到时可以随时查看。 视差视图这次例子我们就是用List [...] 阅读更多 »
Android自定义控件学习笔记四 2015-11-22 店长 Android自定义View 收藏 评论 概要 本篇主要针对上一篇中onMeasure方法应用做一个简单的介绍,自定义一个按一定比例缩放的ImageView以实现图片的等比例缩放,当然了在实际开发中可以自定义一个按一定比例显示的布局视图。 上一篇中Android自定义控件学习笔记三中已经对onMeasure相关知识有了一定的了解,那么这篇笔记就通过上一篇知识点来做一个简单的应用,虽说简单可是用处也很大,在实际开发中我们常常 [...] 阅读更多 »
Android自定义控件学习笔记三 2015-11-17 店长 Android自定义View 收藏 评论 概要 本文主要介绍自定义控件中常用的onMeasure方法,简要分析了一下measure和onMeasure方法的递归调用过程,对View中MeasureSpec内部类进行了简单的概述,最后简单说明了一下getHeight与getMeasuredHeight方法的区别。 Android自定义控件学习笔记一和Android自定义控件学习笔记二写的时间比较早一些,今天又补上一篇,也许 [...] 阅读更多 »
Android自定义控件学习笔记二 2015-09-05 店长 Android自定义View 收藏 评论 本文主要涉及的是继承View方式的自定义控件,并用这种方式来仿写绘制微信通讯录侧栏快速定位View。 如果我们继承View自定义一个控件,必须得做两件事,其一继承View构造方法,其二重写onDraw方法。 核心方法概要 重写View构造方法在上一篇笔记中以及介绍过了,也可以添加除了系统属性之外的其它自定义属性等等,可以参考Android自定义控件学习笔记一。这里重点讲一 [...] 阅读更多 »
Android自定义控件学习笔记一 2015-08-23 店长 Android自定义View 收藏 评论 概述 本篇文章主要是介绍用系统控件重新组合并添加上自定义属性,来实现特定效果,重点讲述自定义属性的使用。在Android系统中,自定义控件就是自定义一个类来继承View或这继承ViewGroup或者用系统控件重新组合来实现我们想要的效果。 既然说到自定义控件,那么我们为什么要使用自定义控件呢,大概原因有以下两个方面吧: 同样的控件在不同的版本上差异太大,最明显的dia [...] 阅读更多 »