diff options
author | The Android Automerger <android-build@android.com> | 2010-04-28 12:21:11 -0700 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2010-04-28 12:21:11 -0700 |
commit | e88fcadb066bbf555d5341d813b793afbdb2394e (patch) | |
tree | 543d703fff29a55a748782ca3d0b945090915604 | |
parent | 2d3faf4f6c87fad64c7bf7d50e37156fa21f5c41 (diff) | |
parent | 993d2efb7406675dbb1882cd287dc972366d5251 (diff) | |
download | android_packages_apps_Trebuchet-e88fcadb066bbf555d5341d813b793afbdb2394e.tar.gz android_packages_apps_Trebuchet-e88fcadb066bbf555d5341d813b793afbdb2394e.tar.bz2 android_packages_apps_Trebuchet-e88fcadb066bbf555d5341d813b793afbdb2394e.zip |
Merge branch 'froyo' into froyo-release
-rw-r--r-- | res/values-cs/strings.xml | 2 | ||||
-rw-r--r-- | res/values-de/strings.xml | 2 | ||||
-rw-r--r-- | res/values-es-rUS/strings.xml | 2 | ||||
-rw-r--r-- | res/values-es/strings.xml | 2 | ||||
-rw-r--r-- | res/values-ko/strings.xml | 2 | ||||
-rw-r--r-- | res/values-pt/strings.xml | 8 | ||||
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 106 |
7 files changed, 84 insertions, 40 deletions
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index bad273061..104f28618 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -46,7 +46,7 @@ <string name="shortcut_uninstalled" msgid="2129499669449749995">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl odebrán."</string> <string name="shortcut_duplicate" msgid="4757756326465060694">"Zástupce <xliff:g id="NAME">%s</xliff:g> již existuje."</string> <string name="title_select_shortcut" msgid="2858897527672831763">"Vyberte zástupce"</string> - <string name="title_select_live_folder" msgid="3753447798805166749">"Vybrat složku"</string> + <string name="title_select_live_folder" msgid="3753447798805166749">"Vyberte složku"</string> <string name="all_apps_button_label" msgid="3953036962111614813">"Všechny aplikace"</string> <string name="all_apps_home_button_label" msgid="1022222300329398558">"Plocha"</string> <string name="menu_add" msgid="3065046628354640854">"Přidat"</string> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 2c1076583..e4f705e7b 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -19,7 +19,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="application_name" msgid="8424725141379931883">"Launcher"</string> + <string name="application_name" msgid="8424725141379931883">"Übersicht"</string> <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string> <string name="folder_name" msgid="4588446541914685904">"Ordner"</string> <string name="chooser_wallpaper" msgid="5988031014201479733">"Hintergrund auswählen"</string> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index d4746ab4c..5f6b4e505 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -23,7 +23,7 @@ <string name="uid_name" msgid="3371120195364560632">"Aplicaciones del núcleo de Android"</string> <string name="folder_name" msgid="4588446541914685904">"Carpeta"</string> <string name="chooser_wallpaper" msgid="5988031014201479733">"Seleccionar papel tapiz desde"</string> - <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir papel tapiz"</string> + <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir como fondo de pantalla"</string> <string name="pick_wallpaper" msgid="5630222540525626723">"Papeles tapiz"</string> <string name="activity_not_found" msgid="3571057450431950427">"La aplicación no está instalada en tu computadora."</string> <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 5ded7a8ff..36dd82b93 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -31,7 +31,7 @@ <string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string> <string name="rename_action" msgid="6016003384693240896">"Aceptar"</string> <string name="cancel_action" msgid="3811860427489435048">"Cancelar"</string> - <string name="menu_item_add_item" msgid="6233177331075781114">"Añadir a pantalla de inicio"</string> + <string name="menu_item_add_item" msgid="6233177331075781114">"Añadir a pantalla principal"</string> <string name="group_applications" msgid="4118484163419674240">"Aplicaciones"</string> <string name="group_shortcuts" msgid="9133529424900391877">"Accesos directos"</string> <string name="group_folder" msgid="5143593791798929193">"Nueva carpeta"</string> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index f8250f4ef..5702b33d5 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -40,7 +40,7 @@ <string name="group_wallpapers" msgid="1568191644272224858">"배경화면"</string> <string name="add_folder" msgid="3521088587367839879">"폴더"</string> <string name="add_clock" msgid="2337943840175865746">"시계"</string> - <string name="add_photo_frame" msgid="3154058437359487954">"사진 프레임"</string> + <string name="add_photo_frame" msgid="3154058437359487954">"사진 액자"</string> <string name="out_of_space" msgid="8365249326091984698">"홈 화면에 더 이상 공간이 없습니다."</string> <string name="shortcut_installed" msgid="7071557296331322355">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 생성되었습니다."</string> <string name="shortcut_uninstalled" msgid="2129499669449749995">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 삭제되었습니다."</string> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 0dbed9309..b72f7e074 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -22,8 +22,8 @@ <string name="application_name" msgid="8424725141379931883">"Launcher"</string> <string name="uid_name" msgid="3371120195364560632">"Principais aplicativos do Android"</string> <string name="folder_name" msgid="4588446541914685904">"Pasta"</string> - <string name="chooser_wallpaper" msgid="5988031014201479733">"Selecionar papel de parede de"</string> - <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir papel de parede"</string> + <string name="chooser_wallpaper" msgid="5988031014201479733">"Selecionar plano de fundo de"</string> + <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir plano de fundo"</string> <string name="pick_wallpaper" msgid="5630222540525626723">"Papéis de parede"</string> <string name="activity_not_found" msgid="3571057450431950427">"O aplicativo não está instalado no seu telefone."</string> <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string> @@ -50,8 +50,8 @@ <string name="all_apps_button_label" msgid="3953036962111614813">"Todos os aplicativos"</string> <string name="all_apps_home_button_label" msgid="1022222300329398558">"Página inicial"</string> <string name="menu_add" msgid="3065046628354640854">"Adicionar"</string> - <string name="menu_wallpaper" msgid="5837429080911269832">"Papel de parede"</string> - <string name="menu_search" msgid="4826514464423239041">"Pesquisar"</string> + <string name="menu_wallpaper" msgid="5837429080911269832">"Plano de fundo"</string> + <string name="menu_search" msgid="4826514464423239041">"Pesquisa"</string> <string name="menu_notifications" msgid="6424587053194766192">"Notificações"</string> <string name="menu_gestures" msgid="514678675575912237">"Gestos"</string> <string name="menu_settings" msgid="6233960148378443661">"Configurações"</string> diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index b85b12c83..d84d4cdd5 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -42,7 +42,7 @@ import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewParent; -import android.view.animation.OvershootInterpolator; +import android.view.animation.Interpolator; import android.widget.Scroller; import android.widget.TextView; @@ -119,6 +119,35 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag private Drawable mPreviousIndicator; private Drawable mNextIndicator; + private WorkspaceOvershootInterpolator mScrollInterpolator; + + private static final float BASELINE_FLING_VELOCITY = 2500.f; + private static final float FLING_VELOCITY_INFLUENCE = 0.4f; + + private static class WorkspaceOvershootInterpolator implements Interpolator { + private static final float DEFAULT_TENSION = 1.3f; + private float mTension; + + public WorkspaceOvershootInterpolator() { + mTension = DEFAULT_TENSION; + } + + public void setDistance(int distance) { + mTension = distance > 0 ? DEFAULT_TENSION / distance : DEFAULT_TENSION; + } + + public void disableSettle() { + mTension = 0.f; + } + + public float getInterpolation(float t) { + // _o(t) = t * t * ((tension + 1) * t + tension) + // o(t) = _o(t - 1) + 1 + t -= 1.0f; + return t * t * ((mTension + 1) * t + mTension) + 1.0f; + } + } + /** * Used to inflate the Workspace from XML. * @@ -154,7 +183,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag */ private void initWorkspace() { Context context = getContext(); - mScroller = new Scroller(context, new OvershootInterpolator()); + mScrollInterpolator = new WorkspaceOvershootInterpolator(); + mScroller = new Scroller(context, mScrollInterpolator); mCurrentScreen = mDefaultScreen; Launcher.setScreen(mCurrentScreen); LauncherApplication app = (LauncherApplication)context.getApplicationContext(); @@ -429,17 +459,14 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag drawChild(canvas, getChildAt(mCurrentScreen), getDrawingTime()); } else { final long drawingTime = getDrawingTime(); - // If we are flinging, draw only the current screen and the target screen - if (mNextScreen >= 0 && mNextScreen < getChildCount() && - Math.abs(mCurrentScreen - mNextScreen) == 1) { - drawChild(canvas, getChildAt(mCurrentScreen), drawingTime); - drawChild(canvas, getChildAt(mNextScreen), drawingTime); - } else { - // If we are scrolling, draw all of our children - final int count = getChildCount(); - for (int i = 0; i < count; i++) { - drawChild(canvas, getChildAt(i), drawingTime); - } + final float scrollPos = (float) mScrollX / getWidth(); + final int leftScreen = (int) scrollPos; + final int rightScreen = leftScreen + 1; + if (leftScreen >= 0) { + drawChild(canvas, getChildAt(leftScreen), drawingTime); + } + if (scrollPos != leftScreen && rightScreen < getChildCount()) { + drawChild(canvas, getChildAt(rightScreen), drawingTime); } } @@ -757,8 +784,11 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag void enableChildrenCache(int fromScreen, int toScreen) { if (fromScreen > toScreen) { - fromScreen = toScreen; - toScreen = fromScreen; + final int temp = fromScreen; + fromScreen = toScreen - 1; + toScreen = temp; + } else { + toScreen++; } final int count = getChildCount(); @@ -857,15 +887,15 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag // Don't fling across more than one screen at a time. final int bound = scrolledPos < whichScreen ? mCurrentScreen - 1 : mCurrentScreen; - snapToScreen(Math.min(whichScreen, bound)); + snapToScreen(Math.min(whichScreen, bound), velocityX, true); } else if (velocityX < -SNAP_VELOCITY && mCurrentScreen < getChildCount() - 1) { // Fling hard enough to move right // Don't fling across more than one screen at a time. final int bound = scrolledPos > whichScreen ? mCurrentScreen + 1 : mCurrentScreen; - snapToScreen(Math.max(whichScreen, bound)); + snapToScreen(Math.max(whichScreen, bound), velocityX, true); } else { - snapToDestination(); + snapToScreen(whichScreen, 0, true); } if (mVelocityTracker != null) { @@ -887,15 +917,12 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag return true; } - - private void snapToDestination() { - final int screenWidth = getWidth(); - final int whichScreen = (mScrollX + (screenWidth / 2)) / screenWidth; - - snapToScreen(whichScreen); + + void snapToScreen(int whichScreen) { + snapToScreen(whichScreen, 0, false); } - void snapToScreen(int whichScreen) { + private void snapToScreen(int whichScreen, int velocity, boolean settle) { //if (!mScroller.isFinished()) return; whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1)); @@ -903,24 +930,41 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag clearVacantCache(); enableChildrenCache(mCurrentScreen, whichScreen); - final int screenDelta = Math.abs(whichScreen - mCurrentScreen); - mNextScreen = whichScreen; mPreviousIndicator.setLevel(mNextScreen); mNextIndicator.setLevel(mNextScreen); View focusedChild = getFocusedChild(); - if (focusedChild != null && screenDelta != 0 && focusedChild == getChildAt(mCurrentScreen)) { + if (focusedChild != null && whichScreen != mCurrentScreen && + focusedChild == getChildAt(mCurrentScreen)) { focusedChild.clearFocus(); } + final int screenDelta = Math.max(1, Math.abs(whichScreen - mCurrentScreen)); final int newX = whichScreen * getWidth(); final int delta = newX - mScrollX; - final int duration = screenDelta != 0 ? screenDelta * 300 : 300; - awakenScrollBars(duration); + int duration = (screenDelta + 1) * 100; - if (!mScroller.isFinished()) mScroller.abortAnimation(); + if (!mScroller.isFinished()) { + mScroller.abortAnimation(); + } + + if (settle) { + mScrollInterpolator.setDistance(screenDelta); + } else { + mScrollInterpolator.disableSettle(); + } + + velocity = Math.abs(velocity); + if (velocity > 0) { + duration += (duration / (velocity / BASELINE_FLING_VELOCITY)) + * FLING_VELOCITY_INFLUENCE; + } else { + duration += 100; + } + + awakenScrollBars(duration); mScroller.startScroll(mScrollX, 0, delta, 0, duration); invalidate(); } |