Android development notes
-Custom view advanced reference information
GitHub 刚开源的,最近热火朝天的,它的优点:
1.) 把下拉刷新的效果做的很酷炫,用户体验好
2.) 支持所有的view及其多层嵌套的视图结构
炫酷的效果直接去看github SmartRefreshLayout github地址
RefreshLayout that support for OverScroll and better than iOS. 支持下拉刷新和上拉加载的 RefreshLayout,自带越界回弹效果,支持 RecyclerView,AbsListView,ScrollView,WebView
Ultra Pull to Refresh for Android. Support all the views. 该项目只包含下拉刷新,可以包裹任何控件,如果需要添加上拉加载,看这里
google官方,项目里面可以直接使用,但是再国内并不受欢迎
PullToRefresh是一套实现非常好的下拉刷新库,它支持: ListView ExpandableListView GridView WebView ScrollView HorizontalScrollView ViewPager 等多种常用的需要刷新的View类型,而且使用起来也十分方便。
缺点:没有加载更多,还需要直接修改
在android-Ultra-Pull-To-Refresh的基础上增加了加载更多的支持 下拉刷新支持大部分view:ListView、ScrollView、WebView等,甚至一个单独的TextView 加载更多目前支持ListView、RecyclerView、GridView、SwipeRefreshLayout 支持自定义header以及footer 增加SwipeRefreshLayout刷新方式,同样支持加载更多
缺点:嵌套时存在着滑动冲突
看名字就能知道这是一个在 actionbar 上增加下拉的效果
This component like SwipeRefreshLayout, it is more beautiful than SwipeRefreshLayout.就是比Google的漂亮,完美的虐了Google的亲儿子
创意漫天飞的下拉刷新,适合看看,估计没有APP刷新要这个飞机效果
A pull-down-to-refresh layout inspired by Lollipop overscrolled effects
material设计深入开发者的杰作
A custom SwipeRefreshLayout to support the pull-to-refresh featrue.You can custom your header view and footer view. RecyclerView,ListView,GridView,NestedScrollView,ScrollView are supported.
Yalantis公司开源出来的,动画效果是杠杠的
圆动画效果的下拉刷新
多种下拉刷新效果、上拉加载更多、可配置自定义头部广告位
这个作者做了Android与iOS的刷新控件,iOS效果更好一些
a RecyclerView that implements pullrefresh and loadingmore featrues.you can use it like a standard RecyclerView
Pull down, and execute more action!效果赞
好玩的下拉刷新控件,让我们一起来回味童年,一边下拉刷新,一边打游戏,估计过一会服务器该哭了
啤酒和水滴的下拉刷新,估计是一个爱酒之人
github上刷新加载控件很多,选择一个适合自己项目的,并且让产品满意的才是王道
操作分类 | 相关API | 备注 |
---|---|---|
绘制颜色 | drawColor, drawRGB, drawARGB | 使用单一颜色填充整个画布 |
绘制基本形状 | drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, drawArc | 依次为 点、线、矩形、圆角矩形、椭圆、圆、圆弧 |
绘制图片 | drawBitmap, drawPicture | 绘制位图和图片) |
绘制文本 | drawText, drawPosText, drawTextOnPath | 依次为 绘制文字、绘制文字时指定每个文字位置、根据路径绘制文字 |
绘制路径 | drawPath | 绘制路径,绘制贝塞尔曲线时也需要用到该函数 |
顶点操作 | drawVertices, drawBitmapMesh | 通过对顶点操作可以使图像形变,drawVertices直接对画布作用、 drawBitmapMesh只对绘制的Bitmap作用 |
画布剪裁 | clipPath, clipRect | 设置画布的显示区域 |
画布快照 | save, restore, saveLayerXxx, restoreToCount, getSaveCount | 依次为 保存当前状态、 回滚到上一次保存的状态、 保存图层状态、 会滚到指定状态、 获取保存次数 |
画布变换 | translate, scale, rotate, skew | 依次为 位移、缩放、 旋转、错切 |
Matrix(矩阵) | getMatrix, setMatrix, concat | 实际画布的位移,缩放等操作的都是图像矩阵Matrix,只不过Matrix比较难以理解和使用,故封装了一些常用的方法。 |
操作类型 | 相关API | 备注 |
---|---|---|
基础方法 | getDensity, getWidth, getHeight,getDrawFilter,isHardwareAccelerated(API 11),getMaximumBitmapWidth,getMaximumBitmapHeight,getDensity,quickReject,isOpaque,setBitmap,setDrawFilter | 使用单一颜色填充画布 |
绘制颜色 | drawColor, drawRGB, drawARGB,drawPaint | 使用单一颜色填充画布 |
绘制基本形状 | drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, drawArc | 依次为 点、线、矩形、圆角矩形、椭圆、圆、圆弧 |
绘制图片 | drawBitmap, drawPicture | 绘制位图和图片 |
绘制文本 | drawText, drawPosText, drawTextOnPath | 依次为 绘制文字、绘制文字时指定每个文字位置、根据路径绘制文字 |
绘制路径 | drawPath | 绘制路径,绘制贝塞尔曲线时也需要用到该函数 |
顶点操作 | drawVertices, drawBitmapMesh | 通过对顶点操作可以使图像形变,drawVertices直接对画布作用、 drawBitmapMesh只对绘制的Bitmap作用 |
画布剪裁 | clipPath, clipRect, clipRegion,getClipBounds | 画布剪裁相关方法 |
画布快照 | save, restore, saveLayer, saveLayerXxx, restoreToCount, getSaveCount | 依次为 保存当前状态、 回滚到上一次保存的状态、 保存图层状态、 回滚到指定状态、 获取保存次数 |
画布变换 | translate, scale, rotate, skew | 依次为 位移、缩放、 旋转、错切 |
Matrix(矩阵) | getMatrix, setMatrix, concat | 实际画布的位移,缩放等操作的都是图像矩阵Matrix,只不过Matrix比较难以理解和使用,故封装了一些常用的方法。 |
API21以上,很不爽,得吐槽
作用 | 相关API | 备注 |
---|---|---|
移动起点 | moveTo | 移动下一次操作的起点位置 |
设置终点 | setLastPoint | 重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同 |
连接直线 | lineTo | 添加上一个点到当前点之间的直线到Path |
闭合路径 | close | 连接第一个点连接到最后一个点,形成一个闭合区域 |
添加内容 | addRect, addRoundRect, addOval, addCircle, addPath, addArc, arcTo | 添加(矩形, 圆角矩形, 椭圆, 圆, 路径, 圆弧) 到当前Path (注意addArc和arcTo的区别) |
是否为空 | isEmpty | 判断Path是否为空 |
是否为矩形 | isRect | 判断path是否是一个矩形 |
替换路径 | set | 用新的路径替换到当前路径所有内容 |
偏移路径 | offset | 对当前路径之前的操作进行偏移(不会影响之后的操作) |
贝塞尔曲线 | quadTo, cubicTo | 分别为二次和三次贝塞尔曲线的方法 |
rXxx方法 | rMoveTo, rLineTo, rQuadTo, rCubicTo | 不带r的方法是基于原点的坐标系(偏移量), rXxx方法是基于当前点坐标系(偏移量) |
填充模式 | setFillType, getFillType, isInverseFillType, toggleInverseFillType | 设置,获取,判断和切换填充模式 |
提示方法 | incReserve | 提示Path还有多少个点等待加入**(这个方法貌似会让Path优化存储结构)** |
布尔操作(API19) | op | 对两个Path进行布尔运算(即取交集、并集等操作) |
计算边界 | computeBounds | 计算Path的边界 |
重置路径 | reset, rewind | 清除Path中的内容 reset不保留内部数据结构,但会保留FillType. rewind会保留内部的数据结构,但不保留FillType |
矩阵操作 | transform | 矩阵变换 |
方法类别 | 相关API | 备注 |
---|---|---|
基本方法 | equals hashCode toString toShortString | 比较、 获取哈希值、 转换为字符串 |
数值操作 | set reset setValues getValues | 设置、 重置、 设置数值、 获取数值 |
数值计算 | mapPoints mapRadius mapRect mapVectors | 计算变换后的数值 |
设置(set) | setConcat setRotate setScale setSkew setTranslate | 设置变换 |
前乘(pre) | preConcat preRotate preScale preSkew preTranslate | 前乘变换 |
后乘(post) | postConcat postRotate postScale postSkew postTranslate | 后乘变换 |
特殊方法 | setPolyToPoly setRectToRect rectStaysRect setSinCos | 一些特殊操作 |
矩阵相关 | invert isAffine(API21) isIdentity | 求逆矩阵、 是否为仿射矩阵、 是否为单位矩阵 ... |
表格中演示动画均来自维基百科
贝塞尔曲线 | 对应的方法 | 演示动画 |
---|---|---|
一阶曲线 (线性曲线) |
lineTo | |
二阶曲线 | quadTo | |
三阶曲线 | cubicTo | |
四阶曲线 | 无 |
先好好的理解一下绘制流程 公共技术点之 View 绘制流程
-
Basic Article
-
Advanced Article
- Android custom View advanced - Classification and Process
- Android custom View advanced - Draw basic graphics
- Android custom View advanced - Canvas Operation
- Android custom View advanced - Picture Words
- Android custom View advanced - Path basic operation
- Android custom View advanced - Bessel curve
- Android custom View advanced - Final Path
- Android custom View advanced - Path Figure(PathMeasure)
- Android custom View advanced - Matrix Principle
- Android custom View advanced - Matrix
- Android custom View advanced - Matrix Camera
- Android custom View advanced - Principle of event distribution mechanism
- Android custom View advanced - The event distribution mechanism is detailed
- Android custom View advanced - MotionEvent
- Android custom View advanced - Special shape control event handling scheme
- Android custom View advanced - Multi-touch detailed solution
- Android custom View advanced - Signal detection(GestureDetector)
- 自定义控件其实很简单1/12
- 自定义控件其实很简单1/6
- 自定义控件其实很简单1/4
- 自定义控件其实很简单1/3
- 自定义控件其实很简单5/12
- 自定义控件其实很简单1/2
- 自定义控件其实很简单7/12
- 自定义控件其实很简单2/3
- 自定义控件其实很简单3/4
- Android绘图机制(一)——自定义View的基础属性和方法
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件
- Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美
- Canvas类的最全面详解 - 自定义View应用系列
- Path类的最全面详解 - 自定义View应用系列
- 自定义View基础 - 最易懂的自定义View原理系列(1)
- 自定义View Measure过程 - 最易懂的自定义View原理系列(2)
- 自定义View Layout过程 - 最易懂的自定义View原理系列(3)
- 自定义View Draw过程- 最易懂的自定义View原理系列(4)
- 手把手教你写一个完整的自定义View
- 最易懂的自定义View---自定义view讲解集合
还是先来理解事件传递机制公共技术点之 View 事件传递
- Carson_Ho Android事件分发机制详解:史上最全面、最易懂
- Kelin 图解 Android 事件分发机制
- milter 可能是讲解Android事件分发最好的文章
- Idtk 更简单的学习Android事件分发
- 希尔瓦娜斯女神 Android View事件机制 21问21答
把动画基础了解好来,差不多就出师了公共技术点之 Android 动画基础
教你步步为营掌握自定义View 自定义View,有这一篇就够了
-
NumberProgressBar(代码家) 这个项目可以熟练掌握如何控制view在界面中的位子
-
SmallChart 项目包括折线图、曲线图(可填充)、柱状图、扇形图、雷达图的绘制,让你熟练使用draw()相关类。
-
CircleImageView 一个圆形的ImageView
-
PhotoView 对ImageView支持各种手势操作,缩放、移动、旋转...熟练掌握手势操作。
-
MPAndroidChart MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活。MPAndroidChart同样拥有常用的图表类型:线型图、饼图、柱状图和散点图。
-
Side-Menu.Android 分类侧滑菜单,吊炸天的效果
-
WilliamChart 绘制图表的库,支持LineChartView、BarChartView和StackBarChartView三中图表类型
-
circular-progress-button 带进度显示的Button,让操作更炫酷
-
Context-Menu.Android 可以方便快速集成漂亮带有动画效果的上下文菜单
-
ToggleButton 状态切换的 Button,类似 iOS,用 View 实现
-
InstaMaterial Instagram的一组Material 风格的概念设计
-
sweet-alert-dialog 一个带动画效果的自定义对话框样式
*开源中国
*安卓巴士