在安卓系统中使用 SpringAnimation 制作视图运动的动画
原文:https://www . geesforgeks . org/animate-movements-of-view-using-spring animation-in-Android/
在安卓系统中,我们可以给物体的运动添加动画。我们可以为这些动作添加一些很酷的动画,而不仅仅是更新一个物体从一点到另一点的位置。安卓提供了很多方法,可以通过动画改变视图对象在屏幕上的位置。但是,这里我们要看一下春天动画。春季动画是基于安卓物理的动画应用编程接口的一部分。安卓弹簧动画允许你像弹簧一样动画视图的运动。动画是基于潮湿,僵硬,弹性等属性。一旦弹簧动画开始,在每一帧上,弹簧力将更新动画的值和速度。动画将继续运行,直到弹簧力达到平衡。
简单跳跃动画
下面给出了一个示例视频,以了解我们将在本文中做什么。注意,我们将使用 Java 语言来实现这个项目。
创建一个简单的春季动画真的很容易。以下是步骤: 1. **添加** **支持库** 2. **创建弹簧动画**的 **实例** 3. **设置运动** **行为参数** 4. **开始**T2 动画 ### **创建弹簧动画** 我们可以使用 **SpringAnimation** 类为一个对象创建一个弹簧动画。首先,我们想要创建一个 SpringAnimation 类的实例,并提供一个对象(动画的目标对象),一个我们想要制作动画的对象属性,以及动画的最终位置。View object = findViewById(R.id.image);
final SpringAnimation animation = new SpringAnimation(object, DynamicAnimation. TRANSLATION_Y, 0f);
dependencies {
def dynamicanimation_version = '1.0.0'
implementation "androidx.dynamicanimation:dynamicanimation:$dynamicanimation_version"
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
tools:context=".MainActivity">
<!-- Adding an ImageView for the animation -->
<ImageView
android:id="@+id/imageView"
android:layout_width="343dp"
android:layout_height="241dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:srcCompat="@drawable/ic_launcher_foreground" />
</androidx.constraintlayout.widget.ConstraintLayout>
import androidx.appcompat.app.AppCompatActivity;
import androidx.dynamicanimation.animation.DynamicAnimation;
import androidx.dynamicanimation.animation.SpringAnimation;
import androidx.dynamicanimation.animation.SpringForce;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Creating a view for the imageView
final View view =findViewById(R.id.imageView);
// Setting up a spring animation to animate the view
final SpringAnimation animation = new SpringAnimation(view, DynamicAnimation.TRANSLATION_Y,0f);
// Setting the damping ratio to create a high bouncing effect
animation.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_HIGH_BOUNCY);
// Setting the spring with a very low stiffness
animation.getSpring().setStiffness(SpringForce.STIFFNESS_VERY_LOW);
// Registering the AnimationEnd listener
// This will indicate the End of the animation
animation.addEndListener(new DynamicAnimation.OnAnimationEndListener() {
@Override
public void onAnimationEnd(DynamicAnimation animation1, boolean canceled, float value, float velocity) {
// set the image to the beginning of the Y axis
view.setY(50f);
// Again starting the animation
animation.animateToFinalPosition(500f);
}
});
// setting a OnClickListener to the view
// Starts the animation when the image is clicked
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// starts the animation
animation.animateToFinalPosition(500f);
}
});
}
}
版权属于:月萌API www.moonapi.com,转载请注明出处