在Android中为视图设置动画并使其保持新的位置/大小,可以使用以下方法:
ViewPropertyAnimator
:ViewPropertyAnimator
是一个用于创建和执行视图属性动画的类。它允许您在动画期间更改视图的位置、大小、透明度等属性。以下是一个示例:
View view = findViewById(R.id.my_view);
view.animate()
.translationX(newPositionX)
.translationY(newPositionY)
.scaleX(newScaleX)
.scaleY(newScaleY)
.setDuration(animationDuration)
.start();
在这个例子中,newPositionX
和newPositionY
是视图在动画结束后的新位置,newScaleX
和newScaleY
是视图在动画结束后的新大小,animationDuration
是动画的持续时间(以毫秒为单位)。
ObjectAnimator
:ObjectAnimator
是一个用于创建和执行对象动画的类。它允许您更改视图的位置、大小、透明度等属性。以下是一个示例:
View view = findViewById(R.id.my_view);
ObjectAnimator animatorX = ObjectAnimator.ofFloat(view, "translationX", newPositionX);
ObjectAnimator animatorY = ObjectAnimator.ofFloat(view, "translationY", newPositionY);
ObjectAnimator animatorScaleX = ObjectAnimator.ofFloat(view, "scaleX", newScaleX);
ObjectAnimator animatorScaleY = ObjectAnimator.ofFloat(view, "scaleY", newScaleY);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animatorX, animatorY, animatorScaleX, animatorScaleY);
animatorSet.setDuration(animationDuration);
animatorSet.start();
在这个例子中,newPositionX
和newPositionY
是视图在动画结束后的新位置,newScaleX
和newScaleY
是视图在动画结束后的新大小,animationDuration
是动画的持续时间(以毫秒为单位)。
TransitionManager
:TransitionManager
是一个用于管理场景过渡动画的类。它允许您在更改视图的位置、大小、透明度等属性时创建自然的过渡效果。以下是一个示例:
View view = findViewById(R.id.my_view);
TransitionManager.go(new Scene(view), new ChangeBounds().setDuration(animationDuration));
在这个例子中,animationDuration
是动画的持续时间(以毫秒为单位)。
请注意,这些方法不会自动保持视图在动画结束后的新位置/大小。要实现这一点,您需要在动画结束后手动更新视图的布局参数。例如,您可以使用ViewGroup.MarginLayoutParams
来更新视图的布局参数:
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
layoutParams.leftMargin = newPositionX;
layoutParams.topMargin = newPositionY;
layoutParams.width = newWidth;
layoutParams.height = newHeight;
view.setLayoutParams(layoutParams);
这里的newWidth
和newHeight
是视图在动画结束后的新大小。
领取专属 10元无门槛券
手把手带您无忧上云