怎么在Android中实现一个启动页倒计时效果

  介绍

本篇文章为大家展示了怎么在Android中实现一个启动页倒计时效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。

开始准备

新建一个类继承TextView,因为中间还有跳过的文本,所以选择用TextView来画个动起来的背景图。

/* *   ,*倒计时文本   ,*/@SuppressLint (“AppCompatCustomView")   public  class  CountDownTextView  extends  TextView  {   ,,,//,倒计时动画时间   ,,,private  int  duration =, 5000;   ,,,//,动画扫过的角度   ,,,private  int  mSweepAngle =, 360;   ,,,//,属性动画   ,,,private  ValueAnimator 动画师;   ,,,//,矩形用来保存位置大小信息   ,,,private  final  RectF  mRect =, new  RectF ();   ,,,//,圆弧的画笔   ,,,private  Paint  mBackgroundPaint;      ,,,public  CountDownTextView (Context 上下文),{   ,,,,,,,这(上下文,null);   ,,,}      ,,,public  CountDownTextView (Context 上下文,AttributeSet  attrs), {   ,,,,,,,这(上下文,attrs,, 0);   ,,,}      ,,,public  CountDownTextView (Context 上下文,AttributeSet  attrs,, int  defStyleAttr), {   ,,,,,,,超级(上下文,attrs, defStyleAttr);   ,,,,,,,init ();   ,,,}      private 才能;void  init (), {   ,,,,,,,//,设置画笔平滑   ,,,,,,,mBackgroundPaint =, new 油漆(Paint.ANTI_ALIAS_FLAG);   ,,,,,,,//,设置画笔颜色   ,,,,,,,mBackgroundPaint.setColor (Color.WHITE);   ,,,,,,,//,设置画笔边框宽度   ,,,,,,,mBackgroundPaint.setStrokeWidth (5);   ,,,,,,,//,设置画笔样式为边框类型   ,,,,,,,mBackgroundPaint.setStyle (Paint.Style.STROKE);   ,,,}   }

开始动画

原理:利用圆的360度角来做属性动画,让它平滑的分配做每帧动画的角度值,然后调用invalidate()来重绘自己本身,从而进入到本身的onDraw()方法来画图。

/* *   ,,,,*,开始倒计时   ,,,*/,,,public  void 开始(),{   ,,,,,,,//,在动画中   ,,,,,,,if  (mSweepAngle  !=, 360),返回;   ,,,,,,,//,,初始化属性动画   ,,,,,,,animator =, ValueAnimator.ofInt (mSweepAngle) .setDuration(持续时间);   ,,,,,,,//,设置插值   ,,,,,,,animator.setInterpolator (new  LinearInterpolator ());   ,,,,,,,//,设置动画监听   ,,,,,,,animator.addUpdateListener (new  ValueAnimator.AnimatorUpdateListener (), {   ,,,,,,,,,,@Override   ,,,,,,,,,,,public  void  onAnimationUpdate (ValueAnimator 动画),{   ,,,,,,,,,,,,,,,//,获取属性动画返回的动画值   ,,,,,,,,,,,,,,,mSweepAngle =, (int), animation.getAnimatedValue ();   ,,,,,,,,,,,,,,,//,重绘自己   ,,,,,,,,,,,,,,,invalidate ();   ,,,,,,,,,,,}   ,,,,,,,});      ,,,,,,,//,开始动画   ,,,,,,,animator.start ();   ,,,}

画圆弧

画圆弧比较简单,从效果图来看,有的同学可能刚开始以为要画两个圆,一个背景的内圆和一个白色边框的大圆,其实这里可以利用画笔设置画笔样式paint.setStyle()和宽度大小paint.setStrokeWidth()的特性来实现。代码很简单,开始的角度选择-90年从头顶开始画。这样实现的是一个顺时针的倒计时效果。如果你想实现酷狗的逆时针效果,就控制mSweepAngle的值用mSweepAngle=360 - mSweepAngle开始就可以了。

, @Override   ,,,protected  void  onDraw (Canvas 画布),{   ,,,,,,,int  padding =, dp2px (4);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Android中实现一个启动页倒计时效果