diff options
author | Michael Jurka <mikejurka@google.com> | 2011-02-23 11:48:32 -0800 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2011-03-23 11:34:39 -0700 |
commit | 7ef959b9177e1e715b0afe010904455a3d961fc4 (patch) | |
tree | 271602f6c6c508a9275519eae373903c32dc8d54 /src/com/android/launcher2/CustomizeTrayTabHost.java | |
parent | 26976d9b53161f80faf822d482ac771b8621cf31 (diff) | |
download | android_packages_apps_Trebuchet-7ef959b9177e1e715b0afe010904455a3d961fc4.tar.gz android_packages_apps_Trebuchet-7ef959b9177e1e715b0afe010904455a3d961fc4.tar.bz2 android_packages_apps_Trebuchet-7ef959b9177e1e715b0afe010904455a3d961fc4.zip |
Setting tab bar widths automatically
- will make launcher adapt better to different screen sizes
- also, moved customization tray tab setup code from Launcher to CustomizeTrayTabHost
Change-Id: I27a1acdacd231150bf191548d155c0e94d855796
Diffstat (limited to 'src/com/android/launcher2/CustomizeTrayTabHost.java')
-rw-r--r-- | src/com/android/launcher2/CustomizeTrayTabHost.java | 112 |
1 files changed, 108 insertions, 4 deletions
diff --git a/src/com/android/launcher2/CustomizeTrayTabHost.java b/src/com/android/launcher2/CustomizeTrayTabHost.java index 76cfc84e8..3e0402509 100644 --- a/src/com/android/launcher2/CustomizeTrayTabHost.java +++ b/src/com/android/launcher2/CustomizeTrayTabHost.java @@ -16,20 +16,111 @@ package com.android.launcher2; +import com.android.launcher.R; +import com.android.launcher2.CustomizePagedView.CustomizationType; + import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.content.Context; +import android.content.res.Resources; import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; import android.widget.TabHost; +import android.widget.TabWidget; +import android.widget.TextView; + +public class CustomizeTrayTabHost extends TabHost implements LauncherTransitionable { + // tags for the customization tabs + private static final String WIDGETS_TAG = "widgets"; + private static final String APPLICATIONS_TAG = "applications"; + private static final String SHORTCUTS_TAG = "shortcuts"; + private static final String WALLPAPERS_TAG = "wallpapers"; -public class CustomizeTrayTabHost extends TabHost implements LauncherTransitionable { private boolean mFirstLayout = true; - public CustomizeTrayTabHost(Context context) { - super(context); - } + private final LayoutInflater mInflater; + private Context mContext; public CustomizeTrayTabHost(Context context, AttributeSet attrs) { super(context, attrs); + mContext = context; + mInflater = LayoutInflater.from(context); + } + + @Override + protected void onFinishInflate() { + setup(); + + final CustomizePagedView customizePagedView = + (CustomizePagedView) findViewById(R.id.customization_drawer_tab_contents); + + // Configure tabs + TabContentFactory contentFactory = new TabContentFactory() { + public View createTabContent(String tag) { + return customizePagedView; + } + }; + + TextView tabView; + TabWidget tabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs); + + tabView = (TextView) mInflater.inflate(R.layout.tab_widget_indicator, tabWidget, false); + tabView.setText(mContext.getString(R.string.widgets_tab_label)); + addTab(newTabSpec(WIDGETS_TAG).setIndicator(tabView).setContent(contentFactory)); + tabView = (TextView) mInflater.inflate(R.layout.tab_widget_indicator, tabWidget, false); + tabView.setText(mContext.getString(R.string.applications_tab_label)); + addTab(newTabSpec(APPLICATIONS_TAG) + .setIndicator(tabView).setContent(contentFactory)); + tabView = (TextView) mInflater.inflate(R.layout.tab_widget_indicator, tabWidget, false); + tabView.setText(mContext.getString(R.string.wallpapers_tab_label)); + addTab(newTabSpec(WALLPAPERS_TAG) + .setIndicator(tabView).setContent(contentFactory)); + tabView = (TextView) mInflater.inflate(R.layout.tab_widget_indicator, tabWidget, false); + tabView.setText(mContext.getString(R.string.shortcuts_tab_label)); + addTab(newTabSpec(SHORTCUTS_TAG) + .setIndicator(tabView).setContent(contentFactory)); + setOnTabChangedListener(new OnTabChangeListener() { + public void onTabChanged(String tabId) { + final CustomizePagedView.CustomizationType newType = + getCustomizeFilterForTabTag(tabId); + if (newType != customizePagedView.getCustomizationFilter()) { + // animate the changing of the tab content by fading pages in and out + final Resources res = getResources(); + final int duration = res.getInteger(R.integer.config_tabTransitionTime); + final float alpha = customizePagedView.getAlpha(); + ValueAnimator alphaAnim = ObjectAnimator.ofFloat(customizePagedView, + "alpha", alpha, 0.0f); + alphaAnim.setDuration(duration); + alphaAnim.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + customizePagedView.setCustomizationFilter(newType); + + final float alpha = customizePagedView.getAlpha(); + ValueAnimator alphaAnim = ObjectAnimator.ofFloat( + customizePagedView, "alpha", alpha, 1.0f); + alphaAnim.setDuration(duration); + alphaAnim.start(); + } + }); + alphaAnim.start(); + } + } + }); + + // Set the width of the tab bar properly + int pageWidth = customizePagedView.getPageContentWidth(); + TabWidget customizeTabBar = (TabWidget) findViewById(com.android.internal.R.id.tabs); + if (customizeTabBar == null) throw new Resources.NotFoundException(); + int tabWidgetPadding = 0; + final int childCount = tabWidget.getChildCount(); + if (childCount > 0) { + tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2; + } + customizeTabBar.getLayoutParams().width = pageWidth + tabWidgetPadding; } @Override @@ -57,4 +148,17 @@ public class CustomizeTrayTabHost extends TabHost implements LauncherTransitiona mFirstLayout = false; super.onLayout(changed, l, t, r, b); } + + CustomizationType getCustomizeFilterForTabTag(String tag) { + if (tag.equals(WIDGETS_TAG)) { + return CustomizationType.WidgetCustomization; + } else if (tag.equals(APPLICATIONS_TAG)) { + return CustomizationType.ApplicationCustomization; + } else if (tag.equals(WALLPAPERS_TAG)) { + return CustomizePagedView.CustomizationType.WallpaperCustomization; + } else if (tag.equals(SHORTCUTS_TAG)) { + return CustomizePagedView.CustomizationType.ShortcutCustomization; + } + return CustomizationType.WidgetCustomization; + } } |