Android如何实现自定义View图片按Path运动和旋转效果(android,view,移动开发)

时间:2024-05-10 01:51:31 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

具体内容如下

Android如何实现自定义View图片按Path运动和旋转效果

View:

/***author:stone*email:aa86799@163.com*time:16/5/291529*/publicclassEarthPathViewextendsView{privatePathmPath;privatePaintmPaint;privateBitmapmBitmap;privatePathMeasuremPathMeasure;privatefloat[]mPoint;privatefloat[]mTan;privatefloatmDdegrees;publicEarthPathView(Contextcontext){this(context,null);}publicEarthPathView(Contextcontext,AttributeSetattrs){this(context,attrs,0);}publicEarthPathView(Contextcontext,AttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);mPaint=newPaint();mPaint.setColor(Color.RED);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(10);InputStreamis=getResources().openRawResource(R.drawable.earth);mBitmap=BitmapFactory.decodeStream(is);}publicvoidsetPath(Pathpath){mPath=path;mPathMeasure=newPathMeasure(path,false);mPoint=newfloat[2];mTan=newfloat[2];}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);if(mPath==null){return;}canvas.rotate(mDdegrees+=2,getWidth()/2,getHeight()/2);canvas.drawPath(mPath,mPaint);floatdegress=(float)Math.toDegrees(Math.atan2(mTan[1],mTan[0]));Matrixmatrix=newMatrix();matrix.postRotate(degress,mBitmap.getWidth()/2,mBitmap.getHeight()/2);matrix.postTranslate(mPoint[0]-mBitmap.getWidth()/2,mPoint[1]-mBitmap.getHeight()/2);canvas.drawBitmap(mBitmap,matrix,null);}@TargetApi(Build.VERSION_CODES.HONEYCOMB)publicvoidstartAnim(){ValueAnimatoranimator=ValueAnimator.ofFloat(0,mPathMeasure.getLength());animator.setDuration(2000);animator.setInterpolator(newLinearInterpolator());//插值器animator.setRepeatCount(ValueAnimator.INFINITE);animator.addUpdateListener(newValueAnimator.AnimatorUpdateListener(){@OverridepublicvoidonAnimationUpdate(ValueAnimatoranimation){floatdistance=(float)animation.getAnimatedValue();mPathMeasure.getPosTan(distance,mPoint,mTan);invalidate();}});animator.start();}}

Activity

packagecom.stone.canvaspath;importandroid.app.Activity;importandroid.graphics.Path;importandroid.os.Bundle;importcom.stone.canvaspath.earth.EarthPathView;/***author:stone*email:aa86799@163.com*time:16/5/291527*/publicclassEarthActivityextendsActivity{privateEarthPathViewmPathView;privatePathmPath;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);intw=getResources().getDisplayMetrics().widthPixels;inth=getResources().getDisplayMetrics().heightPixels;mPathView=newEarthPathView(this);setContentView(mPathView);intmin=Math.min(w,h);buildPath(w/2+100,h/2+100,min/4);mPathView.setPath(mPath);mPathView.startAnim();}privatevoidbuildPath(floatx,floaty,floatradius){mPath=newPath();mPath.addCircle(x,y,radius,Path.Direction.CW);}}

以上是“Android如何实现自定义View图片按Path运动和旋转效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Android如何实现自定义View图片按Path运动和旋转效果的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Android中如何实现画图下一篇:

15 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18