是的,Android的AnimatorSet
可以實現路徑動畫。你可以使用PathMeasure
和PathAnimator
來創建和顯示沿路徑的動畫。以下是一個簡單的示例:
<View
android:id="@+id/my_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.PathAnimator;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils;
import androidx.appcompat.app.AppCompatActivity;
public class PathAnimationActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_path_animation);
View myView = findViewById(R.id.my_view);
// 創建路徑
Path path = new Path();
path.moveTo(50, 50);
path.lineTo(150, 150);
path.lineTo(250, 50);
// 計算路徑長度
PathMeasure pathMeasure = new PathMeasure(path, false);
float pathLength = pathMeasure.getLength();
// 創建PathAnimator
PathAnimator pathAnimator = new PathAnimator(myView, path, pathLength);
pathAnimator.setDuration(2000);
pathAnimator.setRepeatCount(PathAnimator.INFINITE);
pathAnimator.setRepeatMode(PathAnimator.RESTART);
// 添加動畫監聽器
pathAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float animatedPosition = (float) animation.getAnimatedValue();
pathMeasure.getPosTan(animatedPosition, pos, tan);
myView.setTranslationX(pos[0]);
myView.setTranslationY(pos[1]);
}
});
// 啟動動畫
pathAnimator.start();
}
}
這個示例中,我們創建了一個簡單的路徑,然后使用PathAnimator
使其沿著路徑移動。PathAnimator
的setDuration()
方法用于設置動畫持續時間,setRepeatCount()
和setRepeatMode()
方法用于設置重復次數和模式。