Android Studioプロパティアニメーション
27455 ワード
コードディスプレイ
package com.example.day2;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.AnticipateInterpolator;
import android.widget.TextView;
import android.widget.Toast;
public class PropertyActivity extends AppCompatActivity {
TextView text;
int count = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_property);
text = findViewById(R.id.text);
}
public void btn(View view) {
switch (view.getId()) {
case R.id.alpha:
alphaProperty();
break;
case R.id.rotate:
rotateProperty();
break;
case R.id.scale:
scaleProperty();
break;
case R.id.traslate:
traslateProperty();
break;
case R.id.coloe:
coloeProperty();
break;
case R.id.set:
setProperty();
break;
}
}
private void setProperty() {
final ValueAnimator valueAnimator = ValueAnimator.ofObject(new MyTypeEvaluator(), 1f, 20f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Float animatedValue = (Float) valueAnimator.getAnimatedValue();
text.setText(animatedValue + "");
}
});
valueAnimator.setDuration(5000);
valueAnimator.start();
}
private void coloeProperty() {
ObjectAnimator objectAnimator = ObjectAnimator.ofInt(text, "backgroundColor", Color.BLUE, Color.RED);
objectAnimator.setDuration(5000);
objectAnimator.setRepeatCount(3);
objectAnimator.start();
}
private void traslateProperty() {
float translationY = text.getTranslationY();
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(text, "translationY", translationY, translationY + 100);
objectAnimator.setDuration(5000);
objectAnimator.start();
}
private void scaleProperty() {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(text, "scaleX", 1f, 3f);
objectAnimator.setDuration(5000);
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
//
ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(text, "scaleX", 1f, 3f);
objectAnimator1.setDuration(5000);
objectAnimator1.start();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
objectAnimator.start();
}
//
private void rotateProperty() {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(text, "rotation", 0, 360);
objectAnimator.setDuration(5000);
objectAnimator.setRepeatMode(ObjectAnimator.REVERSE);
objectAnimator.setInterpolator(new AnticipateInterpolator());
objectAnimator.start();
}
// xml
private void alphaProperty() {
//
ValueAnimator animator = (ValueAnimator) AnimatorInflater.loadAnimator(this, R.animator.ampha);
// view
animator.setTarget(text);
animator.setDuration(5000);
animator.setRepeatCount(3);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
Toast.makeText(PropertyActivity.this, " ", Toast.LENGTH_SHORT).show();
}
@Override
public void onAnimationEnd(Animator animation) {
Toast.makeText(PropertyActivity.this, " ", Toast.LENGTH_SHORT).show();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
Toast.makeText(PropertyActivity.this, "count = " + (count++), Toast.LENGTH_SHORT).show();
}
});
animator.start();
}
}