Improve Preference highlighting for Search
- cache hightlight Drawable - set mPreferenceHighlighted as early as possible Change-Id: I512d4677e94309175ead22c46b7a78e2aa387e1c
This commit is contained in:
@@ -32,6 +32,7 @@ public class HighlightingFragment extends Fragment {
|
|||||||
|
|
||||||
private String mViewKey;
|
private String mViewKey;
|
||||||
private boolean mViewHighlighted = false;
|
private boolean mViewHighlighted = false;
|
||||||
|
private Drawable mHighlightDrawable;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
@@ -67,7 +68,10 @@ public class HighlightingFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Drawable getHighlightDrawable() {
|
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) {
|
private void highlightView(String key) {
|
||||||
|
@@ -61,6 +61,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
|
|
||||||
private String mPreferenceKey;
|
private String mPreferenceKey;
|
||||||
private boolean mPreferenceHighlighted = false;
|
private boolean mPreferenceHighlighted = false;
|
||||||
|
private Drawable mHighlightDrawable;
|
||||||
|
|
||||||
private boolean mIsDataSetObserverRegistered = false;
|
private boolean mIsDataSetObserverRegistered = false;
|
||||||
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
||||||
@@ -103,6 +104,11 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
if (!TextUtils.isEmpty(mHelpUrl)) {
|
if (!TextUtils.isEmpty(mHelpUrl)) {
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
|
||||||
final Bundle args = getArguments();
|
final Bundle args = getArguments();
|
||||||
if (args != null) {
|
if (args != null) {
|
||||||
@@ -144,7 +150,10 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Drawable getHighlightDrawable() {
|
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);
|
final int position = canUseListViewForHighLighting(key);
|
||||||
if (position >= 0) {
|
if (position >= 0) {
|
||||||
|
mPreferenceHighlighted = true;
|
||||||
|
|
||||||
final ListView listView = getListView();
|
final ListView listView = getListView();
|
||||||
final ListAdapter adapter = listView.getAdapter();
|
final ListAdapter adapter = listView.getAdapter();
|
||||||
|
|
||||||
@@ -189,17 +200,16 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
highlight.setHotspot(centerX, centerY);
|
highlight.setHotspot(centerX, centerY);
|
||||||
v.setPressed(true);
|
v.setPressed(true);
|
||||||
v.setPressed(false);
|
v.setPressed(false);
|
||||||
((PreferenceGroupAdapter) adapter).setHighlighted(-1);
|
|
||||||
}
|
}
|
||||||
}, DELAY_HIGHLIGHT_DURATION_MILLIS);
|
}, DELAY_HIGHLIGHT_DURATION_MILLIS);
|
||||||
|
|
||||||
mPreferenceHighlighted = true;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Try locating the Preference View thru its tag
|
// Try locating the Preference View thru its tag
|
||||||
View preferenceView = findPreferenceViewForKey(getView(), key);
|
View preferenceView = findPreferenceViewForKey(getView(), key);
|
||||||
if (preferenceView != null ) {
|
if (preferenceView != null ) {
|
||||||
|
mPreferenceHighlighted = true;
|
||||||
|
|
||||||
preferenceView.setBackground(highlight);
|
preferenceView.setBackground(highlight);
|
||||||
final int centerX = preferenceView.getWidth() / 2;
|
final int centerX = preferenceView.getWidth() / 2;
|
||||||
final int centerY = preferenceView.getHeight() / 2;
|
final int centerY = preferenceView.getHeight() / 2;
|
||||||
|
Reference in New Issue
Block a user