summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-27 03:31:59 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-27 03:31:59 -0400
commitdb9c3f2e9adb2763ff79aaed9b27df31c71dc735 (patch)
tree95c6420aa544ec4a87b181ab5523193be0c0790d
parent2397640740e053af7ef4aa742467f723186d5ad7 (diff)
parent7609764295d1b3ec0b53d1ae536ee0280f5e0407 (diff)
downloadframeworks_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.java3
-rw-r--r--core/java/android/widget/TabHost.java26
-rw-r--r--core/java/android/widget/TabWidget.java26
-rw-r--r--core/res/res/color/tab_indicator_text_v4.xml20
-rw-r--r--core/res/res/drawable-hdpi/tab_selected_bar_left_v4.9.pngbin0 -> 2820 bytes
-rw-r--r--core/res/res/drawable-hdpi/tab_selected_bar_right_v4.9.pngbin0 -> 2820 bytes
-rw-r--r--core/res/res/drawable-hdpi/tab_selected_v4.9.pngbin0 -> 2981 bytes
-rw-r--r--core/res/res/drawable-hdpi/tab_unselected_v4.9.pngbin0 -> 2979 bytes
-rw-r--r--core/res/res/drawable/tab_bottom_left_v4.xml21
-rw-r--r--core/res/res/drawable/tab_bottom_right_v4.xml21
-rw-r--r--core/res/res/drawable/tab_indicator_v4.xml28
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
new file mode 100644
index 0000000..109bbcd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_bar_left_v4.9.png
Binary files differ
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
new file mode 100644
index 0000000..109bbcd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_bar_right_v4.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected_v4.9.png b/core/res/res/drawable-hdpi/tab_selected_v4.9.png
new file mode 100644
index 0000000..2981ea5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_v4.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_unselected_v4.9.png b/core/res/res/drawable-hdpi/tab_unselected_v4.9.png
new file mode 100644
index 0000000..7a13b8a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_unselected_v4.9.png
Binary files differ
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>