属性动画

xiaoxiao2021-02-28  84

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); icon = (ImageView) findViewById(R.id.cion); container = (LinearLayout) findViewById(R.id.container); } public void onClick(View v) { //属性动画 ValueAnimator 的用法 ,属性动画本质是值动画 // ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f); // valueAnimator.setDuration(2000); // valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // @Override // public void onAnimationUpdate(ValueAnimator animation) { // float animatedValue = (float) animation.getAnimatedValue(); // Log.e("TAG", "=========== animatedValue == " + animatedValue); // ViewGroup.LayoutParams layoutParams = icon.getLayoutParams(); // layoutParams.width = (int) (animatedValue * 1000); // layoutParams.height = (int) (animatedValue * 1000); // icon.setLayoutParams(layoutParams); // icon.setAlpha(animatedValue); // } // }); // valueAnimator.start(); //ObjectAnimator的用法 //透明度变化 // ObjectAnimator alphaObjectAnimator = ObjectAnimator.ofFloat(icon, "alpha", 0f, 1f, 0.5f); // alphaObjectAnimator.setDuration(2000) // .start(); // // ObjectAnimator scaleXObjectAnimator = ObjectAnimator.ofFloat(icon, "scaleX",0f,1f,0.5f); // scaleXObjectAnimator.setDuration(2000) // .start(); // // ObjectAnimator translationXObjectAnimator = ObjectAnimator.ofFloat(icon, "translationX",0f,1000f); // translationXObjectAnimator.setDuration(2000) // .start(); // // ObjectAnimator rotationObjectAnimator = ObjectAnimator.ofFloat(icon, "rotation",0f,-360f); // rotationObjectAnimator.setDuration(2000); // rotationObjectAnimator.setRepeatCount(3); // rotationObjectAnimator.setRepeatMode(ValueAnimator.REVERSE); // rotationObjectAnimator.addListener(new Animator.AnimatorListener() { // @Override // public void onAnimationStart(Animator animation) { // // } // // @Override // public void onAnimationEnd(Animator animation) { // // } // // @Override // public void onAnimationCancel(Animator animation) { // // } // // @Override // public void onAnimationRepeat(Animator animation) { // // } // }); // rotationObjectAnimator.start(); //ViewPropertyAnimator的用法 // icon.animate().alpha(0.5f) // .translationX(100f) // .rotation(180) // .scaleX(2) // .scaleY(2) // .setStartDelay(2000) // .setDuration(3000); //AnimatorSet 组合动画 // AnimatorSet animatorSet = new AnimatorSet(); // ObjectAnimator alphaObjectAnimator = ObjectAnimator.ofFloat(icon, "alpha", 0f, 1f, 0.5f); // ObjectAnimator scaleXObjectAnimator = ObjectAnimator.ofFloat(icon, "scaleX", 0f, 1f, 0.5f); // animatorSet.play(alphaObjectAnimator).with(scaleXObjectAnimator); // animatorSet.playTogether(alphaObjectAnimator,scaleXObjectAnimator); // animatorSet.playSequentially(alphaObjectAnimator, scaleXObjectAnimator); // animatorSet.setDuration(3000); // animatorSet.start(); //ObjectAnimator也可以来实现组合动画 // PropertyValuesHolder alphaXPropertyValuesHolder = PropertyValuesHolder.ofFloat("alpha", 0f, 1f, 0.5f); // PropertyValuesHolder scaleXPropertyValuesHolder = PropertyValuesHolder.ofFloat("scaleX", 1f, 2f); // ObjectAnimator rotationObjectAnimator = ObjectAnimator.ofPropertyValuesHolder(icon, alphaXPropertyValuesHolder, scaleXPropertyValuesHolder); // rotationObjectAnimator.setDuration(2000); // rotationObjectAnimator.start(); //用valueAnimator实现组合动画 // ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f); // valueAnimator.setDuration(2000); // valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // @Override // public void onAnimationUpdate(ValueAnimator animation) { // float animatedValue = (float) animation.getAnimatedValue(); // ViewGroup.LayoutParams layoutParams = icon.getLayoutParams(); // layoutParams.width = (int) (animatedValue * 300); // layoutParams.height = (int) (animatedValue * 300); // icon.setLayoutParams(layoutParams); // icon.setAlpha(animatedValue); // } // }); // valueAnimator.start(); //用AnimatorInflater去加载ValueAnimator对应的xml文件 // ValueAnimator valueAnimator = (ValueAnimator)AnimatorInflater.loadAnimator(this, R.animator.value_animator); // valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // @Override // public void onAnimationUpdate(ValueAnimator animation) { // float animatedValue = (float) animation.getAnimatedValue(); // icon.setAlpha(animatedValue); // } // }); // valueAnimator.setDuration(3000); // valueAnimator.start(); //用AnimatorInflater去加载ObjectAnimator对应的xml文件 // ObjectAnimator objectAnimator = (ObjectAnimator)AnimatorInflater.loadAnimator(this, R.animator.object_animator); // objectAnimator.setDuration(3000); // objectAnimator.setTarget(icon); // objectAnimator.start(); //用AnimatorInflater去加载AnimatorSet对应的xml文件 // Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animator_set); // animator.setTarget(icon); // animator.start(); //利用ValueAnimator进行颜色变化动画 // ValueAnimator valueAnimator; // if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { // valueAnimator = ValueAnimator.ofArgb(0xffff0000, 0xff0000ff, 0xff00ff00); // valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // @Override // public void onAnimationUpdate(ValueAnimator animation) { // int colorValue = (int) animation.getAnimatedValue(); // container.setBackgroundColor(colorValue); // } // }); // valueAnimator.setDuration(2000); // valueAnimator.start(); // } Point startPoint = new Point(0, 0); Point endPoint = new Point(1000, 1000); //fraction是一个从0到1变化的值 ValueAnimator valueAnimator = ValueAnimator.ofObject(new TypeEvaluator<Point>() { @Override public Point evaluate(float fraction, Point startValue, Point endValue) { float startX = startValue.getX(); float endX = endValue.getX(); float currentX = startX + fraction * (endX - startX); float startY = startValue.getY(); float endY = endValue.getY(); float currentY = startY + fraction * (endY - startY); return new Point(currentX, currentY); } }, startPoint, endPoint); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Point point = (Point) animation.getAnimatedValue(); } }); } }
转载请注明原文地址: https://www.6miu.com/read-79853.html

最新回复(0)