Android流光动画,直接上代码

/*** 流光动画*/
public class FlowingLightView extends View {private Paint mPaint;private Path mPath;private LinearGradient mLinearGradient;private ValueAnimator mValueAnimator;public FlowingLightView(Context context) {this(context, null);}public FlowingLightView(Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public FlowingLightView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {mPaint = new Paint();mPath = new Path();}private void initPointAndAnimator(int w, int h) {Point point1 = new Point(0, 0);Point point2 = new Point(w, 0);Point point3 = new Point(w, h);Point point4 = new Point(0, h);mPath.moveTo(point1.x, point1.y);mPath.lineTo(point2.x, point2.y);mPath.lineTo(point3.x, point3.y);mPath.lineTo(point4.x, point4.y);mPath.close();// 斜率kfloat k = 0f * h / w;// 偏移float offset = 1f * w / 8;// 0f - offset * 2 为数值左边界(屏幕外左侧), w + offset * 2为数值右边界(屏幕外右侧)// 目的是使光影走完一遍,加一些时间缓冲,不至于每次光影移动的间隔都那么急促mValueAnimator = ValueAnimator.ofFloat(0f - offset/2, w + offset/2);mValueAnimator.setRepeatCount(-1);mValueAnimator.setInterpolator(new LinearInterpolator());mValueAnimator.setDuration(8000);mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float value = (float) animation.getAnimatedValue();mLinearGradient = new LinearGradient(value, k * value, value + 2, k * (value + 2),new int[]{Color.parseColor("#00FFE5EE"), Color.parseColor("#FFE5EE"), Color.parseColor("#00FFE5EE")}, null, Shader.TileMode.CLAMP);mPaint.setShader(mLinearGradient);invalidate();}});mValueAnimator.start();}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int widthSize = MeasureSpec.getSize(widthMeasureSpec);int heightSize = MeasureSpec.getSize(heightMeasureSpec);initPointAndAnimator(widthSize, heightSize);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawPath(mPath, mPaint);}@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();mValueAnimator.cancel();}
}

android 流光字体

public class ShineTextView extends AppCompatTextView {private LinearGradient mLinearGradient;private Matrix mGradientMatrix;private Paint mPaint;private int mViewWidth = 0;private int mTranslate = 0;public ShineTextView(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);if (mViewWidth == 0) {mViewWidth = getMeasuredWidth();if (mViewWidth > 0) {mPaint = getPaint();mLinearGradient = new LinearGradient(0,0,mViewWidth/8,0,new int[]{0xFFFF5997, 0xFFFFE5EE, 0xFFFF5997},null,Shader.TileMode.CLAMP);mPaint.setShader(mLinearGradient);mGradientMatrix = new Matrix();}}}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (mGradientMatrix != null) {mTranslate += mViewWidth / 10;if (mTranslate > 1.5 * mViewWidth) {mTranslate = -mViewWidth / 2;}mGradientMatrix.setTranslate(mTranslate, 0);mLinearGradient.setLocalMatrix(mGradientMatrix);postInvalidateDelayed(100);}}
}

尾声

开发是需要一定的基础的,我是08年开始进入Android这行的,在这期间经历了Android的鼎盛时期,和所谓的Android”凉了“。中间当然也有着,不可说的心酸,看着身边朋友,同事一个个转前端,换行业,其实当时我的心也有过犹豫,但是我还是坚持下来了,这次的疫情就是一个好的机会,大浪淘沙,优胜劣汰。再等等,说不定下一个黄金浪潮就被你等到了。

这是我在这行工作10几年积累的一些资料,如果还想继续在这行业走下去的,或者现在打算跳槽,可以**私信【学习】**我愿意把资料免费分享给大家。
或者直接扫描下面二维码领取

Android学习PDF+架构视频+面试文档+源码笔记

  • 330页 PDF Android核心笔记

  • 几十套阿里 、字节跳动、腾讯、华为、美团等公司2020年的面试题

  • PDF和思维脑图,包含知识脉络 + 诸多细节

  • Android进阶系统学习视频

