Android 属性动画的简单使用
程序员文章站
2024-03-25 23:50:34
...
首先一个小布局
<LinearLayout 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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.dash.a14_value_animator.MainActivity">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:text="X"
android:onClick="translate"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="旋转"
android:onClick="rotate"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="透明度"
android:onClick="alpha"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="缩放"
android:onClick="scale"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="组合"
android:onClick="zuhe"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
<ImageView
android:layout_gravity="center"
android:id="@+id/image_view"
android:src="@mipmap/ic_launcher_round"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
剩下就是做代码操作了
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"点击了",Toast.LENGTH_SHORT).show();
}
});
}
public void translate(View view) {
//X...Y...
// Object target动画设置给的目标对象, String propertyName要改变对象哪个属性值, float...values 可变参数(当做数组来用))
ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "Y", 0, 300,400,600,900,1500);
//设置插值器,,,可以不设置,默认是线性匀速
animator.setInterpolator(new AccelerateInterpolator());
//设置时间
animator.setDuration(5000);
animator.start();
}
public void rotate(View view) {
//旋转
ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "rotationY", 0,360);
//设置时间
animator.setDuration(5000);
animator.start();
}
public void alpha(View view) {
// 透明度
ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "alpha", 0, 1);
alpha.setDuration(3000);
alpha.start();
}
public void scale(View view) {
// 缩放
ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "scaleX", 1, 3);
alpha.setDuration(3000);
alpha.start();
}
public void zuhe(View view) {
ObjectAnimator y = ObjectAnimator.ofFloat(imageView, "Y", 0, 500, 800, 1300);
ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "alpha", 0.5f, 1);
ObjectAnimator rotationX = ObjectAnimator.ofFloat(imageView, "rotationX", 0, 360);
ObjectAnimator rotationY = ObjectAnimator.ofFloat(imageView, "rotationY", 0, 360);
ObjectAnimator scaleX = ObjectAnimator.ofFloat(imageView, "scaleX", 0.5f, 2);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(imageView, "scaleY", 0.5f, 2);
//组合
AnimatorSet animatorSet = new AnimatorSet();
//放到一起
animatorSet.play(y).with(alpha).with(rotationX).with(rotationY).with(scaleX).with(scaleY);
animatorSet.setDuration(5000);
animatorSet.start();
animatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
//动画结束跳转页面
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
}
}