您的位置:首页 > 移动开发 > Android开发

Android 属性动画的简单使用

2018-01-16 10:04 375 查看
首先一个小布局

<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) {

}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: