千家信息网

Android如何使用自定义view在指定时间内匀速画一条直线

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容介绍了"Android如何使用自定义view在指定时间内匀速画一条直线"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家
千家信息网最后更新 2024年11月23日Android如何使用自定义view在指定时间内匀速画一条直线

本篇内容介绍了"Android如何使用自定义view在指定时间内匀速画一条直线"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.效果图:

2.自定义view实现

public class UniformLine extends View {  private int x, y, nextX, nextY, incrementY, incrementX;  public UniformLine(Context context) {  super(context);  }  public UniformLine(Context context, int x, int y, int nextX, int nextY) {  super(context);  this.x = x;  this.y = y;  this.nextX = nextX;  this.nextY = nextY;  init();  }  private void init() {  p = new Paint();  p.setColor(Color.WHITE);  p.setAntiAlias(true);  p.setStrokeWidth(4.0f);   ValueAnimator valueAnimatorX = ValueAnimator.ofFloat(x, nextX);  valueAnimatorX.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {   @Override   public void onAnimationUpdate(ValueAnimator animation) {   incrementX = Math.round((Float) animation.getAnimatedValue());   invalidate();   }  });  ValueAnimator valueAnimatorY = ValueAnimator.ofInt(y, nextY);  valueAnimatorY.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {   @Override   public void onAnimationUpdate(ValueAnimator animation) {   incrementY = (int) animation.getAnimatedValue();   invalidate();   }  });  AnimatorSet animatorSet = new AnimatorSet();  LinearInterpolator ll = new LinearInterpolator();  animatorSet.setInterpolator(ll);//匀速  animatorSet.setDuration(2000);  animatorSet.playTogether(valueAnimatorX, valueAnimatorY);  animatorSet.start();  }  Paint p;  @Override  protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  canvas.drawLine(Util.Div(Math.round(x)), Util.Div(Math.round(y)),   Util.Div(Math.round(incrementX)), Util.Div(Math.round(incrementY)), p);// 斜线  } }

3.调用

uniformLine = new UniformLine(mContext, 300, 500, 600, 200); addView(uniformLine);

"Android如何使用自定义view在指定时间内匀速画一条直线"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0