From 2bbe9af65eb5fe213978a58d5089fe99e341ca4e Mon Sep 17 00:00:00 2001 From: Mike Cleron Date: Wed, 4 Nov 2009 12:25:55 -0800 Subject: [PATCH] Update the search widget to be vertically centered within it's footprint. --- res/drawable-hdpi/search_floater.9.png | Bin 812 -> 5550 bytes res/layout/widget_search.xml | 18 +++++++-------- src/com/android/launcher2/Search.java | 29 ++++++++++++------------- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/res/drawable-hdpi/search_floater.9.png b/res/drawable-hdpi/search_floater.9.png index 1c6d836ea881ff6a23ab6603d43dca0a633a74ab..02441d04a515a496228f95493cf400c52c0e607f 100644 GIT binary patch literal 5550 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 literal 812 zcmV+{1JnG8P)jY*oK0g(mHTMs;f(;t8Hcy ze?NJJkiKpm8H~JrfABrDp{2i1zQ5mlP4b=|hM|@;bX`yWB?*FZ&=coy93WH(T@X#; zhExN95dcFDLLZ@Y&XLARXZod-rW{Eg=?`g7ygrg64AR9?sWi2^wpMjqci9gDFQ8AP zN&K7lI-R9Pv-#Mz?W^LXjs$|w_!#MOrBb;|06wQJ`C;nzdLN!ttJ9R*`B6YH1dHO< z&z+qORUkxQd=$>m4+6pEaDg;ktJPkGibj*lB<>0ZVZ_{Ek|xUK@=aAoh+?sLPc;9* z36+Q(X_9oq_x;y~VPq8@D)%WjE|0BYj>wSClCr8o5HsO1*)+h2xg&F0CskPu@&Dhm z0Stqs0T2j)00ka1^2NZqAl9xIbNmuf@d};CB;#1Q!ClzzU`po^AJN5PY zMzlQQj$pgEBxm>6Zfo}8>~qI)zN+GcZnyhs;l;uOg78C=-0+V-b<2xGd42c<>5`c@ zt@&s3x9usrY+2UzG`hfb-S?YYn{VeH&An_i8{g=y-?C9smw@30%KI$vI`NzUGcF*d zW^m~DJJL3(E!-Xqn=TA{4%-lk^DZJ8EuA}waP#*>$p?oFsT!j12+$Bc0U!VZAOHd& q00JNY0w7KZ#7S@OdfYkv6JP*v4W#+Hezt1>0000 + android:gravity="center"> diff --git a/src/com/android/launcher2/Search.java b/src/com/android/launcher2/Search.java index ccf7792de5..09646bd597 100644 --- a/src/com/android/launcher2/Search.java +++ b/src/com/android/launcher2/Search.java @@ -16,20 +16,15 @@ package com.android.launcher2; -import android.app.SearchManager; +import android.app.Activity; import android.content.ActivityNotFoundException; -import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.server.search.SearchableInfo; -import android.server.search.Searchables; import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; @@ -76,8 +71,6 @@ public class Search extends LinearLayout // For voice searching private Intent mVoiceSearchIntent; - private SearchManager mSearchManager; - /** * Used to inflate the Workspace from XML. * @@ -138,8 +131,6 @@ public class Search extends LinearLayout mVoiceSearchIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH); mVoiceSearchIntent.putExtra(android.speech.RecognizerIntent.EXTRA_LANGUAGE_MODEL, android.speech.RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); - - mSearchManager = (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE); } /** @@ -174,7 +165,7 @@ public class Search extends LinearLayout /** * Morph the search gadget to the search dialog. - * See {@link Activity.startSearch()} for the arguments. + * See {@link Activity#startSearch()} for the arguments. */ public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData, boolean globalSearch) { @@ -233,11 +224,11 @@ public class Search extends LinearLayout } private boolean isAtTop() { - return getTop() == 0; + return getWidgetTop() == 0; } private int getAnimationDuration() { - return (int) (getTop() / ANIMATION_VELOCITY); + return (int) (getWidgetTop() / ANIMATION_VELOCITY); } /** @@ -351,7 +342,7 @@ public class Search extends LinearLayout @Override protected void applyTransformation(float interpolatedTime, Transformation t) { float dx = -getLeft() * interpolatedTime; - float dy = -getTop() * interpolatedTime; + float dy = -getWidgetTop() * interpolatedTime; t.getMatrix().setTranslate(dx, dy); } } @@ -363,9 +354,17 @@ public class Search extends LinearLayout @Override protected void applyTransformation(float interpolatedTime, Transformation t) { float dx = -getLeft() * (1.0f - interpolatedTime); - float dy = -getTop() * (1.0f - interpolatedTime); + float dy = -getWidgetTop() * (1.0f - interpolatedTime); t.getMatrix().setTranslate(dx, dy); } } + /** + * The widget is centered vertically within it's 4x1 slot. This is accomplished by nesting + * the actual widget inside another view. For animation purposes, we care about the top of the + * actual widget rather than it's container. This method return the top of the actual widget. + */ + private int getWidgetTop() { + return getTop() + getChildAt(0).getTop(); + } }