am 3077f7df: am 1296d562: Merge change I8b63ab66 into eclair

Merge commit '3077f7df2eaf4127438d4337a9a25766261b02ee' into eclair-mr2-plus-aosp

* commit '3077f7df2eaf4127438d4337a9a25766261b02ee':
  Better animation for sliding widget.
This commit is contained in:
Jim Miller
2009-12-04 00:53:48 -08:00
committed by Android Git Automerger

View File

@@ -433,9 +433,16 @@ public class SlidingTab extends ViewGroup {
return tab.getMeasuredHeight();
}
public void startAnimation(Animation animation) {
tab.startAnimation(animation);
text.startAnimation(animation);
/**
* Start animating the slider. Note we need two animations since an Animator
* keeps internal state of the invalidation region which is just the view being animated.
*
* @param anim1
* @param anim2
*/
public void startAnimation(Animation anim1, Animation anim2) {
tab.startAnimation(anim1);
text.startAnimation(anim2);
}
public void hideTarget() {
@@ -620,7 +627,8 @@ public class SlidingTab extends ViewGroup {
void startAnimating(final boolean holdAfter) {
mAnimating = true;
final Animation trans;
final Animation trans1;
final Animation trans2;
final Slider slider = mCurrentSlider;
final Slider other = mOtherSlider;
final int dx;
@@ -644,12 +652,16 @@ public class SlidingTab extends ViewGroup {
dy = slider == mRightSlider ? (top + viewHeight - holdOffset)
: - ((viewHeight - bottom) + viewHeight - holdOffset);
}
trans = new TranslateAnimation(0, dx, 0, dy);
trans.setDuration(ANIM_DURATION);
trans.setInterpolator(new LinearInterpolator());
trans.setFillAfter(true);
trans1 = new TranslateAnimation(0, dx, 0, dy);
trans1.setDuration(ANIM_DURATION);
trans1.setInterpolator(new LinearInterpolator());
trans1.setFillAfter(true);
trans2 = new TranslateAnimation(0, dx, 0, dy);
trans2.setDuration(ANIM_DURATION);
trans2.setInterpolator(new LinearInterpolator());
trans2.setFillAfter(true);
trans.setAnimationListener(new AnimationListener() {
trans1.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
Animation anim;
if (holdAfter) {
@@ -662,8 +674,10 @@ public class SlidingTab extends ViewGroup {
resetView();
}
anim.setAnimationListener(mAnimationDoneListener);
mLeftSlider.startAnimation(anim);
mRightSlider.startAnimation(anim);
/* Animation can be the same for these since the animation just holds */
mLeftSlider.startAnimation(anim, anim);
mRightSlider.startAnimation(anim, anim);
}
public void onAnimationRepeat(Animation animation) {
@@ -677,7 +691,7 @@ public class SlidingTab extends ViewGroup {
});
slider.hideTarget();
slider.startAnimation(trans);
slider.startAnimation(trans1, trans2);
}
private void onAnimationDone() {