Android实现锁屏荧光效果

Android实现锁屏荧光效果,第1张

概述前言这是几个月前写的博文,睡前看了觉得有些敷衍,还是改了再发吧。之前的博客做了个锁屏应用,在以前各种酷炫的锁屏效果是很流行的,有时候会去锁屏市场看看哪些自己喜欢的特效,发现有个很酷炫的荧光解锁的效果

前言

这是几个月前写的博文,睡前看了觉得有些敷衍,还是改了再发吧。

之前的博客做了个锁屏应用,在以前各种酷炫的锁屏效果是很流行的,有时候会去锁屏市场看看哪些自己喜欢的特效,发现有个很酷炫的荧光解锁的效果,于是想着能否自己实现一下。

锁屏效果:

原理:

锁屏的原理在前些篇章已经有做介绍了,这里主要讲荧光这种效果的实现。

原理要点:

1)关于荧光点,每一个荧光店都是我们一个对象实体,因此我们将其单独构造为一个类,它具有自己的一些属性,比如荧光开始时间,荧光点的半径,荧光点的生命周期等。

 /**  * 荧光点  */ private class FluorescencePointF{  public PointF mPointF; //荧光点坐标  public long mStartTime; //开始时间  private float mRadius; //荧光点半径  private final float MAX_RADIUS = Constant.sScaleX * 15; //荧光点最大半径  private final float MIN_RADIUS = Constant.sScaleX * 8; //荧光点最小半径  private final long SHOW_TIME = 600;     //荧光维持时间  private final Interpolator DEC_INTERPolATOR = new DecelerateInterpolator(); //减速  /**   * 构造方法   */  public FluorescencePointF(PointF pointF) {   this.mPointF = pointF;   this.mStartTime = System.currentTimeMillis();   this.mRadius = MIN_RADIUS + mRandom.nextInt((int) MAX_RADIUS);   Log.e(TAG,"FluorescencePointF point:" + "x:" +pointF.x + " y:" + pointF.y);   Log.e(TAG,"FluorescencePointF radius:" + this.mRadius);  }  /**   * 获得半径   */  public float geTradius(){   if(!isAlive()) return 0;   return mRadius * DEC_INTERPolATOR.getInterpolation(     ((float)SHOW_TIME - (System.currentTimeMillis() - mStartTime))/ SHOW_TIME);  }  /**   * 荧光点是否生存   * @return   */  public boolean isAlive(){    return System.currentTimeMillis() - mStartTime <= SHOW_TIME;  } }

2)关于荧光发光的实现

从锁屏主题的效果我们可以看到,荧光点都是先发光闪亮,后来随着半径逐渐变小,亮度逐渐减弱。
光亮效果我们可以通过RadialGradIEnt类渲染来实现,同时我们可以通过逐渐改变半径大小,来让荧光点看起来慢慢缩小。

Shader shader = new RadialGradIEnt(fluorescencePointF.mPointF.x,fluorescencePointF     .mPointF.y,radius,color_WHITE,color_WHITE_SHADER,Shader.TileMode.CLAMP);   mPaintShader.setShader(shader);   canvas.drawCircle(fluorescencePointF.mPointF.x,fluorescencePointF.mPointF.y,fluorescencePointF.geTradius(),mPaintShader);

3)关于荧光点错落闪亮的效果

实现了一个荧光点如何发光的效果,接下来我们要实现的是一堆荧光点,为了让荧光效果看起来自然,我们当然不能同时产生一堆荧光点,我们要造成一种“随机”的效果,即随机的产生的时机,随机的数量,随机的大小,随机的坐标。

通过随机数,产生随机数量的荧光点,这时候荧光点的坐标和半径也是随机生成的(详见荧光点类的构造方法)

4)关于逻辑处理

逻辑的处理就很简单了,我们只需要在ontouchEvent()方法里处理触摸事件,生成随机的荧光点就行了。

 @OverrIDe public boolean ontouchEvent(MotionEvent event) { int action = event.getAction(); mtouchPoint.x = event.getX(); mtouchPoint.y = event.getY(); switch (action){  //手指按下的时候,在手指附近区域生成荧光点  case MotionEvent.ACTION_DOWN:  mStartPoint.x = mtouchPoint.x;  mStartPoint.y = mtouchPoint.y;  createrandomPoints();  invalIDate();  break;  //手指移动,继续生成荧光点   case MotionEvent.ACTION_MOVE:  createrandomPoints();  invalIDate();  break;  case MotionEvent.ACTION_UP:  if(getdistance(mtouchPoint.x,mtouchPoint.y,mStartPoint.x,mStartPoint.y) >=    UNLOCK_disTANCE)   Global.broadcast(getContext(),"");  break;  case MotionEvent.ACTION_CANCEL:  if(getdistance(mtouchPoint.x,mStartPoint.y) >=   UNLOCK_disTANCE)   Global.broadcast(getContext(),"");  break;  default:  break; } return true; }

码完,比较简单,如有错漏,欢迎指正

代码传送门:Android实现荧光效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:Android自定义控件打造闪闪发光字体Android自定义View之边框文字、闪烁发光文字 总结

以上是内存溢出为你收集整理的Android实现锁屏荧光效果全部内容,希望文章能够帮你解决Android实现锁屏荧光效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1142826.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存