diff options
Diffstat (limited to 'src/com/android/launcher3')
7 files changed, 84 insertions, 11 deletions
diff --git a/src/com/android/launcher3/AbstractFloatingView.java b/src/com/android/launcher3/AbstractFloatingView.java index 599a3533d..e7d7a69fd 100644 --- a/src/com/android/launcher3/AbstractFloatingView.java +++ b/src/com/android/launcher3/AbstractFloatingView.java @@ -19,9 +19,11 @@ package com.android.launcher3; import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED; import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED; import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED; + import static com.android.launcher3.compat.AccessibilityManagerCompat.isAccessibilityEnabled; import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent; +import android.animation.Animator; import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; @@ -30,7 +32,11 @@ import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; +import androidx.annotation.IntDef; +import androidx.annotation.Nullable; + import com.android.launcher3.userevent.nano.LauncherLogProto.Action; +import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.util.TouchController; import com.android.launcher3.views.ActivityContext; import com.android.launcher3.views.BaseDragLayer; @@ -38,8 +44,6 @@ import com.android.launcher3.views.BaseDragLayer; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import androidx.annotation.IntDef; - /** * Base class for a View which shows a floating UI on top of the launcher UI. */ @@ -124,8 +128,20 @@ public abstract class AbstractFloatingView extends LinearLayout implements Touch protected abstract void handleClose(boolean animate); + /** + * Creates a user-controlled animation to hint that the view will be closed if completed. + * @param distanceToMove The max distance that elements should move from their starting point. + */ + public @Nullable Animator createHintCloseAnim(float distanceToMove) { + return null; + } + public abstract void logActionCommand(int command); + public int getLogContainerType() { + return ContainerType.DEFAULT_CONTAINERTYPE; + } + public final boolean isOpen() { return mIsOpen; } diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java index bcddd037e..2ce663433 100644 --- a/src/com/android/launcher3/folder/Folder.java +++ b/src/com/android/launcher3/folder/Folder.java @@ -1406,7 +1406,12 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo @Override public void logActionCommand(int command) { mLauncher.getUserEventDispatcher().logActionCommand( - command, getFolderIcon(), ContainerType.FOLDER); + command, getFolderIcon(), getLogContainerType()); + } + + @Override + public int getLogContainerType() { + return ContainerType.FOLDER; } @Override diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java index 080a0cb69..593dbd46c 100644 --- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java +++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java @@ -157,7 +157,12 @@ public class PopupContainerWithArrow extends ArrowPopup implements DragSource, @Override public void logActionCommand(int command) { mLauncher.getUserEventDispatcher().logActionCommand( - command, mOriginalIcon, ContainerType.DEEPSHORTCUTS); + command, mOriginalIcon, getLogContainerType()); + } + + @Override + public int getLogContainerType() { + return ContainerType.DEEPSHORTCUTS; } public OnClickListener getItemClickListener() { diff --git a/src/com/android/launcher3/views/BottomUserEducationView.java b/src/com/android/launcher3/views/BottomUserEducationView.java index a291fc605..bdc69af69 100644 --- a/src/com/android/launcher3/views/BottomUserEducationView.java +++ b/src/com/android/launcher3/views/BottomUserEducationView.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.views; +import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent; + import android.animation.PropertyValuesHolder; import android.content.Context; import android.graphics.Rect; @@ -28,8 +30,7 @@ import com.android.launcher3.Insettable; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.anim.Interpolators; - -import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent; +import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; public class BottomUserEducationView extends AbstractSlideInView implements Insettable { @@ -71,6 +72,11 @@ public class BottomUserEducationView extends AbstractSlideInView implements Inse } @Override + public int getLogContainerType() { + return ContainerType.TIP; + } + + @Override protected boolean isOfType(int type) { return (type & TYPE_ON_BOARD_POPUP) != 0; } diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java index df8266119..72cddc780 100644 --- a/src/com/android/launcher3/widget/BaseWidgetSheet.java +++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java @@ -162,11 +162,16 @@ abstract class BaseWidgetSheet extends AbstractSlideInView @Override public final void logActionCommand(int command) { - Target target = newContainerTarget(ContainerType.WIDGETS); + Target target = newContainerTarget(getLogContainerType()); target.cardinality = getElementsRowCount(); mLauncher.getUserEventDispatcher().logActionCommand(command, target); } + @Override + public int getLogContainerType() { + return ContainerType.WIDGETS; + } + protected abstract int getElementsRowCount(); protected SystemUiController getSystemUiController() { diff --git a/src/com/android/launcher3/widget/WidgetsBottomSheet.java b/src/com/android/launcher3/widget/WidgetsBottomSheet.java index 05368faa6..3e2c0aef4 100644 --- a/src/com/android/launcher3/widget/WidgetsBottomSheet.java +++ b/src/com/android/launcher3/widget/WidgetsBottomSheet.java @@ -16,10 +16,13 @@ package com.android.launcher3.widget; +import android.animation.Animator; +import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; +import android.util.IntProperty; import android.util.Pair; import android.view.Gravity; import android.view.LayoutInflater; @@ -27,6 +30,8 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import androidx.annotation.Nullable; + import com.android.launcher3.Insettable; import com.android.launcher3.ItemInfo; import com.android.launcher3.LauncherAppState; @@ -43,6 +48,20 @@ import java.util.List; */ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable { + private static final IntProperty<View> PADDING_BOTTOM = + new IntProperty<View>("paddingBottom") { + @Override + public void setValue(View view, int paddingBottom) { + view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), + view.getPaddingRight(), paddingBottom); + } + + @Override + public Integer get(View view) { + return view.getPaddingBottom(); + } + }; + private static final int DEFAULT_CLOSE_DURATION = 200; private ItemInfo mOriginalItemInfo; private Rect mInsets; @@ -158,8 +177,7 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable { int rightInset = insets.right - mInsets.right; int bottomInset = insets.bottom - mInsets.bottom; mInsets.set(insets); - setPadding(getPaddingLeft() + leftInset, getPaddingTop(), - getPaddingRight() + rightInset, getPaddingBottom() + bottomInset); + setPadding(leftInset, getPaddingTop(), rightInset, bottomInset); } @Override @@ -172,4 +190,10 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable { return Pair.create(findViewById(R.id.title), getContext().getString( mIsOpen ? R.string.widgets_list : R.string.widgets_list_closed)); } + + @Nullable + @Override + public Animator createHintCloseAnim(float distanceToMove) { + return ObjectAnimator.ofInt(this, PADDING_BOTTOM, (int) (distanceToMove + mInsets.bottom)); + } } diff --git a/src/com/android/launcher3/widget/WidgetsFullSheet.java b/src/com/android/launcher3/widget/WidgetsFullSheet.java index ec06d1e6d..521f5117a 100644 --- a/src/com/android/launcher3/widget/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/WidgetsFullSheet.java @@ -17,6 +17,8 @@ package com.android.launcher3.widget; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.content.Context; import android.graphics.Rect; @@ -27,6 +29,9 @@ import android.view.MotionEvent; import android.view.View; import android.view.animation.AnimationUtils; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + import com.android.launcher3.Insettable; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; @@ -35,8 +40,6 @@ import com.android.launcher3.R; import com.android.launcher3.views.RecyclerViewFastScroller; import com.android.launcher3.views.TopRoundedCornerView; -import androidx.annotation.VisibleForTesting; - /** * Popup for showing the full list of available widgets */ @@ -235,4 +238,13 @@ public class WidgetsFullSheet extends BaseWidgetSheet protected int getElementsRowCount() { return mAdapter.getItemCount(); } + + @Nullable + @Override + public Animator createHintCloseAnim(float distanceToMove) { + AnimatorSet anim = new AnimatorSet(); + anim.play(ObjectAnimator.ofFloat(mRecyclerView, TRANSLATION_Y, -distanceToMove)); + anim.play(ObjectAnimator.ofFloat(mRecyclerView, ALPHA, 0.5f)); + return anim; + } } |