Improve Preference highlighting for Search

- cache hightlight Drawable
- set mPreferenceHighlighted as early as possible

Change-Id: I512d4677e94309175ead22c46b7a78e2aa387e1c
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index a1f5ecd..67432c0 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -61,6 +61,7 @@
 
     private String mPreferenceKey;
     private boolean mPreferenceHighlighted = false;
+    private Drawable mHighlightDrawable;
 
     private boolean mIsDataSetObserverRegistered = false;
     private DataSetObserver mDataSetObserver = new DataSetObserver() {
@@ -103,6 +104,11 @@
         if (!TextUtils.isEmpty(mHelpUrl)) {
             setHasOptionsMenu(true);
         }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
 
         final Bundle args = getArguments();
         if (args != null) {
@@ -144,7 +150,10 @@
     }
 
     private Drawable getHighlightDrawable() {
-        return getActivity().getDrawable(R.drawable.preference_highlight);
+        if (mHighlightDrawable == null) {
+            mHighlightDrawable = getActivity().getDrawable(R.drawable.preference_highlight);
+        }
+        return mHighlightDrawable;
     }
 
     /**
@@ -170,6 +179,8 @@
 
         final int position = canUseListViewForHighLighting(key);
         if (position >= 0) {
+            mPreferenceHighlighted = true;
+
             final ListView listView = getListView();
             final ListAdapter adapter = listView.getAdapter();
 
@@ -189,17 +200,16 @@
                             highlight.setHotspot(centerX, centerY);
                             v.setPressed(true);
                             v.setPressed(false);
-                            ((PreferenceGroupAdapter) adapter).setHighlighted(-1);
                         }
                     }, DELAY_HIGHLIGHT_DURATION_MILLIS);
-
-                    mPreferenceHighlighted = true;
                 }
             });
         } else {
             // Try locating the Preference View thru its tag
             View preferenceView = findPreferenceViewForKey(getView(), key);
             if (preferenceView != null ) {
+                mPreferenceHighlighted = true;
+
                 preferenceView.setBackground(highlight);
                 final int centerX = preferenceView.getWidth() / 2;
                 final int centerY = preferenceView.getHeight() / 2;