您的位置:首页 > 移动开发 > Android开发

Android加载动画系列——BlockLoadingAnim

2016-07-30 20:43 302 查看
Android加载动画系列——BlockLoadingAnim
俄罗斯方块,我相信80、90的人肯定玩过,也差不多快被这个时代忘记了,或者说被一些新的玩法替代了,比如:体感俄罗斯方块。今天我们就来实现一款带阴影的方块加载动画~让我们先来看看效果图:
1、BlockLoadingAnim.java源码如下:
publicclassBlockLoadingAnimextendsView{privatePaintmPaint,mPaintShadow,mPaintLeft,mPaintRight;privatefloatmWidth=0f;floatmoveYtoCenter=0f;floatrhomboidsX=0f;floatrhomboidsY=0f;publicBlockLoadingAnim(Contextcontext){this(context,null);}publicBlockLoadingAnim(Contextcontext,AttributeSetattrs){this(context,attrs,0);}publicBlockLoadingAnim(Contextcontext,AttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);initPaint();}@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){super.onMeasure(widthMeasureSpec,heightMeasureSpec);if(getMeasuredWidth()>getHeight())mWidth=getMeasuredHeight();elsemWidth=getMeasuredWidth();rhomboidsX=(float)(3*mWidth/16/Math.sqrt(3));rhomboidsY=mWidth/16;}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);canvas.save();if(!mShadow){moveYtoCenter=mWidth/4;}else{moveYtoCenter=0;}if(mAnimatedValue>=0&&mAnimatedValue<(1.0f/3)){drawStep1(canvas,mAnimatedValue);if(mShadow)drawShadowStep1(canvas,mAnimatedValue);}elseif(mAnimatedValue>=(1.0f/3)&&mAnimatedValue<(1.0f/3*2)){drawStep2(canvas,mAnimatedValue);if(mShadow)drawShadowStep2(canvas,mAnimatedValue);}elseif(mAnimatedValue>=(1.0f/3*2)&&mAnimatedValue<=1.0f){drawStep3(canvas,mAnimatedValue);if(mShadow)drawShadowStep3(canvas,mAnimatedValue);}canvas.restore();}privatevoiddrawStep1(Canvascanvas,floattime){floatmoveX=rhomboidsX/2.0f*time/(1.0f/3);floatmoveY=rhomboidsY/2.0f*time/(1.0f/3);Pathp=newPath();p.moveTo(mWidth/2-rhomboidsX*2-moveX,rhomboidsY*12-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-moveX,rhomboidsY*11-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-moveX,mWidth/4*3-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-moveX,rhomboidsY*13-moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2-moveX,rhomboidsY*12-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-moveX,rhomboidsY*13-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-moveX,rhomboidsY*13-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2-moveX,rhomboidsY*12-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+moveX,rhomboidsY*12-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+moveX,rhomboidsY*11-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+moveX,mWidth/4*3-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+moveX,rhomboidsY*13-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+moveX,rhomboidsY*12+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*11+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+moveX,mWidth/4*3+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*13+moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+moveX,rhomboidsY*12+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*13+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*13+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+moveX,rhomboidsY*12+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2+rhomboidsX+rhomboidsX+moveX,mWidth/4*3+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*13+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*13+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+moveX,mWidth/4*3+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-moveX,rhomboidsY*12+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX-moveX,rhomboidsY*11+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX-moveX,mWidth/4*3+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-moveX,rhomboidsY*13+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-moveX,rhomboidsY*12+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-moveX,rhomboidsY*13+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-moveX,rhomboidsY*13+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2+rhomboidsX-moveX,rhomboidsY*12+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2+rhomboidsX-moveX,mWidth/4*3+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-moveX,rhomboidsY*13+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-moveX,rhomboidsY*13+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX-moveX,mWidth/4*3+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);}privatevoiddrawStep2(Canvascanvas,floattime){floatmoveX=rhomboidsX*(time-1.0f/3)/(1.0f/3);floatmoveY=rhomboidsY*(time-1.0f/3)/(1.0f/3);Pathp=newPath();p.moveTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+moveX,rhomboidsY*12-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+moveX,rhomboidsY*11-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX/2.0f+moveX,mWidth/4*3-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+moveX,rhomboidsY*12-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY/2.0f-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+moveX,rhomboidsY*12-rhomboidsY/2.0f-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*12-rhomboidsY+rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*11-rhomboidsY+rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*11+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX-rhomboidsX/2.0f,mWidth/4*3+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2+rhomboidsX-rhomboidsX/2.0f,mWidth/4*3+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX-rhomboidsX/2.0f,mWidth/4*3+rhomboidsY-rhomboidsY/2.0f-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*11+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,mWidth/4*3+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY/2.0f+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY/2.0f+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,mWidth/4*3+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY/2.0f+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,mWidth/4*3+rhomboidsY/2.0f+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);}privatevoiddrawStep3(Canvascanvas,floattime){floatmoveX=rhomboidsX/2.0f*(time-1.0f/3*2)/(1.0f/3);floatmoveY=rhomboidsY/2.0f*(time-1.0f/3*2)/(1.0f/3);Pathp=newPath();p.moveTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*12-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*11-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX/2.0f+rhomboidsX+moveX,mWidth/4*3-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*13-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*12-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*13-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*13-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*12-rhomboidsY/2.0f-rhomboidsY+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*12-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*11-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f+moveX,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f+moveX,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f+moveX,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f+moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*12+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*11+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,mWidth/4*3+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*13+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*12+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*13+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*13+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*12+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);p.reset();p.moveTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,mWidth/4*3+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*13+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*13+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,mWidth/4*3+rhomboidsY/2.0f+rhomboidsY-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintRight);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*11+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+rhomboidsX-rhomboidsX/2.0f-moveX,mWidth/4*3+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.close();canvas.drawPath(p,mPaint);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+moveYtoCenter);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.lineTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-moveY-mWidth/2+rhomboidsY*2+moveYtoCenter);p.close();canvas.drawPath(p,mPaintLeft);}privatevoiddrawShadowStep1(Canvascanvas,floattime){floatmoveX=rhomboidsX/2.0f*time/(1.0f/3);floatmoveY=rhomboidsY/2.0f*time/(1.0f/3);Pathp=newPath();p.moveTo(mWidth/2-rhomboidsX*2-moveX,rhomboidsY*12-moveY);p.lineTo(mWidth/2-rhomboidsX-moveX,rhomboidsY*11-moveY);p.lineTo(mWidth/2-moveX,mWidth/4*3-moveY);p.lineTo(mWidth/2-rhomboidsX-moveX,rhomboidsY*13-moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+moveX,rhomboidsY*12-rhomboidsY+moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+moveX,rhomboidsY*11-rhomboidsY+moveY);p.lineTo(mWidth/2+rhomboidsX+moveX,mWidth/4*3-rhomboidsY+moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+moveX,rhomboidsY*13-rhomboidsY+moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+moveX,rhomboidsY*12+moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*11+moveY);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+moveX,mWidth/4*3+moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+moveX,rhomboidsY*13+moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-moveX,rhomboidsY*12+rhomboidsY-moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX-moveX,rhomboidsY*11+rhomboidsY-moveY);p.lineTo(mWidth/2+rhomboidsX-moveX,mWidth/4*3+rhomboidsY-moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-moveX,rhomboidsY*13+rhomboidsY-moveY);p.close();canvas.drawPath(p,mPaintShadow);}privatevoiddrawShadowStep2(Canvascanvas,floattime){floatmoveX=rhomboidsX*(time-1.0f/3)/(1.0f/3);floatmoveY=rhomboidsY*(time-1.0f/3)/(1.0f/3);Pathp=newPath();p.moveTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+moveX,rhomboidsY*12-rhomboidsY/2.0f-moveY);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+moveX,rhomboidsY*11-rhomboidsY/2.0f-moveY);p.lineTo(mWidth/2-rhomboidsX/2.0f+moveX,mWidth/4*3-rhomboidsY/2.0f-moveY);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY/2.0f-moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*12-rhomboidsY+rhomboidsY/2.0f);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*11-rhomboidsY+rhomboidsY/2.0f);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY/2.0f+moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*11+rhomboidsY/2.0f+moveY);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,mWidth/4*3+rhomboidsY/2.0f+moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY/2.0f+moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*11+rhomboidsY-rhomboidsY/2.0f);p.lineTo(mWidth/2+rhomboidsX-rhomboidsX/2.0f,mWidth/4*3+rhomboidsY-rhomboidsY/2.0f);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f);p.close();canvas.drawPath(p,mPaintShadow);}privatevoiddrawShadowStep3(Canvascanvas,floattime){floatmoveX=rhomboidsX/2.0f*(time-1.0f/3*2)/(1.0f/3);floatmoveY=rhomboidsY/2.0f*(time-1.0f/3*2)/(1.0f/3);Pathp=newPath();p.moveTo(mWidth/2-rhomboidsX*2-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*12-rhomboidsY/2.0f-rhomboidsY+moveY);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*11-rhomboidsY/2.0f-rhomboidsY+moveY);p.lineTo(mWidth/2-rhomboidsX/2.0f+rhomboidsX+moveX,mWidth/4*3-rhomboidsY/2.0f-rhomboidsY+moveY);p.lineTo(mWidth/2-rhomboidsX-rhomboidsX/2.0f+rhomboidsX+moveX,rhomboidsY*13-rhomboidsY/2.0f-rhomboidsY+moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*12-rhomboidsY+rhomboidsY/2.0f+moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*11-rhomboidsY+rhomboidsY/2.0f+moveY);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX/2.0f+moveX,mWidth/4*3-rhomboidsY+rhomboidsY/2.0f+moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX/2.0f+moveX,rhomboidsY*13-rhomboidsY+rhomboidsY/2.0f+moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*12+rhomboidsY/2.0f+rhomboidsY-moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*11+rhomboidsY/2.0f+rhomboidsY-moveY);p.lineTo(mWidth/2+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,mWidth/4*3+rhomboidsY/2.0f+rhomboidsY-moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX+rhomboidsX+rhomboidsX/2.0f-rhomboidsX-moveX,rhomboidsY*13+rhomboidsY/2.0f+rhomboidsY-moveY);p.close();canvas.drawPath(p,mPaintShadow);p.reset();p.moveTo(mWidth/2-rhomboidsX*2+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*12+rhomboidsY-rhomboidsY/2.0f-moveY);p.lineTo(mWidth/2-rhomboidsX+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*11+rhomboidsY-rhomboidsY/2.0f-moveY);p.lineTo(mWidth/2+rhomboidsX-rhomboidsX/2.0f-moveX,mWidth/4*3+rhomboidsY-rhomboidsY/2.0f-moveY);p.lineTo(mWidth/2+-rhomboidsX+rhomboidsX-rhomboidsX/2.0f-moveX,rhomboidsY*13+rhomboidsY-rhomboidsY/2.0f-moveY);p.close();canvas.drawPath(p,mPaintShadow);}privatevoidinitPaint(){mPaint=newPaint();mPaint.setAntiAlias(true);mPaint.setStyle(Paint.Style.FILL_AND_STROKE);mPaint.setColor(Color.rgb(247,202,42));mPaint.setStrokeWidth(1);mPaintShadow=newPaint();mPaintShadow.setAntiAlias(true);mPaintShadow.setStyle(Paint.Style.FILL_AND_STROKE);mPaintShadow.setColor(Color.rgb(0,0,0));mPaintShadow.setStrokeWidth(1f);mPaintLeft=newPaint();mPaintLeft.setAntiAlias(true);mPaintLeft.setStyle(Paint.Style.FILL_AND_STROKE);mPaintLeft.setColor(Color.rgb(227,144,11));mPaintLeft.setStrokeWidth(1);mPaintRight=newPaint();mPaintRight.setAntiAlias(true);mPaintRight.setStyle(Paint.Style.FILL_AND_STROKE);mPaintRight.setColor(Color.rgb(188,91,26));mPaintRight.setStrokeWidth(1);}privateValueAnimatorvalueAnimator;floatmAnimatedValue=0;publicvoidstartAnim(){stopAnim();startViewAnim(0f,1f,500);}publicvoidstopAnim(){if(valueAnimator!=null){clearAnimation();valueAnimator.setRepeatCount(0);valueAnimator.cancel();valueAnimator.end();mAnimatedValue=0f;postInvalidate();}}privateValueAnimatorstartViewAnim(floatstartF,finalfloatendF,longtime){valueAnimator=ValueAnimator.ofFloat(startF,endF);valueAnimator.setDuration(time);valueAnimator.setInterpolator(newLinearInterpolator());valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//无限循环valueAnimator.setRepeatMode(ValueAnimator.RESTART);valueAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener(){@OverridepublicvoidonAnimationUpdate(ValueAnimatorvalueAnimator){mAnimatedValue=(float)valueAnimator.getAnimatedValue();invalidate();}});valueAnimator.addListener(newAnimatorListenerAdapter(){@OverridepublicvoidonAnimationEnd(Animatoranimation){super.onAnimationEnd(animation);}@OverridepublicvoidonAnimationStart(Animatoranimation){super.onAnimationStart(animation);}@OverridepublicvoidonAnimationRepeat(Animatoranimation){super.onAnimationRepeat(animation);}});if(!valueAnimator.isRunning()){valueAnimator.start();}returnvalueAnimator;}privatebooleanmShadow=true;publicvoidisShadow(booleanshow){this.mShadow=show;invalidate();}}
2、接着在layout布局文件中使用我们自定义的动画控件
<com.cyril.loadinganim.BlockLoadingAnimandroid:id="@+id/blockloadinganim"android:layout_width="50dp"android:layout_height="50dp"/>
3、然后在Activity中实现动画的播放和停止,使用事例如下:
blockLoadingAnim=(BlockLoadingAnim)findViewById(R.id.blockloadinganim);blockLoadingAnim.isShadow(true);blockLoadingAnim.startAnim();
我们可以通过isShadow(false)方法来关闭底部阴影的效果。
4、戳这里,小编带你去源码的下载地址:http://download.csdn.net/detail/zhimingshangyan/9582830
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息