Android自定义控件入门到精通
文章平均质量分 88
Android自定义控件入门到精通
一鱼浅游
这个作者很懒,什么都没留下…
展开
-
《Android自定义控件入门到精通》--文章目录
Android自定义控件入门到精通自定义控件的流程(扫盲)一、基础绘图Point点Line线几何图形Path路径Region区域Text文字Paint画笔Paint基础知识点Paint.setPathEffectPaint.setShaderPaint.setXfermodePaint.setColorFilterCanvas画布二、绘图、测量、布局流程View树的绘制流程View树的测量流程View树的布局流程三、动画帧动画FrameAnimati原创 2021-06-24 10:37:13 · 634 阅读 · 0 评论 -
Android自定义控件入门到精通--自定义控件的流程(扫盲)
文章目录自定义控件的流程步骤一:继承View或ViewGroup步骤二:构造函数步骤三:定义自定义属性步骤四:xml布局引用MyView控件步骤五:自定义属性的获取步骤六:自定义View尺寸测量步骤七:自定义View布局步骤八:自定义View内容绘制自定义控件的流程自定义View如何创建,如何引用,如何自定义属性,如何测量,如何布局,如何绘制内容?这篇扫个盲,讲下自定义控件的流程:步骤一:继承View或ViewGroup//继承至View,用于自身内容的绘制public class MyView原创 2021-06-23 10:21:09 · 563 阅读 · 1 评论 -
Android自定义控件入门到精通--Point(点)
文章目录Point(点)drawPoint(float x, float y,Paint paint)drawPoints(float[] pts,Paint paint)drawPoints(float[] pts, int offset, int count,Paint paint)Android自定义View的实现需要继承View,然后重载onDraw方法去绘制自己的东西public class PointView extends View { private Paint mPaint;原创 2021-06-22 15:38:14 · 1719 阅读 · 0 评论 -
Android自定义控件入门到精通--Line线
文章目录LinedrawLine(float startX, float startY, float stopX, float stopY, Paint paint)drawLines(float[] pts, Paint paint)drawLines(float[] pts, int offset, int count, Paint paint)LineLine的绘制也有三个方法drawLine(float startX, float startY, float stopX, float stop原创 2021-06-22 15:42:30 · 516 阅读 · 0 评论 -
Android自定义控件入门到精通--几何图形绘制
文章目录几何图形绘制矩形圆角矩形椭圆圆弧几何图形绘制矩形drawRect(float left, float top, float right, float bottom, Paint paint)drawRect(Rect r, Paint paint)drawRect(RectF rect, Paint paint)矩形由左上右下四个值决定,这三个方法其实都差不多,没啥大的区别,我们就挑一个示范下 private void init() { mPaint = ne原创 2021-06-22 15:49:46 · 294 阅读 · 1 评论 -
Android自定义控件入门到精通--Path路径
文章目录Path三角形几何图形arcTo(RectF oval, float startAngle, float sweepAngle,boolean forceMoveTo)贝塞尔曲线二阶贝塞尔曲线:quadTo(float x1, float y1, float x2, float y2)三阶贝塞尔曲线:cubicTo(float x1, float y1, float x2, float y2,float x3, float y3)Path在几何图形的绘制中,我们发现并没有画三角形等多边形的函数,原创 2021-06-22 15:59:44 · 512 阅读 · 1 评论 -
Android自定义控件入门到精通--Region区域
文章目录RegionRegion.set()Region.get()getBounds()Region.getBoundaryPath()Region.op()op(Region ,Op)op(Region,Region,Op)Region的其它方法RegionRegion(区域),跟Rect(矩形)类似也有很大不同,一个Region是由一个或多个Rect组成Region构造:Region() 构造一个空的区域Region(Region) 根据现有的区域构造新的区域,等于复制一个一样的Regi原创 2021-06-22 16:04:47 · 1642 阅读 · 1 评论 -
Android自定义控件入门到精通--Text文本
文章目录TextdrawText(String text, float x, float y, Paint paint)Paint.setTextAlign(Paint.Align)Align.LEFTAlign.CENTERAlign.RIGHTdrawTextOnPath(String text, Path path, float hOffset,float vOffset, Paint paint)drawPosText (char[] text, int index, int count, floa原创 2021-06-22 16:09:47 · 676 阅读 · 0 评论 -
Android自定义控件入门到精通--Paint基础知识
文章目录Paint基础知识常用基础函数Paint.setStylePaint.setStrokeCapPaint.setTypefacePaint.breakTextPaint.setStrokeJoinPaint.setMaskFilterBlurMaskFilter硬件加速EmbossMaskFilterPaint.setShadowLayerPaint基础知识paint画笔,跟我们Ps中的画笔有点类似,比如Ps中的画笔工具和图案图章工具。常用基础函数我们先来系统的了解下Paint的一些基础的函原创 2021-06-22 16:14:09 · 587 阅读 · 0 评论 -
Android自定义控件入门到精通--PathEffect路径效果
文章目录PathEffectDashPathEffectPathDashPathEffectCornerPathEffectSumPathEffectComposePathEffectDiscretePathEffectPathEffect路径效果,有六个实现类。DashPathEffectDashPathEffect(float intervals[], float phase) 虚线路径效果intervals:描述虚线效果的数组,按这个数组描述循环绘制效果phase:开始绘制的偏移量原创 2021-06-22 16:18:17 · 628 阅读 · 0 评论 -
Android自定义控件入门到精通--Shader
文章目录ShaderBitmapShaderTileMode.CLAMPTileMode.REPEATTileMode.MIRRORLinearGradientLinearGradient(x0,y0,x1,y1,int color0, int color1, TileMode tile)LinearGradient(x0,y0,x1,y1,int[] colors, float[] positions, TileMode tile)RadialGradientSweepGradientComposeSha原创 2021-06-22 16:26:10 · 574 阅读 · 1 评论 -
Android自定义控件入门到精通--Xfermode
文章目录XfermodePorterDuff.Mode示例一:轨迹截图示例二:绘画板示例三:图片上色动画(进度演示?)Xfermode的脏区及解决办法示例四:刮刮卡效果XfermodeXfermode在Android高版本中只保留了一个实现类PorterDuffXfermode,在Android24及以下低版本中,你还可以看到另外两个实现类AvoidXfermode,PixelXorXfermode,高版本已移除了,这里就不展开讲了,其中AvoidXfermode可以用于做选区和选区填充,非常强大,但原创 2021-06-22 16:31:41 · 591 阅读 · 0 评论 -
Android自定义控件入门到精通--ColorFilter
文章目录ColorFilterPorterDuffColorFilterLightingColorFilterColorMatrixColorFilter颜色矩阵公式过滤颜色反色去色颜色互换色相调整ColorFilterBlendModeColorFilter是Api29之后加入的,目前不作研究!PorterDuffColorFilterPorterDuffColorFilter(int color,PorterDuff.Mode mode)color : SRC(源)mode :混合模式原创 2021-06-23 09:54:33 · 1337 阅读 · 0 评论 -
Android自定义控件入门到精通--Canvas(画布)
文章目录Canvas(画布)translate (平移)rotate(旋转)scale(缩放)skew(斜切)clip(裁剪)Canvas 状态的保存与恢复Canvas 多画布Canvas(画布)画布:在Ps中,画布就是你的操作空间,画布之上有图层图层:“我是谁”分别写在三个透明图层上,由于所有图层都是透明的,所以上层图层不会遮挡底下两层的内容,我们看见的还是全部的文字我们还可以对选中的图层进行平移,缩放,旋转,斜切,还可以对整个画布进行裁剪在Andrond的Canvas中,Canvas表原创 2021-06-23 09:54:16 · 923 阅读 · 1 评论 -
Android自定义控件入门到精通--View树的绘制流程
文章目录View树的绘制流程View树的绘制流程测量、布局、绘制是自定义控件的三大流程自定义控件分为两种:一种为继承至View,我们称之为自定义View一种为继承至ViewGroup,我们称之为自定义ViewGroup(ViewGroup也是继承至View)测量和布局我们先放一放,前面我们学了自定义View的绘制,这篇我们来了解下View树的绘制流程View的绘图有两个相关的方法()://View.javaprotected void dispatchDraw(Canvas canva原创 2021-06-23 09:52:23 · 236 阅读 · 0 评论 -
Android自定义控件入门到精通--View树的测量流程
文章目录View树的测量流程View树的测量流程小故事:公司计划搞团建,大狗,二狗,三狗是三个部门的领导,他们跑到财务室去跟财务妹子要经费。财务妹子:你们各自要多少经费,提交申请给我就好了大狗比较实诚,提交了500块的预算申请,财务妹子二话不说,直接给了大狗500块,大狗拿着500块就跟部门的人一起去吃酸辣粉了。二狗又精又胆小,即怕要多了公司不高兴,又怕要少了底下的兄弟们不高兴。于是二狗跟财务妹子提了申请,写明:“按公司预算给经费!”,又是财务妹子也不兜着,把老板交代的单部门预算5000元都给了原创 2021-06-23 09:52:42 · 307 阅读 · 1 评论 -
Android自定义控件入门到精通--View树的布局
文章目录View树的布局LayoutParams流式标签布局View树的布局经过前面View树的绘制流程和View树的测量流程的学习,相信大家自己分析View树的布局流程已经没有什么难度了ViewRootImpl.java//ViewRootImpl.javaprivate void performTraversals() { //测量流程 measureHierarchy(...)-->performMeasure(...); //布局流程 performLayo原创 2021-06-23 09:52:57 · 241 阅读 · 0 评论 -
Android自定义控件入门到精通--帧动画
文章目录帧动画使用方法一:xml使用方法二:java动画分为三种帧动画(FrameAnimation/DrawableAnimation)补间动画(TweenAnimation/ViewAnimation)属性动画(PropertyAnimation)帧动画类似我们常见的gif动画(由一帧一帧的图片循环播放达到动画效果)帧动画优点是使用简单又能实现比较复杂的动画效果使用方法一:xml步骤一:准备图片素材步骤二:在drawable目录下写动画xml文件(anima_discove.原创 2021-06-23 09:53:12 · 234 阅读 · 0 评论 -
Android自定义控件入门到精通--补间动画
文章目录补间动画使用方法一:xmltranslate(平移动画)rotate(旋转动画)scale(缩放动画)alpha(透明度动画)set(组合动画)属性及含义实现方法二:java代码补间动画补间动画也称TweenAnimation/ViewAnimation,补间动画为View的两种状态间的过度动画,但只是视觉上的改变,并没有真正改变View本身的属性。补间动画有以下几种TranslateAnimation(平移动画)RotateAnimation(旋转动画)ScaleAnimation(原创 2021-06-23 09:53:25 · 429 阅读 · 1 评论 -
Android自定义控件入门到精通--Interpolation插值器
文章目录Interpolation插值器LinearInterpolatorAccelerateInterpolatorAccelerateDecelerateInterpolatorDecelerateInterpolatorAnticipateInterpolatorPathInterpolatorBounceInterpolatorOvershootInterpolatorAnticipateOvershootInterpolatorCycleInterpolatorLookupTableInterp原创 2021-06-23 09:53:40 · 778 阅读 · 1 评论 -
Android自定义控件入门到精通--属性动画
文章目录属性动画ValueAnimatorValueAnimator.ofIntValueAnimator.ofArgb:EvaluatorValueAnimator.ofObjectValueAnimator.ofPropertyValuesHolderObjectAnimatorAnimatorSetanimatorSet.playTogether()animatorSet.playSequentially()animatorSet.play().with().before().after()属性动画原创 2021-06-23 09:53:55 · 491 阅读 · 0 评论 -
Anroid事件分发机制
文章目录事件分发机制Event事件案例:移动ViewActivity-onTouchEvent实现自定义View-onTouchEvent实现自定义ViewGroup-onTouchEvent实现View对象.setOnTouchListener(OnTouchListener l)实现事件的分发机制源码分析Activity事件处理ViewGroup事件处理View事件处理事件分发总结dispatchTouchEventonInterceptTouchEventonTouchEvent事件分发机制Eve原创 2021-06-28 17:02:41 · 540 阅读 · 0 评论