在Android中,你可以使用属性动画(Property Animation)来实现自定义的插入(inset)动画。属性动画允许你创建复杂的动画效果,而不仅仅是简单的平移、旋转和缩放。以下是一个简单的示例,展示了如何使用属性动画实现自定义的插入动画:
build.gradle文件中添加以下依赖:dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' } TextView:<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> import android.animation.Animator; import android.animation.AnimatorInflater; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ConstraintLayout constraintLayout = findViewById(R.id.constraintLayout); TextView textView = findViewById(R.id.textView); // 加载动画资源 AnimatorInflater animatorInflater = AnimatorInflater.loadAnimator(this, R.animator.custom_inset_animation); Animator animator = animatorInflater.inflate(); // 设置动画目标 animator.setTarget(textView); // 开始动画 animator.start(); } } res/animator目录下(如果没有该目录,请创建一个),创建一个名为custom_inset_animation.xml的动画文件,并添加以下内容:<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0%p" android:toXDelta="-50%p" android:duration="1000" /> <scale android:fromXScale="1.0" android:toXScale="0.5" android:fromYScale="1.0" android:toYScale="0.5" android:pivotX="50%" android:pivotY="50%" android:duration="1000" /> <translate android:fromXDelta="-50%p" android:toXDelta="0%p" android:startOffset="1000" android:duration="1000" /> <scale android:fromXScale="0.5" android:toXScale="1.0" android:fromYScale="0.5" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="1000" android:duration="1000" /> </set> 这个示例中的动画效果是先向左移动50%,然后缩小到50%,接着向右移动50%,最后恢复到原始大小。你可以根据需要修改这个动画文件以实现你想要的效果。