![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android-自定义View
文章平均质量分 59
小海编码日记
Android开发工程师,先后从事ROM定制,App架构设计,产品需求研发等工作
展开
-
Android自定义View之View详解(1)
在Android中View的绘制过程是父级驱动制,Layout文件的根节点驱动其所持有的子结点进行测量并绘制,如果子View中有部分是ViewGroup,则该ViewGroup驱动自己的子View绘制测量,以此类推,整个Android系统是事件驱动型的。View的生命周期: 如下图所示,一个View的生命周期可以简单归类如下: 图片稍微有点问题,但大概意思就是这样。待续原创 2016-04-25 23:46:33 · 331 阅读 · 0 评论 -
Android自定义View之随屏幕旋转的TextView
RotateTextView在个别时候我们需要文字随屏幕旋转,那么该怎么实现呢?自定义TextView就可以. 接下来我们贴出RotateTextView的实现代码: “` python import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; imp原创 2015-08-11 18:00:57 · 2137 阅读 · 0 评论 -
[Android进阶]OFO首页实现小窥
[Android进阶]OFO首页实现小窥个人微信公众号,欢迎大家加入。 最近阅读量凄凄惨惨,难以为继,孤倍感无力,遂决定着眼于炫酷,造一些博眼球的东西以引流,比如说实现XXX页面效果,仿XXX页面效果等,各位看官如若觉得不错,还请动动手指点点赞,能转发一波就更好了,嘿呀,不说废话了,开撸。做为这种博眼球系列的开篇,第一篇就从去年的共享经济着手仿制了,今天要实现的是OFO的首页页面效果原创 2018-01-16 22:52:42 · 1004 阅读 · 0 评论 -
自定义View详解(1)
好久好久没更新了,不知道大家还有没有在看以前的一些博文,这段时间换了个坑位还是有点小忙呢!鉴于最近工作接触自定义View,Canvas比较多,所以打算开个系列,详细讲讲View的那些事。View是什么要学习自定义View,我们首先应该清楚的认识到View是个什么东西。那么View究竟是什么呢? 从代码层面看,View是一个类,是所有控件的直接或间接父类,详情见图-View子孙关系...原创 2018-09-25 16:29:36 · 299 阅读 · 0 评论 -
自定义View详解(2)
首先纠正下上篇的一个描述性错误,对于invalidate和postInvalidate的区别: invalidate:在主线程内部更新时使用; postInvalidate:在非UI线程更新时使用,postInvalidate会把更新要求回传至ViewRootImpl中进行响应; 延续上文内容,进一步针对View的基本概念做详细介绍,接下来我们将学习编写自己的第一个自定义V...原创 2018-09-25 16:30:47 · 184 阅读 · 0 评论 -
自定义View详解(3)
大家教师节快乐啊,不知道勤学的Coder们有没有去尝试下绘制上篇文章中最后留下的进阶效果,不管怎样,还是一起动手写一遍吧!看看套路是否一致。水波纹首先来看图-水波纹中的效果,其具有以下特点: 从内到外四层,内圆外环; 从内到外四个色值; 最内部圆局于View中心; 圆和环同心; 看出以下几点,我们就可以开始按照套路画图了,老套路走起(...原创 2018-09-25 16:33:21 · 250 阅读 · 0 评论 -
自定义View详解(4)
在上文中我们简单介绍了Canvas#drawCircle()的使用方式,以及Paint#setStyle(),Paint#setStrokeWidth(),Paint#setColor()等相关函数,不知道小伙伴们了解了多少?那么是不是所有的图形都能通过圆来描述呢?当然不行,那么熟悉API套路的我们就应该知道,这时候应该去看Canvas源码中提供的公有方法是否能满足我们的需求,这样我们就会看到...原创 2018-09-29 11:27:28 · 246 阅读 · 0 评论 -
View详解(5)
上篇中简单介绍了Path#moveTo(),Path#lineTo(),Path#addArc(),不知道勤劳的猿们学习的怎么样了。接下来我们还是以Path为主进行介绍,首先再回头看下上次最后说要实现的效果吧: 废话不多说,动手撸起。形成过程仔细观察上图,不难发现该动画起于三角形,止于类圆,每次动态添加一个顶点,附图说明如下: 相信有上图,大家理解起来就很easy...原创 2018-10-18 17:20:15 · 247 阅读 · 0 评论 -
View详解(6)
废话不多说,直接进入正文,上文中我们已经看到了这篇要实现的动画效果如下:我们可以看到该动画由两个主要元素构成: 张合的怪物脸 从右向左移动的食物 关于从右向左移动的食物,相信各位亲们第一眼就想到了位移动画,那么在Canvas绘制时,怎么做到动画呢?前篇的经验已经很多了,让圆心坐标成为动点,通过 ValueAnimator改变圆心坐标就好(PS:我这里建议做成 mS...原创 2018-10-18 17:21:34 · 248 阅读 · 0 评论 -
仿QQUI实现(1)
DrawerLayout+FragmentTabHost本节主要内容:DrawerLayout简介DrawerLayout使用FragmentTabHost简介进行项目编码1.DrawerLayout简介 DrawerLayout这个类位于android.support.v4.widget包下,要想在项目中使用它,必须在gradle文件中添加依赖,格式如下:compile 'com.an原创 2015-10-19 00:13:01 · 1780 阅读 · 6 评论 -
Android自定义View之圆形TextView
圆形TextView圆形TextView源码:public class CircleTextView extends TextView{ public static final String TAG = "CircleTextView"; private Paint mBgPaint = new Paint(); private Context mContext; Pa原创 2016-04-05 17:20:55 · 2063 阅读 · 0 评论 -
Android自定义View之仪表盘
新建项目,新建DashBoardView继承自View实现OnGlobalLayoutListener接口,并重写OnDraw方法。 使用OnGlobalLayoutListener接口需要重写onGlobalLayout方法,在这个方法中我们将获取View的宽高。新建如下变量:private Context mContext; private Paint mCirclePaint,mDe原创 2016-04-12 22:13:39 · 1100 阅读 · 0 评论 -
Android自定义View之网络图
新建项目,新建CircualRectView类继承自View,实现OnGlobalLayoutListener接口, 定义变量(RectModel为实体类):private Context mContext; private int mViewWidth,mViewHeight; private Paint mRectPaint,mTextPaint,mLinePaint;原创 2016-04-14 20:14:10 · 633 阅读 · 0 评论 -
Android自定义View之音频条形图
新建项目,新建MusicRectangleView继承自View并重写onDraw和onSizeChanged方法,onDraw方法用于绘制矩形,onSizeChanged主要用于为矩形添加LinearGradient渐变,完整后新建变量如下:private Paint mPaint; public int mOffset = 10; public int mRectWidth ;原创 2016-04-12 17:52:01 · 1580 阅读 · 2 评论 -
Android自定义View之Layout的放缩(2)
只有一个子节点时可放缩的Framelayout,详细代码如下:import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.ScaleGestureDetector;impo原创 2016-04-12 15:57:18 · 876 阅读 · 4 评论 -
Android自定义View之闪动的TextView
Android自定义View之闪动的TextView利用LinearGradient实现TextView的色值的渐变渲染。LinearGradient简介LinearGradient mLinearGradient = new LinearGradient(0,0,mViewWidth,0,new int[]{Color.BLUE,0xffffffff,Color.BLUE},new float[]原创 2016-04-12 15:43:21 · 745 阅读 · 0 评论 -
Android自定义View之Layout的放缩(1)
Android自定义View之Layout的放缩在项目中遇到一个需要进行布局放大的需求,但是查找只找到了ImageView的放缩,后期经过查找资料,完成了该需求: 首先我们新建ScaleLayoutDemo并新建ScaleLayout继承自RelativeLayout 新建后的ScaleLayout代码如下所示:import android.content.Context;import and原创 2016-04-10 22:34:31 · 1328 阅读 · 0 评论 -
Android自定义View之圆形进度条
Android自定义View之圆形进度条尽管github上的开源圆形进度条已经很多了,但是我仍然希望能通过自己完成一个,接下来我就一步一步实现圆形进度条,今天我们要实现的效果图如下: 观察上面两幅图我们可以看到,这个图形是由两部分组成的中间的圆形+外围的弧形,我们自然而然的想到了用canvas画。想好就开始实践, 新建PercentDigitalView项目,新建view包,新建Perc原创 2016-04-08 23:05:43 · 588 阅读 · 0 评论 -
Android控件架构
Android控件架构我们经常编写Layout文件,通过Layout文件我们可以看到所有的View在界面上均占有一矩形区域,而我们可以把这种矩形区域(View)大致分为两类,即包含有小矩形区域的大矩形区域(ViewGroup)和单一的矩形区域(View),这种大小矩形相套的格局,自顶向下形成一种树形结构,我们可以将其称为View树.下图是我绘制的一幅简略的View树,以便大家更好地理解这种层次:原创 2016-04-05 13:21:50 · 296 阅读 · 0 评论 -
Android自定义View之ClickableImageSpan
Android自定义View之ClickableImageSpan在项目中遇到字符串中插入图片,经查找使用ImageSpan解决问题,但是最终发现由于ImageSpan并不继承自ClickableSpan导致其不能响应点击事件,这里我提供两种点击事件的解决策略:自定义ClickableImageSpanClickableSpan与ImageSpan重叠使用下面我们针对这两种办法进行介绍:Cli原创 2016-04-27 13:47:21 · 2178 阅读 · 0 评论 -
View详解(7)-六边形加载动画
前几篇中我们学习过了一些规则及不规则图形的绘制技巧,不知道大家理解是否到位,这篇文章中将继续前文主题,研究Path的基本应用,前文中我们已经基本了解了Path的构建,接下来我们来学习一种比较炫酷的动画方案-路径动画,路径动画指的是某一图形或者控件按照固有路径进行绘制或者运动。下面展示的就是一个典型的路径动画: 下面我们一起学习下如何实现该动画。形成过程按照惯有思路,我们观察...原创 2018-11-06 16:50:08 · 408 阅读 · 0 评论