diff options
author | Michael Kolb <kolby@google.com> | 2011-01-25 13:18:55 -0800 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-01-25 15:31:20 -0800 |
commit | 2d59c32ee3fc1ed92d57609998f0430ad7695317 (patch) | |
tree | 391110fa21a6d7c74036b7ddbea36556b6fd4b1b /src/com/android/browser/TabBar.java | |
parent | 8f2790daeaef7e29dfffbbb4259eabe0baa8833e (diff) | |
download | android_packages_apps_Gello-2d59c32ee3fc1ed92d57609998f0430ad7695317.tar.gz android_packages_apps_Gello-2d59c32ee3fc1ed92d57609998f0430ad7695317.tar.bz2 android_packages_apps_Gello-2d59c32ee3fc1ed92d57609998f0430ad7695317.zip |
add tab bar animations
http://b/issue?id=3281119
added in/out animations for tabs
Change-Id: Ia8a467b93e5bc14b8b84cfe7b7e25ffbfadc7209
Diffstat (limited to 'src/com/android/browser/TabBar.java')
-rw-r--r-- | src/com/android/browser/TabBar.java | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index 1ab02edd..301165ac 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -18,6 +18,10 @@ package com.android.browser; import com.android.browser.ScrollWebView.ScrollListener; +import android.animation.Animator; +import android.animation.Animator.AnimatorListener; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.content.res.Resources; @@ -151,6 +155,7 @@ public class TabBar extends LinearLayout mTabMap.clear(); for (Tab tab : tabs) { TabView tv = buildTabView(tab); + mTabs.addTab(tv); } mTabs.setSelectedTab(mTabControl.getCurrentIndex()); } @@ -286,7 +291,6 @@ public class TabBar extends LinearLayout TabView tabview = new TabView(mActivity, tab); mTabMap.put(tab, tabview); tabview.setOnClickListener(this); - mTabs.addTab(tabview); return tabview; } @@ -500,6 +504,62 @@ public class TabBar extends LinearLayout return d; } + private void animateTabOut(final Tab tab, final TabView tv) { + ObjectAnimator scalex = ObjectAnimator.ofFloat(tv, "scaleX", 1.0f, 0.0f); + ObjectAnimator scaley = ObjectAnimator.ofFloat(tv, "scaleY", 1.0f, 0.0f); + AnimatorSet animator = new AnimatorSet(); + animator.playTogether(scalex, scaley); + animator.setDuration(150); + animator.addListener(new AnimatorListener() { + + @Override + public void onAnimationCancel(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + mTabs.removeTab(tv); + mTabMap.remove(tab); + } + + @Override + public void onAnimationRepeat(Animator animation) { + } + + @Override + public void onAnimationStart(Animator animation) { + } + + }); + animator.start(); + } + + private void animateTabIn(final Tab tab, final TabView tv) { + ObjectAnimator scalex = ObjectAnimator.ofFloat(tv, "scaleX", 0f, 1.0f); + scalex.setDuration(150); + scalex.addListener(new AnimatorListener() { + + @Override + public void onAnimationCancel(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + } + + @Override + public void onAnimationRepeat(Animator animation) { + } + + @Override + public void onAnimationStart(Animator animation) { + mTabs.addTab(tv); + } + + }); + scalex.start(); + } + // TabChangeListener implementation public void onSetActiveTab(Tab tab) { @@ -526,6 +586,7 @@ public class TabBar extends LinearLayout public void onNewTab(Tab tab) { TabView tv = buildTabView(tab); + animateTabIn(tab, tv); } public void onProgress(Tab tab, int progress) { @@ -538,9 +599,10 @@ public class TabBar extends LinearLayout public void onRemoveTab(Tab tab) { TabView tv = mTabMap.get(tab); if (tv != null) { - mTabs.removeTab(tv); + animateTabOut(tab, tv); + } else { + mTabMap.remove(tab); } - mTabMap.remove(tab); } public void onUrlAndTitle(Tab tab, String url, String title) { |