Improve Preference highlighting for Search

- cache hightlight Drawable
- set mPreferenceHighlighted as early as possible

Change-Id: I512d4677e94309175ead22c46b7a78e2aa387e1c
This commit is contained in:
Fabrice Di Meglio
2014-05-21 16:19:41 -07:00
parent bbfaa11cf7
commit 4a2ee7e2b6
2 changed files with 19 additions and 5 deletions

View File

@@ -32,6 +32,7 @@ public class HighlightingFragment extends Fragment {
private String mViewKey;
private boolean mViewHighlighted = false;
private Drawable mHighlightDrawable;
@Override
public void onCreate(Bundle icicle) {
@@ -67,7 +68,10 @@ public class HighlightingFragment extends Fragment {
}
private Drawable getHighlightDrawable() {
return getActivity().getDrawable(R.drawable.preference_highlight);
if (mHighlightDrawable == null) {
mHighlightDrawable = getActivity().getDrawable(R.drawable.preference_highlight);
}
return mHighlightDrawable;
}
private void highlightView(String key) {

View File

@@ -61,6 +61,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
private String mPreferenceKey;
private boolean mPreferenceHighlighted = false;
private Drawable mHighlightDrawable;
private boolean mIsDataSetObserverRegistered = false;
private DataSetObserver mDataSetObserver = new DataSetObserver() {
@@ -103,6 +104,11 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
if (!TextUtils.isEmpty(mHelpUrl)) {
setHasOptionsMenu(true);
}
}
@Override
public void onResume() {
super.onResume();
final Bundle args = getArguments();
if (args != null) {
@@ -144,7 +150,10 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
}
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 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
final int position = canUseListViewForHighLighting(key);
if (position >= 0) {
mPreferenceHighlighted = true;
final ListView listView = getListView();
final ListAdapter adapter = listView.getAdapter();
@@ -189,17 +200,16 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
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;