am fef8d3e4: Make search UI open up quicker to the user.

Merge commit 'fef8d3e4d8f6f46c098d04b3a57409c947ec1c75'

* commit 'fef8d3e4d8f6f46c098d04b3a57409c947ec1c75':
  Make search UI open up quicker to the user.
This commit is contained in:
Satish Sampath
2009-07-02 15:23:32 -07:00
committed by The Android Open Source Project
2 changed files with 33 additions and 2 deletions

View File

@@ -242,8 +242,15 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
// Reset any stored values from last time dialog was shown.
mStoredComponentName = null;
mStoredAppSearchData = null;
return doShow(initialQuery, selectInitialQuery, componentName, appSearchData, globalSearch);
boolean success = doShow(initialQuery, selectInitialQuery, componentName, appSearchData,
globalSearch);
if (success) {
// Display the drop down as soon as possible instead of waiting for the rest of the
// pending UI stuff to get done, so that things appear faster to the user.
mSearchAutoComplete.showDropDownAfterLayout();
}
return success;
}
/**

View File

@@ -124,6 +124,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
private boolean mBlockCompletion;
private AutoCompleteTextView.ListSelectorHider mHideSelector;
private Runnable mShowDropDownRunnable;
private AutoCompleteTextView.PassThroughClickListener mPassThroughClickListener;
@@ -1065,6 +1066,13 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
return mDropDownAnchorView == null ? this : mDropDownAnchorView;
}
/**
* Issues a runnable to show the dropdown as soon as possible.
*/
public void showDropDownAfterLayout() {
post(mShowDropDownRunnable);
}
/**
* <p>Displays the drop down on screen.</p>
*/
@@ -1173,6 +1181,22 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
mHideSelector = new ListSelectorHider();
/**
* This Runnable exists for the sole purpose of checking if the view layout has got
* completed and if so call showDropDown to display the drop down. This is used to show
* the drop down as soon as possible after user opens up the search dialog, without
* waiting for the normal UI pipeline to do it's job which is slower than this method.
*/
mShowDropDownRunnable = new Runnable() {
public void run() {
// View layout should be all done before displaying the drop down.
View view = getDropDownAnchorView();
if (view != null && view.getWindowToken() != null) {
showDropDown();
}
}
};
mDropDownList = new DropDownListView(context);
mDropDownList.setSelector(mDropDownListHighlight);
mDropDownList.setAdapter(mAdapter);