diff options
Diffstat (limited to 'library')
-rw-r--r-- | library/build.gradle | 14 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_left_arrow_dark.png (renamed from library/ics/res/drawable-hdpi/suw_navbar_ic_left_arrow_dark.png) | bin | 308 -> 308 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_left_arrow_light.png (renamed from library/ics/res/drawable-hdpi/suw_navbar_ic_left_arrow_light.png) | bin | 334 -> 334 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_right_arrow_dark.png (renamed from library/ics/res/drawable-hdpi/suw_navbar_ic_right_arrow_dark.png) | bin | 312 -> 312 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_right_arrow_light.png (renamed from library/ics/res/drawable-hdpi/suw_navbar_ic_right_arrow_light.png) | bin | 346 -> 346 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_back_dark.xml (renamed from library/ics/res/drawable-ldrtl/suw_navbar_ic_back_dark.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_back_light.xml (renamed from library/ics/res/drawable-ldrtl/suw_navbar_ic_back_light.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_next_dark.xml (renamed from library/ics/res/drawable-ldrtl/suw_navbar_ic_next_dark.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_next_light.xml (renamed from library/ics/res/drawable-ldrtl/suw_navbar_ic_next_light.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_left_arrow_dark.png (renamed from library/ics/res/drawable-mdpi/suw_navbar_ic_left_arrow_dark.png) | bin | 280 -> 280 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_left_arrow_light.png (renamed from library/ics/res/drawable-mdpi/suw_navbar_ic_left_arrow_light.png) | bin | 297 -> 297 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_right_arrow_dark.png (renamed from library/ics/res/drawable-mdpi/suw_navbar_ic_right_arrow_dark.png) | bin | 262 -> 262 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_right_arrow_light.png (renamed from library/ics/res/drawable-mdpi/suw_navbar_ic_right_arrow_light.png) | bin | 303 -> 303 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_left_arrow_dark.png (renamed from library/ics/res/drawable-xhdpi/suw_navbar_ic_left_arrow_dark.png) | bin | 326 -> 326 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_left_arrow_light.png (renamed from library/ics/res/drawable-xhdpi/suw_navbar_ic_left_arrow_light.png) | bin | 377 -> 377 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_right_arrow_dark.png (renamed from library/ics/res/drawable-xhdpi/suw_navbar_ic_right_arrow_dark.png) | bin | 325 -> 325 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_right_arrow_light.png (renamed from library/ics/res/drawable-xhdpi/suw_navbar_ic_right_arrow_light.png) | bin | 364 -> 364 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_dark.png (renamed from library/ics/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_dark.png) | bin | 502 -> 502 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_light.png (renamed from library/ics/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_light.png) | bin | 524 -> 524 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_dark.png (renamed from library/ics/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_dark.png) | bin | 507 -> 507 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_light.png (renamed from library/ics/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_light.png) | bin | 512 -> 512 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_dark.png (renamed from library/ics/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_dark.png) | bin | 523 -> 523 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_light.png (renamed from library/ics/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_light.png) | bin | 547 -> 547 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_dark.png (renamed from library/ics/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_dark.png) | bin | 541 -> 541 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_light.png (renamed from library/ics/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_light.png) | bin | 540 -> 540 bytes | |||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_card_bg_dark.xml (renamed from library/ics/res/drawable/suw_card_bg_dark.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_card_bg_light.xml (renamed from library/ics/res/drawable/suw_card_bg_light.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_navbar_btn_bg_dark.xml (renamed from library/ics/res/drawable/suw_navbar_btn_bg_dark.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_navbar_btn_bg_light.xml (renamed from library/ics/res/drawable/suw_navbar_btn_bg_light.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_navbar_ic_back_dark.xml (renamed from library/ics/res/drawable/suw_navbar_ic_back_dark.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_navbar_ic_back_light.xml (renamed from library/ics/res/drawable/suw_navbar_ic_back_light.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_navbar_ic_next_dark.xml (renamed from library/ics/res/drawable/suw_navbar_ic_next_dark.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/drawable/suw_navbar_ic_next_light.xml (renamed from library/ics/res/drawable/suw_navbar_ic_next_light.xml) | 0 | ||||
-rw-r--r-- | library/eclair-mr1/res/values/styles.xml (renamed from library/ics/res/values/styles.xml) | 6 | ||||
-rw-r--r-- | library/main/res/layout/suw_navbar_view.xml | 5 | ||||
-rw-r--r-- | library/main/res/values/styles.xml | 2 | ||||
-rw-r--r-- | library/main/src/com/android/setupwizardlib/SetupWizardLayout.java | 23 | ||||
-rw-r--r-- | library/main/src/com/android/setupwizardlib/SetupWizardListLayout.java | 12 | ||||
-rw-r--r-- | library/main/src/com/android/setupwizardlib/view/Illustration.java | 23 | ||||
-rw-r--r-- | library/main/src/com/android/setupwizardlib/view/NavigationBar.java | 29 | ||||
-rw-r--r-- | library/main/src/com/android/setupwizardlib/view/StickyHeaderListView.java | 19 | ||||
-rw-r--r-- | library/test/res/values/config.xml | 2 | ||||
-rw-r--r-- | library/test/src/com/android/setupwizardlib/test/SetupWizardLayoutTests.java | 14 | ||||
-rw-r--r-- | library/test/src/com/android/setupwizardlib/test/SystemBarHelperTest.java | 65 |
44 files changed, 149 insertions, 65 deletions
diff --git a/library/build.gradle b/library/build.gradle index 7365a0c..ff5daa4 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -26,6 +26,14 @@ android { icsCompatCompile project(':support-appcompat-v7') } } + + // Compatibility build that provides the L layout for SDK versions Eclair MR1+ + eclairMr1Compat { + minSdkVersion 7 + dependencies { + eclairMr1CompatCompile project(':support-appcompat-v7') + } + } } platform { @@ -33,7 +41,11 @@ android { } icsCompat { - res.srcDirs = ['ics/res'] + res.srcDirs = ['eclair-mr1/res'] + } + + eclairMr1Compat { + res.srcDirs = ['eclair-mr1/res'] } androidTest { diff --git a/library/ics/res/drawable-hdpi/suw_navbar_ic_left_arrow_dark.png b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_left_arrow_dark.png Binary files differindex 9ef990a..9ef990a 100644 --- a/library/ics/res/drawable-hdpi/suw_navbar_ic_left_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_left_arrow_dark.png diff --git a/library/ics/res/drawable-hdpi/suw_navbar_ic_left_arrow_light.png b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_left_arrow_light.png Binary files differindex 1364d5c..1364d5c 100644 --- a/library/ics/res/drawable-hdpi/suw_navbar_ic_left_arrow_light.png +++ b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_left_arrow_light.png diff --git a/library/ics/res/drawable-hdpi/suw_navbar_ic_right_arrow_dark.png b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_right_arrow_dark.png Binary files differindex 5df1343..5df1343 100644 --- a/library/ics/res/drawable-hdpi/suw_navbar_ic_right_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_right_arrow_dark.png diff --git a/library/ics/res/drawable-hdpi/suw_navbar_ic_right_arrow_light.png b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_right_arrow_light.png Binary files differindex ff7a66e..ff7a66e 100644 --- a/library/ics/res/drawable-hdpi/suw_navbar_ic_right_arrow_light.png +++ b/library/eclair-mr1/res/drawable-hdpi/suw_navbar_ic_right_arrow_light.png diff --git a/library/ics/res/drawable-ldrtl/suw_navbar_ic_back_dark.xml b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_back_dark.xml index 8256fc6..8256fc6 100644 --- a/library/ics/res/drawable-ldrtl/suw_navbar_ic_back_dark.xml +++ b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_back_dark.xml diff --git a/library/ics/res/drawable-ldrtl/suw_navbar_ic_back_light.xml b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_back_light.xml index 8fbd5fc..8fbd5fc 100644 --- a/library/ics/res/drawable-ldrtl/suw_navbar_ic_back_light.xml +++ b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_back_light.xml diff --git a/library/ics/res/drawable-ldrtl/suw_navbar_ic_next_dark.xml b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_next_dark.xml index 0a825f3..0a825f3 100644 --- a/library/ics/res/drawable-ldrtl/suw_navbar_ic_next_dark.xml +++ b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_next_dark.xml diff --git a/library/ics/res/drawable-ldrtl/suw_navbar_ic_next_light.xml b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_next_light.xml index 894398f..894398f 100644 --- a/library/ics/res/drawable-ldrtl/suw_navbar_ic_next_light.xml +++ b/library/eclair-mr1/res/drawable-ldrtl/suw_navbar_ic_next_light.xml diff --git a/library/ics/res/drawable-mdpi/suw_navbar_ic_left_arrow_dark.png b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_left_arrow_dark.png Binary files differindex 284b1f0..284b1f0 100644 --- a/library/ics/res/drawable-mdpi/suw_navbar_ic_left_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_left_arrow_dark.png diff --git a/library/ics/res/drawable-mdpi/suw_navbar_ic_left_arrow_light.png b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_left_arrow_light.png Binary files differindex 0bd2a76..0bd2a76 100644 --- a/library/ics/res/drawable-mdpi/suw_navbar_ic_left_arrow_light.png +++ b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_left_arrow_light.png diff --git a/library/ics/res/drawable-mdpi/suw_navbar_ic_right_arrow_dark.png b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_right_arrow_dark.png Binary files differindex 5565575..5565575 100644 --- a/library/ics/res/drawable-mdpi/suw_navbar_ic_right_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_right_arrow_dark.png diff --git a/library/ics/res/drawable-mdpi/suw_navbar_ic_right_arrow_light.png b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_right_arrow_light.png Binary files differindex c367b7f..c367b7f 100644 --- a/library/ics/res/drawable-mdpi/suw_navbar_ic_right_arrow_light.png +++ b/library/eclair-mr1/res/drawable-mdpi/suw_navbar_ic_right_arrow_light.png diff --git a/library/ics/res/drawable-xhdpi/suw_navbar_ic_left_arrow_dark.png b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_left_arrow_dark.png Binary files differindex 50c15b3..50c15b3 100644 --- a/library/ics/res/drawable-xhdpi/suw_navbar_ic_left_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_left_arrow_dark.png diff --git a/library/ics/res/drawable-xhdpi/suw_navbar_ic_left_arrow_light.png b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_left_arrow_light.png Binary files differindex 2fac071..2fac071 100644 --- a/library/ics/res/drawable-xhdpi/suw_navbar_ic_left_arrow_light.png +++ b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_left_arrow_light.png diff --git a/library/ics/res/drawable-xhdpi/suw_navbar_ic_right_arrow_dark.png b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_right_arrow_dark.png Binary files differindex 53a294d..53a294d 100644 --- a/library/ics/res/drawable-xhdpi/suw_navbar_ic_right_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_right_arrow_dark.png diff --git a/library/ics/res/drawable-xhdpi/suw_navbar_ic_right_arrow_light.png b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_right_arrow_light.png Binary files differindex c1a0765..c1a0765 100644 --- a/library/ics/res/drawable-xhdpi/suw_navbar_ic_right_arrow_light.png +++ b/library/eclair-mr1/res/drawable-xhdpi/suw_navbar_ic_right_arrow_light.png diff --git a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_dark.png b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_dark.png Binary files differindex d0a219b..d0a219b 100644 --- a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_dark.png diff --git a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_light.png b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_light.png Binary files differindex ea343d0..ea343d0 100644 --- a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_light.png +++ b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_left_arrow_light.png diff --git a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_dark.png b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_dark.png Binary files differindex 1c017f4..1c017f4 100644 --- a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_dark.png diff --git a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_light.png b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_light.png Binary files differindex ae30d61..ae30d61 100644 --- a/library/ics/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_light.png +++ b/library/eclair-mr1/res/drawable-xxhdpi/suw_navbar_ic_right_arrow_light.png diff --git a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_dark.png b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_dark.png Binary files differindex 038d2f8..038d2f8 100644 --- a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_dark.png diff --git a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_light.png b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_light.png Binary files differindex fcd2c64..fcd2c64 100644 --- a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_light.png +++ b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_left_arrow_light.png diff --git a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_dark.png b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_dark.png Binary files differindex b640ddc..b640ddc 100644 --- a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_dark.png +++ b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_dark.png diff --git a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_light.png b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_light.png Binary files differindex eacab40..eacab40 100644 --- a/library/ics/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_light.png +++ b/library/eclair-mr1/res/drawable-xxxhdpi/suw_navbar_ic_right_arrow_light.png diff --git a/library/ics/res/drawable/suw_card_bg_dark.xml b/library/eclair-mr1/res/drawable/suw_card_bg_dark.xml index e3d29d7..e3d29d7 100644 --- a/library/ics/res/drawable/suw_card_bg_dark.xml +++ b/library/eclair-mr1/res/drawable/suw_card_bg_dark.xml diff --git a/library/ics/res/drawable/suw_card_bg_light.xml b/library/eclair-mr1/res/drawable/suw_card_bg_light.xml index b6d6233..b6d6233 100644 --- a/library/ics/res/drawable/suw_card_bg_light.xml +++ b/library/eclair-mr1/res/drawable/suw_card_bg_light.xml diff --git a/library/ics/res/drawable/suw_navbar_btn_bg_dark.xml b/library/eclair-mr1/res/drawable/suw_navbar_btn_bg_dark.xml index 7f7f378..7f7f378 100644 --- a/library/ics/res/drawable/suw_navbar_btn_bg_dark.xml +++ b/library/eclair-mr1/res/drawable/suw_navbar_btn_bg_dark.xml diff --git a/library/ics/res/drawable/suw_navbar_btn_bg_light.xml b/library/eclair-mr1/res/drawable/suw_navbar_btn_bg_light.xml index 15b567c..15b567c 100644 --- a/library/ics/res/drawable/suw_navbar_btn_bg_light.xml +++ b/library/eclair-mr1/res/drawable/suw_navbar_btn_bg_light.xml diff --git a/library/ics/res/drawable/suw_navbar_ic_back_dark.xml b/library/eclair-mr1/res/drawable/suw_navbar_ic_back_dark.xml index 0a825f3..0a825f3 100644 --- a/library/ics/res/drawable/suw_navbar_ic_back_dark.xml +++ b/library/eclair-mr1/res/drawable/suw_navbar_ic_back_dark.xml diff --git a/library/ics/res/drawable/suw_navbar_ic_back_light.xml b/library/eclair-mr1/res/drawable/suw_navbar_ic_back_light.xml index 894398f..894398f 100644 --- a/library/ics/res/drawable/suw_navbar_ic_back_light.xml +++ b/library/eclair-mr1/res/drawable/suw_navbar_ic_back_light.xml diff --git a/library/ics/res/drawable/suw_navbar_ic_next_dark.xml b/library/eclair-mr1/res/drawable/suw_navbar_ic_next_dark.xml index 8256fc6..8256fc6 100644 --- a/library/ics/res/drawable/suw_navbar_ic_next_dark.xml +++ b/library/eclair-mr1/res/drawable/suw_navbar_ic_next_dark.xml diff --git a/library/ics/res/drawable/suw_navbar_ic_next_light.xml b/library/eclair-mr1/res/drawable/suw_navbar_ic_next_light.xml index 8fbd5fc..8fbd5fc 100644 --- a/library/ics/res/drawable/suw_navbar_ic_next_light.xml +++ b/library/eclair-mr1/res/drawable/suw_navbar_ic_next_light.xml diff --git a/library/ics/res/values/styles.xml b/library/eclair-mr1/res/values/styles.xml index 57be61a..cf0c2c2 100644 --- a/library/ics/res/values/styles.xml +++ b/library/eclair-mr1/res/values/styles.xml @@ -44,6 +44,8 @@ <!-- Content styles --> <style name="SuwDescription"> + <!-- Before Honeycomb, layout_gravity is needed for FrameLayout to apply the margins --> + <item name="android:layout_gravity">top</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_marginBottom">@dimen/suw_description_margin_bottom</item> @@ -62,14 +64,14 @@ <!-- Navigation bar styles --> - <style name="SuwNavBarButtonStyle" parent="@android:style/Widget.Holo.Button.Borderless"> + <style name="SuwNavBarButtonStyle" parent="@android:style/Widget.Button"> <item name="android:background">?attr/suwNavBarButtonBackground</item> <item name="android:drawablePadding">@dimen/suw_navbar_button_drawable_padding</item> <item name="android:fontFamily" tools:ignore="NewApi">sans-serif</item> <item name="android:minWidth">0dp</item> <item name="android:paddingLeft">@dimen/suw_navbar_button_padding_sides</item> <item name="android:paddingRight">@dimen/suw_navbar_button_padding_sides</item> - <item name="android:textAllCaps">true</item> + <item name="android:textAllCaps" tools:ignore="NewApi">true</item> <item name="android:textColor">?attr/suwNavBarTextColor</item> <item name="android:textSize">@dimen/suw_navbar_text_size</item> </style> diff --git a/library/main/res/layout/suw_navbar_view.xml b/library/main/res/layout/suw_navbar_view.xml index 50bfba8..c3af53d 100644 --- a/library/main/res/layout/suw_navbar_view.xml +++ b/library/main/res/layout/suw_navbar_view.xml @@ -26,10 +26,11 @@ android:drawableLeft="?attr/suwNavBarBackButton" android:drawableStart="?attr/suwNavBarBackButton" /> - <Space + <View android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" /> + android:layout_weight="1" + android:visibility="invisible" /> <view class="com.android.setupwizardlib.view.NavigationBar$NavButton" android:id="@+id/suw_navbar_next" diff --git a/library/main/res/values/styles.xml b/library/main/res/values/styles.xml index 70c444a..2cb12db 100644 --- a/library/main/res/values/styles.xml +++ b/library/main/res/values/styles.xml @@ -50,6 +50,8 @@ <!-- Header layout (for phones) --> <style name="SuwHeaderTitle"> + <!-- Before Honeycomb, layout_gravity is needed for FrameLayout to apply the margins --> + <item name="android:layout_gravity">top</item> <item name="android:layout_marginBottom">@dimen/suw_header_title_margin_bottom</item> <item name="android:layout_marginLeft">@dimen/suw_layout_margin_sides</item> <item name="android:layout_marginRight">@dimen/suw_layout_margin_sides</item> diff --git a/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java b/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java index 0ba5e6d..55c5c84 100644 --- a/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java +++ b/library/main/src/com/android/setupwizardlib/SetupWizardLayout.java @@ -17,6 +17,7 @@ package com.android.setupwizardlib; import android.annotation.SuppressLint; +import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Shader.TileMode; @@ -49,24 +50,36 @@ public class SetupWizardLayout extends FrameLayout { private ViewGroup mContainer; public SetupWizardLayout(Context context) { - this(context, 0); + super(context); + init(0, null, R.attr.suwLayoutTheme); } public SetupWizardLayout(Context context, int template) { - this(context, template, null, 0); + super(context); + init(template, null, R.attr.suwLayoutTheme); } public SetupWizardLayout(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.suwLayoutTheme); + super(context, attrs); + init(0, attrs, R.attr.suwLayoutTheme); } + @TargetApi(VERSION_CODES.HONEYCOMB) public SetupWizardLayout(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, 0, attrs, defStyleAttr); + super(context, attrs, defStyleAttr); + init(0, attrs, defStyleAttr); } + @TargetApi(VERSION_CODES.HONEYCOMB) public SetupWizardLayout(Context context, int template, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - final TypedArray a = context.obtainStyledAttributes(attrs, + init(template, attrs, defStyleAttr); + } + + // All the constructors delegate to this init method. The 3-argument constructor is not + // available in LinearLayout before v11, so call super with the exact same arguments. + private void init(int template, AttributeSet attrs, int defStyleAttr) { + final TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SuwSetupWizardLayout, defStyleAttr, 0); if (template == 0) { template = a.getResourceId(R.styleable.SuwSetupWizardLayout_android_layout, 0); diff --git a/library/main/src/com/android/setupwizardlib/SetupWizardListLayout.java b/library/main/src/com/android/setupwizardlib/SetupWizardListLayout.java index 228ff12..7165f39 100644 --- a/library/main/src/com/android/setupwizardlib/SetupWizardListLayout.java +++ b/library/main/src/com/android/setupwizardlib/SetupWizardListLayout.java @@ -16,7 +16,9 @@ package com.android.setupwizardlib; +import android.annotation.TargetApi; import android.content.Context; +import android.os.Build.VERSION_CODES; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -29,21 +31,23 @@ public class SetupWizardListLayout extends SetupWizardLayout { private ListView mListView; public SetupWizardListLayout(Context context) { - this(context, 0); + super(context); } public SetupWizardListLayout(Context context, int template) { - this(context, template, null, 0); + super(context, template); } public SetupWizardListLayout(Context context, AttributeSet attrs) { - this(context, attrs, 0); + super(context, attrs); } + @TargetApi(VERSION_CODES.HONEYCOMB) public SetupWizardListLayout(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, 0, attrs, defStyleAttr); + super(context, attrs, defStyleAttr); } + @TargetApi(VERSION_CODES.HONEYCOMB) public SetupWizardListLayout(Context context, int template, AttributeSet attrs, int defStyleAttr) { super(context, template, attrs, defStyleAttr); diff --git a/library/main/src/com/android/setupwizardlib/view/Illustration.java b/library/main/src/com/android/setupwizardlib/view/Illustration.java index 18c79b8..6f95ca9 100644 --- a/library/main/src/com/android/setupwizardlib/view/Illustration.java +++ b/library/main/src/com/android/setupwizardlib/view/Illustration.java @@ -16,6 +16,7 @@ package com.android.setupwizardlib.view; +import android.annotation.TargetApi; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.res.TypedArray; @@ -52,17 +53,26 @@ public class Illustration extends FrameLayout { private float mAspectRatio = 0.0f; public Illustration(Context context) { - this(context, null); + super(context); + init(null, 0); } public Illustration(Context context, AttributeSet attrs) { - this(context, attrs, 0); + super(context, attrs); + init(attrs, 0); } + @TargetApi(VERSION_CODES.HONEYCOMB) public Illustration(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + init(attrs, defStyleAttr); + } + + // All the constructors delegate to this init method. The 3-argument constructor is not + // available in FrameLayout before v11, so call super with the exact same arguments. + private void init(AttributeSet attrs, int defStyleAttr) { if (attrs != null) { - TypedArray a = context.obtainStyledAttributes(attrs, + TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SuwIllustration, defStyleAttr, 0); mAspectRatio = a.getFloat(R.styleable.SuwIllustration_suwAspectRatio, 0.0f); a.recycle(); @@ -151,14 +161,14 @@ public class Illustration extends FrameLayout { @Override public void onDraw(Canvas canvas) { - final int layoutDirection = getLayoutDirection(); if (mBackground != null) { // Draw the background filling parts not covered by the illustration canvas.save(); canvas.translate(0, mIllustrationBounds.height()); // Scale the background so its size matches the foreground canvas.scale(mScale, mScale, 0, 0); - if (shouldMirrorIllustration(layoutDirection)) { + if (VERSION.SDK_INT > VERSION_CODES.JELLY_BEAN_MR1 && + shouldMirrorIllustration(getLayoutDirection())) { // Flip the illustration for RTL layouts canvas.scale(-1, 1); canvas.translate(-mBackground.getBounds().width(), 0); @@ -168,7 +178,8 @@ public class Illustration extends FrameLayout { } if (mIllustration != null) { canvas.save(); - if (shouldMirrorIllustration(layoutDirection)) { + if (VERSION.SDK_INT > VERSION_CODES.JELLY_BEAN_MR1 && + shouldMirrorIllustration(getLayoutDirection())) { // Flip the illustration for RTL layouts canvas.scale(-1, 1); canvas.translate(-mIllustrationBounds.width(), 0); diff --git a/library/main/src/com/android/setupwizardlib/view/NavigationBar.java b/library/main/src/com/android/setupwizardlib/view/NavigationBar.java index fc99768..2228e69 100644 --- a/library/main/src/com/android/setupwizardlib/view/NavigationBar.java +++ b/library/main/src/com/android/setupwizardlib/view/NavigationBar.java @@ -16,9 +16,12 @@ package com.android.setupwizardlib.view; +import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; +import android.graphics.drawable.Drawable; +import android.os.Build.VERSION_CODES; import android.util.AttributeSet; import android.view.ContextThemeWrapper; import android.view.View; @@ -67,15 +70,24 @@ public class NavigationBar extends LinearLayout implements View.OnClickListener private NavigationBarListener mListener; public NavigationBar(Context context) { - this(context, null); + super(getThemedContext(context)); + init(); } public NavigationBar(Context context, AttributeSet attrs) { - this(context, attrs, 0); + super(getThemedContext(context), attrs); + init(); } + @TargetApi(VERSION_CODES.HONEYCOMB) public NavigationBar(Context context, AttributeSet attrs, int defStyleAttr) { super(getThemedContext(context), attrs, defStyleAttr); + init(); + } + + // All the constructors delegate to this init method. The 3-argument constructor is not + // available in LinearLayout before v11, so call super with the exact same arguments. + private void init() { View.inflate(getContext(), R.layout.suw_navbar_view, this); mNextButton = (Button) findViewById(R.id.suw_navbar_next); mBackButton = (Button) findViewById(R.id.suw_navbar_back); @@ -111,7 +123,7 @@ public class NavigationBar extends LinearLayout implements View.OnClickListener public static class NavButton extends Button { public NavButton(Context context) { - this(context, null); + super(context); } public NavButton(Context context, AttributeSet attrs) { @@ -121,9 +133,14 @@ public class NavigationBar extends LinearLayout implements View.OnClickListener @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); - // The color of the button is #de000000 / #deffffff when enabled. When disabled, apply - // additional 23% alpha, so the overall opacity is 20%. - setAlpha(enabled ? 1.0f : 0.23f); + // The color of the button is #de000000 / #deffffff when enabled. When disabled, the + // alpha value = 0x3b/0xff * 0xde/0xff = 20%. + final int alpha = enabled ? 0xff : 0x3b; + getTextColors().withAlpha(alpha); + final Drawable[] compoundDrawables = getCompoundDrawables(); + for (Drawable d : compoundDrawables) { + d.setAlpha(alpha); + } } } diff --git a/library/main/src/com/android/setupwizardlib/view/StickyHeaderListView.java b/library/main/src/com/android/setupwizardlib/view/StickyHeaderListView.java index 5cb8b28..01ea37f 100644 --- a/library/main/src/com/android/setupwizardlib/view/StickyHeaderListView.java +++ b/library/main/src/com/android/setupwizardlib/view/StickyHeaderListView.java @@ -55,25 +55,26 @@ public class StickyHeaderListView extends ListView { private RectF mStickyRect = new RectF(); public StickyHeaderListView(Context context) { - this(context, null); + super(context); + init(null, android.R.attr.listViewStyle); } public StickyHeaderListView(Context context, AttributeSet attrs) { - this(context, attrs, android.R.attr.listViewStyle); + super(context, attrs); + init(attrs, android.R.attr.listViewStyle); } public StickyHeaderListView(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, 0); + super(context, attrs, defStyleAttr); + init(attrs, defStyleAttr); } - public StickyHeaderListView(Context context, AttributeSet attrs, int defStyleAttr, - int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - final TypedArray a = context.obtainStyledAttributes(attrs, - R.styleable.SuwStickyHeaderListView, defStyleAttr, defStyleRes); + private void init(AttributeSet attrs, int defStyleAttr) { + final TypedArray a = getContext().obtainStyledAttributes(attrs, + R.styleable.SuwStickyHeaderListView, defStyleAttr, 0); int headerResId = a.getResourceId(R.styleable.SuwStickyHeaderListView_suwHeader, 0); if (headerResId != 0) { - LayoutInflater inflater = LayoutInflater.from(context); + LayoutInflater inflater = LayoutInflater.from(getContext()); View header = inflater.inflate(headerResId, this, false); addHeaderView(header); } diff --git a/library/test/res/values/config.xml b/library/test/res/values/config.xml index bda4f54..35425fc 100644 --- a/library/test/res/values/config.xml +++ b/library/test/res/values/config.xml @@ -20,4 +20,6 @@ <!-- Overlay the transition duration for testing partner overlays --> <integer name="suwTransitionDuration">5000</integer> + <item type="id" name="test_view_id" /> + </resources> diff --git a/library/test/src/com/android/setupwizardlib/test/SetupWizardLayoutTests.java b/library/test/src/com/android/setupwizardlib/test/SetupWizardLayoutTests.java index f5cd287..cce2f70 100644 --- a/library/test/src/com/android/setupwizardlib/test/SetupWizardLayoutTests.java +++ b/library/test/src/com/android/setupwizardlib/test/SetupWizardLayoutTests.java @@ -16,11 +16,9 @@ package com.android.setupwizardlib.test; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; -import android.os.Build.VERSION_CODES; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.SmallTest; import android.view.ContextThemeWrapper; @@ -56,16 +54,14 @@ public class SetupWizardLayoutTests extends InstrumentationTestCase { assertEquals("Header text should be \"Abracadabra\"", "Abracadabra", title.getText()); } - @TargetApi(VERSION_CODES.JELLY_BEAN_MR1) @SmallTest public void testAddView() { SetupWizardLayout layout = new SetupWizardLayout(mContext); TextView tv = new TextView(mContext); - int id = View.generateViewId(); - tv.setId(id); + tv.setId(R.id.test_view_id); layout.addView(tv); assertDefaultTemplateInflated(layout); - View view = layout.findViewById(id); + View view = layout.findViewById(R.id.test_view_id); assertSame("The view added should be the same text view", tv, view); } @@ -78,7 +74,6 @@ public class SetupWizardLayoutTests extends InstrumentationTestCase { assertTrue("@id/test_content should be a TextView", content instanceof TextView); } - @TargetApi(VERSION_CODES.JELLY_BEAN_MR1) @SmallTest public void testCustomTemplate() { SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); @@ -86,13 +81,12 @@ public class SetupWizardLayoutTests extends InstrumentationTestCase { assertNotNull("@id/test_template_view should exist in template", templateView); TextView tv = new TextView(mContext); - int id = View.generateViewId(); - tv.setId(id); + tv.setId(R.id.test_view_id); layout.addView(tv); templateView = layout.findViewById(R.id.test_template_view); assertNotNull("@id/test_template_view should exist in template", templateView); - View contentView = layout.findViewById(id); + View contentView = layout.findViewById(R.id.test_view_id); assertSame("The view added should be the same text view", tv, contentView); // The following methods should be no-ops because the custom template doesn't contain the diff --git a/library/test/src/com/android/setupwizardlib/test/SystemBarHelperTest.java b/library/test/src/com/android/setupwizardlib/test/SystemBarHelperTest.java index c364984..98e3f73 100644 --- a/library/test/src/com/android/setupwizardlib/test/SystemBarHelperTest.java +++ b/library/test/src/com/android/setupwizardlib/test/SystemBarHelperTest.java @@ -21,6 +21,8 @@ import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; @@ -51,71 +53,94 @@ public class SystemBarHelperTest extends AndroidTestCase { public void testAddVisibilityFlagView() { final View view = createViewWithSystemUiVisibility(0x456); SystemBarHelper.addVisibilityFlag(view, 0x1400); - assertEquals("View visibility should be 0x1456", 0x1456, view.getSystemUiVisibility()); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + // Check that result is 0x1456, because 0x1400 | 0x456 = 0x1456. + assertEquals("View visibility should be 0x1456", 0x1456, view.getSystemUiVisibility()); + } } @SmallTest public void testRemoveVisibilityFlagView() { final View view = createViewWithSystemUiVisibility(0x456); SystemBarHelper.removeVisibilityFlag(view, 0x1400); - assertEquals("View visibility should be 0x56", 0x56, view.getSystemUiVisibility()); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + // Check that result is 0x56, because 0x456 & ~0x1400 = 0x56. + assertEquals("View visibility should be 0x56", 0x56, view.getSystemUiVisibility()); + } } @SmallTest public void testAddVisibilityFlagWindow() { final Window window = createWindowWithSystemUiVisibility(0x456); SystemBarHelper.addVisibilityFlag(window, 0x1400); - assertEquals("View visibility should be 0x1456", 0x1456, - window.getAttributes().systemUiVisibility); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + // Check that result is 0x1456 = 0x1400 | 0x456. + assertEquals("View visibility should be 0x1456", 0x1456, + window.getAttributes().systemUiVisibility); + } } @SmallTest public void testRemoveVisibilityFlagWindow() { final Window window = createWindowWithSystemUiVisibility(0x456); SystemBarHelper.removeVisibilityFlag(window, 0x1400); - assertEquals("View visibility should be 0x56", 0x56, - window.getAttributes().systemUiVisibility); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + // Check that result is 0x56 = 0x456 & ~0x1400. + assertEquals("View visibility should be 0x56", 0x56, + window.getAttributes().systemUiVisibility); + } } @SmallTest public void testHideSystemBarsWindow() { final Window window = createWindowWithSystemUiVisibility(0x456); SystemBarHelper.hideSystemBars(window); - assertEquals("DEFAULT_IMMERSIVE_FLAGS should be added to window's systemUiVisibility", - DEFAULT_IMMERSIVE_FLAGS | 0x456, - window.getAttributes().systemUiVisibility); - assertEquals("DEFAULT_IMMERSIVE_FLAGS should be added to decorView's systemUiVisibility", - DEFAULT_IMMERSIVE_FLAGS | 0x456, - window.getDecorView().getSystemUiVisibility()); + if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { + assertEquals("DEFAULT_IMMERSIVE_FLAGS should be added to window's systemUiVisibility", + DEFAULT_IMMERSIVE_FLAGS | 0x456, + window.getAttributes().systemUiVisibility); + assertEquals( + "DEFAULT_IMMERSIVE_FLAGS should be added to decorView's systemUiVisibility", + DEFAULT_IMMERSIVE_FLAGS | 0x456, + window.getDecorView().getSystemUiVisibility()); + } } @SmallTest public void testSetBackButtonVisibleTrue() { final Window window = createWindowWithSystemUiVisibility(0x456); SystemBarHelper.setBackButtonVisible(window, true); - assertEquals("View visibility should be 0x456", 0x456, - window.getAttributes().systemUiVisibility); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + assertEquals("View visibility should be 0x456", 0x456, + window.getAttributes().systemUiVisibility); + } } @SmallTest public void testSetBackButtonVisibleFalse() { final Window window = createWindowWithSystemUiVisibility(0x456); SystemBarHelper.setBackButtonVisible(window, false); - assertEquals("STATUS_BAR_DISABLE_BACK should be added to systemUiVisibility", - 0x456 | STATUS_BAR_DISABLE_BACK, window.getAttributes().systemUiVisibility); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + assertEquals("STATUS_BAR_DISABLE_BACK should be added to systemUiVisibility", + 0x456 | STATUS_BAR_DISABLE_BACK, window.getAttributes().systemUiVisibility); + } } private View createViewWithSystemUiVisibility(int vis) { final View view = new View(getContext()); - view.setSystemUiVisibility(vis); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + view.setSystemUiVisibility(vis); + } return view; } private Window createWindowWithSystemUiVisibility(int vis) { final Window window = new TestWindow(getContext(), createViewWithSystemUiVisibility(vis)); - WindowManager.LayoutParams attrs = window.getAttributes(); - attrs.systemUiVisibility = vis; - window.setAttributes(attrs); + if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) { + WindowManager.LayoutParams attrs = window.getAttributes(); + attrs.systemUiVisibility = vis; + window.setAttributes(attrs); + } return window; } |