diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-27 03:31:59 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-27 03:31:59 -0400 |
commit | db9c3f2e9adb2763ff79aaed9b27df31c71dc735 (patch) | |
tree | 95c6420aa544ec4a87b181ab5523193be0c0790d | |
parent | 2397640740e053af7ef4aa742467f723186d5ad7 (diff) | |
parent | 7609764295d1b3ec0b53d1ae536ee0280f5e0407 (diff) | |
download | frameworks_base-db9c3f2e9adb2763ff79aaed9b27df31c71dc735.zip frameworks_base-db9c3f2e9adb2763ff79aaed9b27df31c71dc735.tar.gz frameworks_base-db9c3f2e9adb2763ff79aaed9b27df31c71dc735.tar.bz2 |
Merge change 27188 into eclair
* changes:
Fix 2146581: Make tabs work for donut apps Use different tab assets with the original coloring scheme for apps that are not Eclair-aware.
-rw-r--r-- | core/java/android/os/Build.java | 3 | ||||
-rw-r--r-- | core/java/android/widget/TabHost.java | 26 | ||||
-rw-r--r-- | core/java/android/widget/TabWidget.java | 26 | ||||
-rw-r--r-- | core/res/res/color/tab_indicator_text_v4.xml | 20 | ||||
-rw-r--r-- | core/res/res/drawable-hdpi/tab_selected_bar_left_v4.9.png | bin | 0 -> 2820 bytes | |||
-rw-r--r-- | core/res/res/drawable-hdpi/tab_selected_bar_right_v4.9.png | bin | 0 -> 2820 bytes | |||
-rw-r--r-- | core/res/res/drawable-hdpi/tab_selected_v4.9.png | bin | 0 -> 2981 bytes | |||
-rw-r--r-- | core/res/res/drawable-hdpi/tab_unselected_v4.9.png | bin | 0 -> 2979 bytes | |||
-rw-r--r-- | core/res/res/drawable/tab_bottom_left_v4.xml | 21 | ||||
-rw-r--r-- | core/res/res/drawable/tab_bottom_right_v4.xml | 21 | ||||
-rw-r--r-- | core/res/res/drawable/tab_indicator_v4.xml | 28 |
11 files changed, 134 insertions, 11 deletions
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index b4778fe..b9f78a1 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -146,6 +146,9 @@ public class Build { * <li> The {@link android.app.Activity} class will now execute back * key presses on the key up instead of key down, to be able to detect * canceled presses from virtual keys. + * <li> The {@link android.widget.TabWidget} class will use a new color scheme + * for tabs. In the new scheme, the foreground tab has a medium gray background + * the background tabs have a dark gray background. * </ul> */ public static final int ECLAIR = CUR_DEVELOPMENT; diff --git a/core/java/android/widget/TabHost.java b/core/java/android/widget/TabHost.java index ee3b91e..31920e7 100644 --- a/core/java/android/widget/TabHost.java +++ b/core/java/android/widget/TabHost.java @@ -20,6 +20,7 @@ import android.app.LocalActivityManager; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.os.Build; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -28,11 +29,12 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; -import com.android.internal.R; import java.util.ArrayList; import java.util.List; +import com.android.internal.R; + /** * Container for a tabbed window view. This object holds two children: a set of tab labels that the * user clicks to select a specific tab, and a FrameLayout object that displays the contents of that @@ -497,17 +499,22 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1"); } public View createIndicatorView() { + final Context context = getContext(); LayoutInflater inflater = - (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View tabIndicator = inflater.inflate(R.layout.tab_indicator, mTabWidget, // tab widget is the parent false); // no inflate params - // TODO: Move this to xml when bug 2068024 is resolved. - tabIndicator.getBackground().setDither(true); final TextView tv = (TextView) tabIndicator.findViewById(R.id.title); tv.setText(mLabel); + if (context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.DONUT) { + // Donut apps get old color scheme + tabIndicator.setBackgroundResource(R.drawable.tab_indicator_v4); + tv.setTextColor(context.getResources().getColorStateList(R.color.tab_indicator_text_v4)); + } + return tabIndicator; } } @@ -526,13 +533,12 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1"); } public View createIndicatorView() { + final Context context = getContext(); LayoutInflater inflater = - (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View tabIndicator = inflater.inflate(R.layout.tab_indicator, mTabWidget, // tab widget is the parent false); // no inflate params - // TODO: Move this to xml when bug 2068024 is resolved. - tabIndicator.getBackground().setDither(true); final TextView tv = (TextView) tabIndicator.findViewById(R.id.title); tv.setText(mLabel); @@ -540,6 +546,12 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1"); final ImageView iconView = (ImageView) tabIndicator.findViewById(R.id.icon); iconView.setImageDrawable(mIcon); + if (context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.DONUT) { + // Donut apps get old color scheme + tabIndicator.setBackgroundResource(R.drawable.tab_indicator_v4); + tv.setTextColor(context.getResources().getColorStateList(R.color.tab_indicator_text_v4)); + } + return tabIndicator; } } diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java index 889f37f..2ba6268 100644 --- a/core/java/android/widget/TabWidget.java +++ b/core/java/android/widget/TabWidget.java @@ -16,11 +16,15 @@ package android.widget; +import com.android.internal.R; + import android.content.Context; +import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.os.Build; import android.util.AttributeSet; import android.util.Log; import android.view.View; @@ -94,10 +98,24 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { setOrientation(LinearLayout.HORIZONTAL); mGroupFlags |= FLAG_USE_CHILD_DRAWING_ORDER; - mBottomLeftStrip = mContext.getResources().getDrawable( - com.android.internal.R.drawable.tab_bottom_left); - mBottomRightStrip = mContext.getResources().getDrawable( - com.android.internal.R.drawable.tab_bottom_right); + final Context context = mContext; + final Resources resources = context.getResources(); + + if (context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.DONUT) { + // Donut apps get old color scheme + mBottomLeftStrip = resources.getDrawable( + com.android.internal.R.drawable.tab_bottom_left_v4); + mBottomRightStrip = resources.getDrawable( + com.android.internal.R.drawable.tab_bottom_right_v4); + } else { + // Use modern color scheme for Eclair and beyond + mBottomLeftStrip = resources.getDrawable( + com.android.internal.R.drawable.tab_bottom_left); + mBottomRightStrip = resources.getDrawable( + com.android.internal.R.drawable.tab_bottom_right); + } + + // Deal with focus, as we don't want the focus to go by default // to a tab other than the current tab setFocusable(true); diff --git a/core/res/res/color/tab_indicator_text_v4.xml b/core/res/res/color/tab_indicator_text_v4.xml new file mode 100644 index 0000000..4f4e394 --- /dev/null +++ b/core/res/res/color/tab_indicator_text_v4.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_selected="true" android:color="#808080"/> + <item android:color="#FFFFFF"/> <!-- not selected --> +</selector> diff --git a/core/res/res/drawable-hdpi/tab_selected_bar_left_v4.9.png b/core/res/res/drawable-hdpi/tab_selected_bar_left_v4.9.png Binary files differnew file mode 100644 index 0000000..109bbcd --- /dev/null +++ b/core/res/res/drawable-hdpi/tab_selected_bar_left_v4.9.png diff --git a/core/res/res/drawable-hdpi/tab_selected_bar_right_v4.9.png b/core/res/res/drawable-hdpi/tab_selected_bar_right_v4.9.png Binary files differnew file mode 100644 index 0000000..109bbcd --- /dev/null +++ b/core/res/res/drawable-hdpi/tab_selected_bar_right_v4.9.png diff --git a/core/res/res/drawable-hdpi/tab_selected_v4.9.png b/core/res/res/drawable-hdpi/tab_selected_v4.9.png Binary files differnew file mode 100644 index 0000000..2981ea5 --- /dev/null +++ b/core/res/res/drawable-hdpi/tab_selected_v4.9.png diff --git a/core/res/res/drawable-hdpi/tab_unselected_v4.9.png b/core/res/res/drawable-hdpi/tab_unselected_v4.9.png Binary files differnew file mode 100644 index 0000000..7a13b8a --- /dev/null +++ b/core/res/res/drawable-hdpi/tab_unselected_v4.9.png diff --git a/core/res/res/drawable/tab_bottom_left_v4.xml b/core/res/res/drawable/tab_bottom_left_v4.xml new file mode 100644 index 0000000..0aee288 --- /dev/null +++ b/core/res/res/drawable/tab_bottom_left_v4.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" android:drawable="@drawable/tab_press_bar_left"/> + <item android:state_focused="false" android:drawable="@drawable/tab_selected_bar_left_v4"/> + <item android:state_focused="true" android:drawable="@drawable/tab_focus_bar_left"/> +</selector> diff --git a/core/res/res/drawable/tab_bottom_right_v4.xml b/core/res/res/drawable/tab_bottom_right_v4.xml new file mode 100644 index 0000000..64227dd --- /dev/null +++ b/core/res/res/drawable/tab_bottom_right_v4.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" android:drawable="@drawable/tab_press_bar_right"/> + <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/tab_selected_bar_right_v4"/> + <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/tab_focus_bar_right"/> +</selector> diff --git a/core/res/res/drawable/tab_indicator_v4.xml b/core/res/res/drawable/tab_indicator_v4.xml new file mode 100644 index 0000000..b1e3c9c --- /dev/null +++ b/core/res/res/drawable/tab_indicator_v4.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- Non focused states --> + <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_v4" /> + <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_v4" /> + + <!-- Focused states --> + <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> + <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" /> + + <!-- Pressed --> + <item android:state_pressed="true" android:drawable="@drawable/tab_press" /> +</selector> |