Android自定义View图片按Path运动和旋转

Android自定义View图片按Path运动和旋转,第1张

概述本文实例为大家分享了Android自定义View图片按Path运动旋转的具体代码,供大家参考,具体内容如下

本文实例为大家分享了AndroID自定义view图片按Path运动旋转的具体代码,供大家参考,具体内容如下

VIEw:

/**  * author : stone  * email : aa86799@163.com  * time : 16/5/29 15 29  */ public class EarthPathVIEw extends VIEw {   private Path mPath;  private Paint mPaint;  private Bitmap mBitmap;  private PathMeasure mPathMeasure;  private float[] mPoint;  private float[] mTan;  private float mDdegrees;   public EarthPathVIEw(Context context) {   this(context,null);  }   public EarthPathVIEw(Context context,AttributeSet attrs) {   this(context,attrs,0);  }   public EarthPathVIEw(Context context,AttributeSet attrs,int defStyleAttr) {   super(context,defStyleAttr);    mPaint = new Paint();   mPaint.setcolor(color.RED);   mPaint.setStyle(Paint.Style.stroke);   mPaint.setstrokeWIDth(10);    inputStream is = getResources().openRawResource(R.drawable.earth);   mBitmap = BitmapFactory.decodeStream(is);   }   public voID setPath(Path path) {   mPath = path;   mPathMeasure = new PathMeasure(path,false);   mPoint = new float[2];   mTan = new float[2];   }   @OverrIDe  protected voID onDraw(Canvas canvas) {   super.onDraw(canvas);   if (mPath == null) {    return;   }     canvas.rotate(mDdegrees+=2,getWIDth()/2,getHeight()/2);   canvas.drawPath(mPath,mPaint);    float degress = (float) Math.todegrees(Math.atan2(mTan[1],mTan[0]));   Matrix matrix = new Matrix();   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)  public voID startAnim() {   ValueAnimator animator = ValueAnimator.offloat(0,mPathMeasure.getLength());   animator.setDuration(2000);   animator.setInterpolator(new linearInterpolator()); //插值器   animator.setRepeatCount(ValueAnimator.INFINITE);   animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {    @OverrIDe    public voID onAnimationUpdate(ValueAnimator animation) {     float distance = (float) animation.getAnimatedValue();     mPathMeasure.getPosTan(distance,mPoint,mTan);     invalIDate();    }   });   animator.start();  } } 

Activity

package com.stone.canvaspath;  import androID.app.Activity; import androID.graphics.Path; import androID.os.Bundle;  import com.stone.canvaspath.earth.EarthPathVIEw;  /**  * author : stone  * email : aa86799@163.com  * time : 16/5/29 15 27  */ public class EarthActivity extends Activity {   private EarthPathVIEw mPathVIEw;  private Path mPath;   @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);    int w = getResources().getdisplayMetrics().wIDthPixels;   int h = getResources().getdisplayMetrics().heightPixels;    mPathVIEw = new EarthPathVIEw(this);    setContentVIEw(mPathVIEw);    int min = Math.min(w,h);   buildpath(w / 2 + 100,h / 2 + 100,min / 4);    mPathVIEw.setPath(mPath);    mPathVIEw.startAnim();  }   private voID buildpath(float x,float y,float radius) {   mPath = new Path();   mPath.addCircle(x,y,radius,Path.Direction.CW);  }  } 

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

您可能感兴趣的文章:Android自定义View实现QQ运动积分转盘抽奖功能Android 自定View实现仿QQ运动步数圆弧及动画效果Android自定义View仿微博运动积分动画效果Android UI之ImageView实现图片旋转和缩放Android使用RotateImageView 旋转ImageViewAndroid UI设计系列之ImageView实现ProgressBar旋转效果(1)Android自定义View叶子旋转完整版(六)Android自定义View实现QQ音乐中圆形旋转碟子Android自定义View实现叶子飘动旋转效果(四)Android中imageView图片放大缩小及旋转功能示例代码 总结

以上是内存溢出为你收集整理的Android自定义View图片按Path运动和旋转全部内容,希望文章能够帮你解决Android自定义View图片按Path运动和旋转所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存