android流光动画和流光字体相关推荐

  1. Android自定义动画专题一

    Android自定义动画 在目前的移动端产品中,不管是app还是网页一个好看酷炫的页面总是会第一时间吸引人的眼球,那么对于android开发人员来说,要想实现一个好看的页面必然需要掌握自定义控件以及自 ...

  2. android 自定义loading,Android自定义动画-StarLoadingView

    今天来分享第二个自定义loading的动画,起了个名字叫 蹦跶的星星 ,还是老规矩先介绍,后上图. 实现效果在最后,GIF有点大,手机流量慎重. 介绍 首先声明做这个动画的初衷是为了学习和分享,所以从 ...

  3. android 三维动画效果,9款令人惊叹的HTML5 3D动画应用

    原标题:9款令人惊叹的HTML5 3D动画应用 之前我们已经向大家分享了很多HTML5动画应用了,大部分都非常炫酷,也有一小部分是很实用的.今天我们要向各位HTML5动画爱好者介绍更多的HTML5 3 ...

  4. 【学习笔记】Android视图动画学习

    2019独角兽企业重金招聘Python工程师标准>>> 1.Android View动画框架 Animation框架定义了透明度.旋转.缩放和位移几种常见的动画. 实现原理:每次绘制 ...

  5. android矢量动画 充电,android矢量动画

    android矢量动画! 直接来个例子就明白了!(这里我把与动画无关的属性都用-表示) 首先你要有个矢量图 比如这个矢量图xml文件叫"vector1",文件在res\drawab ...

  6. Android视图动画集合AndoridViewAnimations

    Android视图动画集合AndoridViewAnimations Android视图动画是针对视图对象的动画效果,包括对象平移.旋转.缩放和渐变四种类型.通过组合这四种类型,可以创建出无数种动画效 ...

  7. android开发字体样式,Android开发中修改程序字体的样式

    Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体 可以采用an ...

  8. 使用android frame动画定义自己的ProgressBar

    使用android  frame动画定义自己的ProgressBar 在 res  /layout/ainm 目录下面建一个frame_ainm.xml文件 <?xml version=&quo ...

  9. android动画封装,Android属性动画封装,快速构建动画

    Android实现动画效果的方式主要有帧动画.补间动画.属性动画.关于安桌动画的基础知识可以查看这篇文章Android属性动画完全解析 这里我要讲的是如何快速构建出一个动画效果,如下图: 如果我们用属 ...

  10. Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能

    我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...

最新文章

  1. struts2之单个文件上传
  2. xp改mac地址linux,局域网络必备-mac地址修改
  3. 16版.就诊时排队叫号
  4. (收藏)Html相关网址
  5. ios pusher使用_使用.NET和Pusher构建实时评论功能
  6. pxc mysql mycat_Mycat+Pxc的配置
  7. 深入解读 MySQL 架构设计原理,剖析存储架构选型核心
  8. 初学JAVA随记——循环语句的几个要点
  9. Thingsboard 3.1.0 - 远程控制和GPIO状态显示
  10. 百度网盘下载神器度盘下载器
  11. MiroTik 路由器配置无线中继模式(超细教程)
  12. 不能创建对象qmdispatch_win7系统打开某些软件提示“Activex部件不能创建对象”的解决方法...
  13. python中的sort和sorted是什么意思_python中sort和sorted的另类用法
  14. SOLARIS SYSTEM COMMAND(个人整理笔记)
  15. 一个基于WinHttp的轻量级的分片下载库介绍
  16. Minecraft一些红石技巧(1)
  17. javac错误: 找不到符号或程序包XXX不存在
  18. 电机是怎么转的?(电机原理+电机控制+电机分类)
  19. elasticsearch分词练习、自定义分词器练习
  20. Linux学习中Xshell软件出现tom 不在 sudoers 文件中。此事将被报告。

热门文章

  1. python docx首行缩进两字符的设定方法
  2. 最新emoji表情代码大全_2020最新霜降早上好祝福语动态表情图片大全带字 温馨的霜降问候语免打字图片...
  3. 简单粗暴PyTorch之transforms详解(一)
  4. 计算机硬盘无法查找,电脑不认硬盘的原因,怎么解决电脑读不到硬盘?
  5. 除了攀附名人、杜撰荣恩录,家谱造假中,还有这件事令人羞耻
  6. fastlane二开java_从入门开始使用Fastlane
  7. c++随手写写(链表栈)
  8. 浏览器主页被修改的解决方案
  9. 阿里云大数据ACP认证学习笔记
  10. MAALA3.9_初等矩阵和等价 (Elementary Matrices and Equivalence)