Add feature highlight to hamburger icon.
BUG 29877098
Change-Id: I16c60c464bb281b1a4a08da28a14f37f8a65d4e5
diff --git a/Android.mk b/Android.mk
index b195ad4..9e9a55a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -28,15 +28,16 @@
--auto-add-overlay \
--extra-packages com.android.contacts.common \
--extra-packages com.android.phone.common \
+ --extra-packages com.google.android.libraries.material.featurehighlight \
--extra-packages android.support.design \
--extra-packages android.support.v7.appcompat \
--extra-packages android.support.v7.cardview \
--extra-packages android.support.v7.recyclerview
+LOCAL_STATIC_JAVA_AAR_LIBRARIES := aar_feature_highlight
+
LOCAL_STATIC_JAVA_LIBRARIES := \
- com.android.vcard \
android-common \
- guava \
android-support-design \
android-support-v13 \
android-support-v7-appcompat \
@@ -44,7 +45,15 @@
android-support-v7-recyclerview \
android-support-v7-palette \
android-support-v4 \
- libphonenumber
+ com.android.vcard \
+ guava \
+ libphonenumber \
+ lib_animation \
+ lib_math \
+ lib_navigation_finder \
+ lib_path \
+ lib_util_objects \
+ lib_util_preconditions
LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared
@@ -57,5 +66,21 @@
include $(BUILD_PACKAGE)
+#########################################################################################
+
+include $(CLEAR_VARS)
+# Import FeatureHighlight aar and its dependencies.
+LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aar_feature_highlight:libs/featurehighlight.aar \
+ lib_animation:libs/libanimation.jar \
+ lib_math:libs/libmath.jar \
+ lib_navigation_finder:libs/libappcompat.jar \
+ lib_path:libs/libpath.jar \
+ lib_util_objects:libs/libutil_Objects.jar \
+ lib_util_preconditions:libs/libutil_Preconditions.jar
+
+include $(BUILD_MULTI_PREBUILT)
+
+#########################################################################################
+
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/libs/README.txt b/libs/README.txt
new file mode 100644
index 0000000..6232d95
--- /dev/null
+++ b/libs/README.txt
@@ -0,0 +1,9 @@
+featurehighlight.aar was generated from google3:
+blaze build java/com/google/android/libraries/material/featurehighlight:featurehighlight.aar
+
+Other libs are dependencies of featurehighlight.aar:
+blaze build java/com/google/android/libraries/material/featurehighlight/appcompat:appcompat for libappcompat.jar
+blaze build java/com/google/android/libraries/material/animation:animation for libanimation.jar
+blaze build java/com/google/android/libraries/stitch/util:util for libutil_Objects.jar and libutil_Preconditions.jar
+blaze build java/com/google/android/libraries/material/math:math for libmath.jar
+blaze build java/com/google/android/libraries/material/path:path for libpath.jar
diff --git a/libs/featurehighlight.aar b/libs/featurehighlight.aar
new file mode 100644
index 0000000..d93f3b1
--- /dev/null
+++ b/libs/featurehighlight.aar
Binary files differ
diff --git a/libs/libanimation.jar b/libs/libanimation.jar
new file mode 100644
index 0000000..868ffff
--- /dev/null
+++ b/libs/libanimation.jar
Binary files differ
diff --git a/libs/libappcompat.jar b/libs/libappcompat.jar
new file mode 100644
index 0000000..1cff196
--- /dev/null
+++ b/libs/libappcompat.jar
Binary files differ
diff --git a/libs/libmath.jar b/libs/libmath.jar
new file mode 100644
index 0000000..cec2e2a
--- /dev/null
+++ b/libs/libmath.jar
Binary files differ
diff --git a/libs/libpath.jar b/libs/libpath.jar
new file mode 100644
index 0000000..cb31ec0
--- /dev/null
+++ b/libs/libpath.jar
Binary files differ
diff --git a/libs/libutil_Objects.jar b/libs/libutil_Objects.jar
new file mode 100644
index 0000000..d55a3e9
--- /dev/null
+++ b/libs/libutil_Objects.jar
Binary files differ
diff --git a/libs/libutil_Preconditions.jar b/libs/libutil_Preconditions.jar
new file mode 100644
index 0000000..0f27ae2
--- /dev/null
+++ b/libs/libutil_Preconditions.jar
Binary files differ
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 0d1b6ea..f5bf4cc 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -81,4 +81,6 @@
<!-- Color of background of all empty states. -->
<color name="empty_state_background">#efefef</color>
+ <!-- Color of hamburger icon in promo -->
+ <color name="hamburger_feature_highlight_inner_color">#00ffffff</color>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ef82a26..9b6fb64 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -953,4 +953,9 @@
<!-- Content displayed in QuickContact activity after Contacts app receiving
SMS permission [CHAR LIMIT=40] -->
<string name="permission_explanation_subheader_SMS">Messages</string>
+
+ <!-- The header text for hamburger promo [CHAR LIMIT=60]-->
+ <string name="hamburger_feature_highlight_header">Organize your list</string>
+ <!-- The body text for hamburger promo [CHAR LIMIT=200]-->
+ <string name="hamburger_feature_highlight_body">Clean up duplicates & group contacts by label</string>
</resources>
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 9f7d8b0..0ee83df 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -48,6 +48,8 @@
import com.android.contacts.activities.ActionBarAdapter.Listener.Action;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.list.ContactsRequest;
+import com.google.android.libraries.material.featurehighlight.FeatureHighlight;
+import com.google.android.libraries.material.featurehighlight.appcompat.ToolbarNavigationIconFinder;
import java.util.ArrayList;
@@ -83,6 +85,9 @@
private static final String PERSISTENT_LAST_TAB = "actionBarAdapter.lastTab";
+ private static final String PREFERENCE_KEY_SHOULD_SHOW_HAMBURGER_FEATURE_HIGHLIGHT =
+ "shouldShowHamburgerFeatureHighlight";
+
private boolean mSelectionMode;
private boolean mSearchMode;
private String mQueryString;
@@ -118,6 +123,8 @@
private int mSearchHintResId;
+ private FeatureHighlight mHamburgerFeatureHighlight;
+
public interface TabState {
public static int ALL = 0;
@@ -232,6 +239,7 @@
mQueryString = request.getQueryString();
mCurrentTab = loadLastTabPreference();
mSelectionMode = false;
+ addHamburgerHighlight();
} else {
mSearchMode = savedState.getBoolean(EXTRA_KEY_SEARCH_MODE);
mSelectionMode = savedState.getBoolean(EXTRA_KEY_SELECTED_MODE);
@@ -426,6 +434,37 @@
}
}
+ private void addHamburgerHighlight() {
+ if (mHamburgerFeatureHighlight == null) {
+ mHamburgerFeatureHighlight = FeatureHighlight.Builder
+ .forView(new ToolbarNavigationIconFinder())
+ .setHeader(mActivity.getResources().getString(
+ R.string.hamburger_feature_highlight_header))
+ .setBody(mActivity.getResources().getString(
+ R.string.hamburger_feature_highlight_body))
+ .setInnerColor(mActivity.getResources().getColor(
+ R.color.hamburger_feature_highlight_inner_color))
+ .build();
+ }
+ }
+
+ public FeatureHighlight getHamburgerFeatureHighlight() {
+ return mHamburgerFeatureHighlight;
+ }
+
+ public boolean shouldShowHamburgerFeatureHighlight(Context context) {
+ final SharedPreferences prefs = context.getSharedPreferences(
+ context.getPackageName(), Context.MODE_PRIVATE);
+ return prefs.getBoolean(PREFERENCE_KEY_SHOULD_SHOW_HAMBURGER_FEATURE_HIGHLIGHT, true);
+ }
+
+ public void setHamburgerFeatureHighlightShown(Context context) {
+ final SharedPreferences prefs = context.getSharedPreferences(
+ context.getPackageName(), Context.MODE_PRIVATE);
+ prefs.edit().putBoolean(PREFERENCE_KEY_SHOULD_SHOW_HAMBURGER_FEATURE_HIGHLIGHT, false)
+ .apply();
+ }
+
private void update(boolean skipAnimation) {
updateStatusBarColor();
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 7fd20f0..825ef00 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -87,6 +87,7 @@
import com.android.contacts.list.OnContactsUnavailableActionListener;
import com.android.contacts.quickcontact.QuickContactActivity;
import com.android.contacts.util.DialogManager;
+import com.google.android.libraries.material.featurehighlight.FeatureHighlight;
import java.util.List;
import java.util.Locale;
@@ -236,6 +237,15 @@
Log.d(Constants.PERFORMANCE_TAG, "PeopleActivity.onCreate finish");
}
getWindow().setBackgroundDrawable(null);
+
+ if (mActionBarAdapter.shouldShowHamburgerFeatureHighlight(this)) {
+ final FeatureHighlight hamburgerFeatureHighlight =
+ mActionBarAdapter.getHamburgerFeatureHighlight();
+ if (hamburgerFeatureHighlight != null) {
+ hamburgerFeatureHighlight.show(this);
+ mActionBarAdapter.setHamburgerFeatureHighlightShown(this);
+ }
+ }
}
@Override