
Android 自定义 View
Lerendan
这个作者很懒,什么都没留下…
展开
-
Android 手把手进阶自定义View(十七)- 自定义 ViewPager
一、基础准备在上一篇Android 手把手进阶自定义View(十六)- 滑动冲突中最后的实例其实我们已经实现了一个简单的自定义 ViewPager,只不过上一篇我们的重点是滑动冲突,所以没具体解释 ViewPager 里的一些触摸反馈代码。这篇文章我们来学习一下。二、自定义 ViewPager...原创 2020-04-06 23:02:23 · 217 阅读 · 0 评论 -
Android 手把手进阶自定义View(十六)- 滑动冲突
一、前言在界面中,只要内外两层同时可以滑动就会产生滑动冲突。而滑动冲突的解决都是由固定的套路的,下面我们来学习一下。二、常见的滑动冲突场景常见的滑动冲突场景可以简单的分为如下三种:场景1、外部滑动方向与内部滑动方向不一致比如 ViewPager 中有多个 Fragment,而 Fragment 往往有一个 ListView。这时 ViewPager 可以左右滑动,而 Li...原创 2020-04-06 18:52:42 · 346 阅读 · 0 评论 -
Android 手把手进阶自定义View(十五)- 多指触摸
一、基础准备1.1、MotionEvent.getActionMasked()常见值:ACTION_DOWN:第一个手指按下(之前没有任何手指触摸到 View) ACTION_UP:最后一个手指抬起(抬起之后没有任何手指触摸到 View,这个手指未必是 ACTION_DOWN 的那个手指) ACTION_MOVE:有手指发生移动 ACTION_POINTER_DOWN:额外手指按...原创 2020-04-03 17:11:28 · 2302 阅读 · 0 评论 -
Android 手把手进阶自定义View(十四)- ScalableImageView
一、基础准备Android 手把手进阶自定义View(十)- 事件分发机制解析Android 手把手进阶自定义View(十一)- 手势检测 GestureDetectorAndroid 手把手进阶自定义View(十二)- 缩放手势检测 ScaleGestureDetectorAndroid 手把手进阶自定义View(十三)- 滚动计算 Scroller、OverScroller经过前四篇的...原创 2020-04-02 20:10:32 · 476 阅读 · 0 评论 -
Android 手把手进阶自定义View(十三)- 滚动速度 VelocityTracker 及滚动计算 Scroller、OverScroller
一、前言Scroller 和 OverScroller,这两个是 Android UI 框架下实现滚动效果的最关键的类,ScrollView 内部的实现也是使用的 OverScroller,所以熟练的使用这两个类的相关API,可以让我们满足大部分的滚动开发需求。二、Scroller在 View 类里面,有两个和滚动相关的类 scrollTo() 和 scrollBy。这两个方法可...原创 2020-04-01 17:21:38 · 1503 阅读 · 0 评论 -
Android 手把手进阶自定义View(十二)- 缩放手势检测 ScaleGestureDetector
一、前言Android 缩放手势检测 ScaleGestureDetector,在大多数的情况下缩放手势都不是单独存在的,需要配合其它的手势来使用,如果是用在自定义的控件上,则需要配合 Matrix 相关内容使用起来可能会更加方便。缩放手势最常见于以下的一些应用场景中,例如:图片浏览,网页缩放、地图等。二、缩放手势检测缩放手势检测同样是官方提供的手势检测工具,它的使用方式的 Ge...原创 2020-04-01 15:32:40 · 1547 阅读 · 0 评论 -
Android 手把手进阶自定义View(十一)- 手势检测 GestureDetector
一、前言二、手势检测三、滑动手势检测原创 2020-03-31 23:42:14 · 779 阅读 · 0 评论 -
Android 手把手进阶自定义View(十)- 事件分发机制解析
一、前言Android 事件分发机制是 Android 开发者必须要了解的,同时它也是解决滑动冲突的基础,所以我们今天详细学习下相关知识点二、基础概念1、事件类型当用户触摸屏幕后产生一系列事件中,典型的事件类型如下:事件类型 具体动作 MotionEvent.ACTION_DOWN 按下 View(所有事件的开始) MotionEvent.ACTION_UP...原创 2019-02-01 15:07:22 · 347 阅读 · 0 评论 -
Android 手把手进阶自定义View(九)- 自动换行 ViewGroup
一、基础准备《Android 手把手进阶自定义View(六)- measure 测量过程解析》 《Android 手把手进阶自定义View(七)- layout 布局过程解析》 《Android 手把手进阶自定义View(八)- draw 绘制过程解析》前三篇我们学习了 View 的三大流程:测量、布局、绘制,本篇我们来做一个自动换行的 ViewGroup。二、自动换行的 Vi...原创 2020-03-29 13:51:11 · 542 阅读 · 0 评论 -
Android 手把手进阶自定义View(五)- MaterialEditText
一、前言本篇我们来学习拓展已有的 View,比如继承EditText 来对它进行拓展。要实现的效果如下:二、MaterialEditText分析一下,首先第一步,预留浮动文字的距离。可以在初始化时通过 setPadding 来设置。第二步,绘制浮动文字,文字可以通过设置的 hint 值获取。第三步,通过动画来实现浮动文字的透明度、垂直偏移的变化。完整代码如下:...原创 2020-03-27 16:58:48 · 670 阅读 · 0 评论 -
Android 手把手进阶自定义View(四)- 三维变换
一、基础准备本篇我们来学习一下自定义 View 中使用 Camera 来做三维变换,先看一下自定义 View 1-4 Canvas 对绘制的辅助 clipXXX() 和 Matrix二、Camera 介绍先来看看适用 Camera 时的三维坐标系结构:camera 相当于在 z 轴有个照相机(下图中黄色圆圈就代表 camera),对视图进行投影,效果如下:使用...原创 2020-03-25 10:49:51 · 734 阅读 · 0 评论 -
Android 手把手进阶自定义View(二)- 文字
一、基础准备自定义 View 1-3 drawText() 文字的绘制二、圆环进度条,文字横向、纵向居中如上图所示,上图的绘制可以分为三步:底圆环、进度条、中间文字。圆环的绘制可以直接把 Paint 的边加粗然后绘制一个圆框即可即可:Paint.setStyle(Paint.Style.STROKE)Paint.setStrokeWidth()进度条的的绘...原创 2020-03-22 21:29:59 · 356 阅读 · 0 评论 -
Android 手把手进阶自定义View(一)- 基础绘制
一、基础准备1.1 自定义View相关API首先来学一下自定义 View 基本的 API,推荐看看下面这两篇博客,介绍得非常详细:HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础HenCoder Android 开发进阶: 自定义 View 1-2 Paint 详解1.2 三角函数相关知识三角函数属于基本数学的范畴,这里我们重新回顾三角函...原创 2020-03-21 14:47:43 · 602 阅读 · 0 评论 -
Android 手把手进阶自定义View(三)- 属性动画
一、前言Android 开发中,总是需要一些动画来优化用户的交互体验,提高用户满意度。因此,Google 为我们提供了一些用于处理动画效果的动画框架。二、属性动画2.1 ObjectAnimator 的简单使用ObjectAnimator 是属性动画中,最简单也最常用的一个对象。前文提到的使 ImageVIew 向右平移 200 像素的动画效果,使用属性动画只需要很简单的几句...原创 2020-02-04 16:39:31 · 419 阅读 · 0 评论 -
Android 手把手进阶自定义View(八)- draw 绘制过程解析
一、前言Android 里面的绘制都是按顺序的,先绘制的内容会被后绘制的盖住。比如你在重叠的位置先画圆再画方,和先画方再画圆所呈现出来的结果肯定是不同的,如下图:而在实际的项目中,绘制内容相互遮盖的情况是很普遍的,那么怎么实现自己需要的遮盖关系,我们下面来学习以下。二、draw 过程解析一个完整的绘制过程会依次绘制以下几个内容:draw() 是绘制过程的总调度方...原创 2020-01-05 20:33:59 · 1247 阅读 · 0 评论 -
Android 手把手进阶自定义View(七)- layout 布局过程解析
一、layout 过程类似 measure 过程,layout 过程根据 View 的类型也分为 2 种情况:1.1 View 的 layout 过程layout()的作用是 ViewGroup 用来确定子元素的位置,当 ViewGroup 的位置被确定后,它在 onLayout 中会遍历所有的子元素并调用其 layout() 方法,在 layout() 方法中 onLayou...原创 2020-01-05 14:26:31 · 962 阅读 · 0 评论 -
Android 手把手进阶自定义View(六)- measure 测量过程解析
一、前言在 Android 知识体系中,View 是很重要的角色,因此 View 的工作原理是非常有必要去了解的,本章我们讲解 View 的工作原理中的第一个环节 :measure。二、MeasureSpec2.1MeasureSpec 简介MeasureSpec 代表测量规格,是一个 32 位的 int 值,高 2 位代表 SpecMode(测量模式),低 30 位代表 ...原创 2020-01-04 18:34:35 · 831 阅读 · 0 评论