package com.google.mcommerce.sample.android.chapter13.property;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.animation.Keyframe;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.app.Activity;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.Button;
import android.widget.TextView;
import com.google.mcommerce.sample.android.R;
public class TestPropertyAnimationActivity extends Activity {
private static String tag = "My activity";
private TextView m_tv = null;
private MyAnimatableView m_atv = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.c13_property_main);
gatherControls();
}
private void gatherControls() {
m_tv = (TextView) this.findViewById(R.id.tv_id);
m_atv = new MyAnimatableView(m_tv);
}
public void toggleAnimation(View btnView) {
Button tButton = (Button) btnView;
if (m_tv.getAlpha() != 0) {
ObjectAnimator fadeOut = ObjectAnimator.ofFloat(m_tv, "alpha", 0f);
fadeOut.setDuration(5000);
fadeOut.start();
tButton.setText("Fade In");
} else {
ObjectAnimator fadeIn = ObjectAnimator.ofFloat(m_tv, "alpha", 1f);
fadeIn.setDuration(5000);
fadeIn.start();
tButton.setText("Fade out");
}
}
public void sequentialAnimation(View bView) {
m_tv.setAlpha(1f);
ObjectAnimator fadeOut = ObjectAnimator.ofFloat(m_tv, "alpha", 0f);
ObjectAnimator fadeIn = ObjectAnimator.ofFloat(m_tv, "alpha", 1f);
AnimatorSet as = new AnimatorSet();
as.playSequentially(fadeOut, fadeIn);
as.setDuration(5000); // 5 secs
as.start();
}
public void sequentialAnimationXML(View bView) {
m_tv.setAlpha(1f);
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this,
R.animator.fadein);
set.setTarget(m_tv);
set.start();
}
public void testAnimationBuilder(View v) {
m_tv.setAlpha(1f);
ObjectAnimator fadeOut = ObjectAnimator.ofFloat(m_tv, "alpha", 0f);
ObjectAnimator fadeIn = ObjectAnimator.ofFloat(m_tv, "alpha", 1f);
AnimatorSet as = new AnimatorSet();
as.play(fadeOut).before(fadeIn);
as.setDuration(2000); // 2 secs
as.start();
}
public void testPropertiesHolder(View v) {
m_tv.setAlpha(1f);
float h = m_tv.getHeight();
float w = m_tv.getWidth();
float x = m_tv.getX();
float y = m_tv.getY();
m_tv.setX(w);
m_tv.setY(h);
// Go to 50 on x
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", x);
// Go to 100 on y
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", y);
ObjectAnimator oa = ObjectAnimator.ofPropertyValuesHolder(m_tv, pvhX,
pvhY);
oa.setDuration(5000); // 2 secs
oa.setInterpolator(new AccelerateDecelerateInterpolator());
oa.start();
}
public void testViewAnimator(View v) {
m_tv.setAlpha(1f);
float h = m_tv.getHeight();
float w = m_tv.getWidth();
float x = m_tv.getX();
float y = m_tv.getY();
m_tv.setX(w);
m_tv.setY(h);
ViewGroup layout = (ViewGroup) m_tv.getParent();
layout.setClipChildren(true);
// Go to 50 on x
ViewPropertyAnimator vpa = m_tv.animate();
vpa.x(x);
vpa.y(y);
vpa.setDuration(5000); // 2 secs
vpa.setInterpolator(new AccelerateDecelerateInterpolator());
// vpa.start();
}
public void testTypeEvaluator(View v) {
m_tv.setAlpha(1f);
float h = m_tv.getHeight();
float w = m_tv.getWidth();
float x = m_tv.getX();
float y = m_tv.getY();
ObjectAnimator tea = ObjectAnimator.ofObject(m_atv, "point",
new MyPointEvaluator(), new PointF(w, h), new PointF(x, y));
tea.setDuration(5000);
tea.start();
}
public void testKeyFrames(View v) {
m_tv.setAlpha(1f);
float h = m_tv.getHeight();
float w = m_tv.getWidth();
float x = m_tv.getX();
float y = m_tv.getY();
// Start frame : 0.2
// alpha: 0.8
Keyframe kf0 = Keyframe.ofFloat(0.2f, 0.8f);
// Middle frame: 0.5
// alpha: 0.2
Keyframe kf1 = Keyframe.ofFloat(.5f, 0.2f);
// end frame: 0.8
// alpha: 0.8
Keyframe kf2 = Keyframe.ofFloat(0.8f, 0.8f);
PropertyValuesHolder pvhAlpha = PropertyValuesHolder.ofKeyframe(
"alpha", kf0, kf1, kf2);
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", w, x);
// end frame
ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(m_tv,
pvhAlpha, pvhX);
anim.setDuration(5000);
anim.start();
}
}