From 3035dc4df9c35f0801ea3133aeacc26a1a287d99 Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Tue, 29 Sep 2015 13:14:22 -0700 Subject: [PATCH] Experience upgrade splash screen. Behaves similarly to the DatabaseUpgradeActivity. You have a static list of ExperienceUpgrade models that include a "trigger" version, where when a user upgrades through it a notification will appear, and there will be a splash explanation screen. Right now the splash screens are basic and not too configurable, but that can be reworked as upgrades demand. Closes #4151 --- AndroidManifest.xml | 12 + build.gradle | 6 +- res/drawable-xxhdpi/splash_logo.png | Bin 0 -> 29656 bytes .../ic_arrow_forward_white_24dp.png | Bin 0 -> 509 bytes res/layout/color_fragment.xml | 49 ++++ res/layout/experience_upgrade_activity.xml | 44 ++++ res/values/colors.xml | 9 +- res/values/dimens.xml | 4 + res/values/strings.xml | 6 + .../securesms/BasicIntroFragment.java | 54 +++++ .../securesms/ExperienceUpgradeActivity.java | 224 ++++++++++++++++++ .../securesms/IntroPagerAdapter.java | 38 +++ .../PassphraseRequiredActionBarActivity.java | 18 +- .../securesms/util/ServiceUtil.java | 5 + .../securesms/util/TextSecurePreferences.java | 11 +- .../thoughtcrime/securesms/util/ViewUtil.java | 7 +- 16 files changed, 475 insertions(+), 12 deletions(-) create mode 100644 res/drawable-xxhdpi/splash_logo.png create mode 100644 res/drawable-xxxhdpi/ic_arrow_forward_white_24dp.png create mode 100644 res/layout/color_fragment.xml create mode 100644 res/layout/experience_upgrade_activity.xml create mode 100644 src/org/thoughtcrime/securesms/BasicIntroFragment.java create mode 100644 src/org/thoughtcrime/securesms/ExperienceUpgradeActivity.java create mode 100644 src/org/thoughtcrime/securesms/IntroPagerAdapter.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b1be57104..2464ffa48 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -200,6 +200,11 @@ android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> + + + + + + + + + diff --git a/build.gradle b/build.gradle index 4c709a330..2010b65e7 100644 --- a/build.gradle +++ b/build.gradle @@ -58,7 +58,7 @@ dependencies { compile 'com.soundcloud.android:android-crop:0.9.10@aar' compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.android.support:recyclerview-v7:21.0.3' - compile 'com.melnykov:floatingactionbutton:1.1.0' + compile 'com.melnykov:floatingactionbutton:1.3.0' compile 'com.google.zxing:android-integration:3.1.0' compile ('com.android.support:support-v4-preferencefragment:1.0.0@aar'){ exclude module: 'support-v4' @@ -80,6 +80,7 @@ dependencies { compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' compile 'org.whispersystems:textsecure-android:1.8.1' compile 'com.h6ah4i.android.compat:mulsellistprefcompat:1.0.0' + compile 'me.relex:circleindicator:1.0.0@aar' testCompile 'junit:junit:4.12' testCompile 'org.assertj:assertj-core:1.7.1' @@ -118,7 +119,7 @@ dependencyVerification { 'com.soundcloud.android:android-crop:ffd4b973cf6e97f7d64118a0dc088df50e9066fd5634fe6911dd0c0c5d346177', 'com.android.support:appcompat-v7:9a2355537c2f01cf0b95523605c18606b8d824017e6e94a05c77b0cfc8f21c96', 'com.android.support:recyclerview-v7:e525ad3f33c84bb12b73d2dc975b55364a53f0f2d0697e043efba59ba73e22d2', - 'com.melnykov:floatingactionbutton:0679ad9f7d61eb7aeab91e8dc56358cdedd5b1c1b9c48464499ffa05c40d3985', + 'com.melnykov:floatingactionbutton:15d58d4fac0f7a288d0e5301bbaf501a146f5b3f5921277811bf99bd3b397263', 'com.google.zxing:android-integration:89e56aadf1164bd71e57949163c53abf90af368b51669c0d4a47a163335f95c4', 'com.android.support:support-v4-preferencefragment:5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad', 'com.android.support:gridlayout-v7:a9b770cffca2c7c5cd83cba4dd12503365de5e8d9c79c479165adf18ab3bc25b', @@ -129,6 +130,7 @@ dependencyVerification { 'org.whispersystems:libpastelog:550d33c565380d90f4c671e7b8ed5f3a6da55a9fda468373177106b2eb5220b2', 'com.amulyakhare:com.amulyakhare.textdrawable:54c92b5fba38cfd316a07e5a30528068f45ce8515a6890f1297df4c401af5dcb', 'com.h6ah4i.android.compat:mulsellistprefcompat:47167c5cb796de1a854788e9ff318358e36c8fb88123baaa6e38fb78511dfabe', + 'me.relex:circleindicator:996766d3dad51401331515e742948f2a10982d17c626edd976a246b9bf046aac', 'com.nineoldandroids:library:68025a14e3e7673d6ad2f95e4b46d78d7d068343aa99256b686fe59de1b3163a', 'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', 'com.madgag.spongycastle:core:8d6240b974b0aca4d3da9c7dd44d42339d8a374358aca5fc98e50a995764511f', diff --git a/res/drawable-xxhdpi/splash_logo.png b/res/drawable-xxhdpi/splash_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f777644db09b7a57640f230c5e83ebc7f8cf7d GIT binary patch literal 29656 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 literal 0 HcmV?d00001 diff --git a/res/layout/color_fragment.xml b/res/layout/color_fragment.xml new file mode 100644 index 000000000..9cfebe7e4 --- /dev/null +++ b/res/layout/color_fragment.xml @@ -0,0 +1,49 @@ + + + + + + + + + + diff --git a/res/layout/experience_upgrade_activity.xml b/res/layout/experience_upgrade_activity.xml new file mode 100644 index 000000000..5f118087d --- /dev/null +++ b/res/layout/experience_upgrade_activity.xml @@ -0,0 +1,44 @@ + + + + + +