Fix flicker when long pressing to drag and drop
Initial creation of drag shadow now uses the same layout
logic as drag hovering so that the shadow does not jump upon
first creation.
Removed setPressed from onLongClick listener to avoid toggling
of pressed state when drag was started.
Bug: 10991974
Change-Id: I186cd62060e3a79913aa89fb7af989f3497e0b10
diff --git a/res/layout/phone_favorite_regular_row_view.xml b/res/layout/phone_favorite_regular_row_view.xml
index 2e4dde2..a90117f 100644
--- a/res/layout/phone_favorite_regular_row_view.xml
+++ b/res/layout/phone_favorite_regular_row_view.xml
@@ -24,8 +24,7 @@
android:id="@+id/contact_favorite_card"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground" >
+ android:focusable="true">
<com.android.contacts.common.widget.LayoutSuppressingQuickContactBadge
android:id="@+id/contact_tile_quick"
diff --git a/src/com/android/dialer/list/PhoneFavoriteListView.java b/src/com/android/dialer/list/PhoneFavoriteListView.java
index 10b9e9a..b685e82 100644
--- a/src/com/android/dialer/list/PhoneFavoriteListView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteListView.java
@@ -306,14 +306,6 @@
}
}
- private FrameLayout.LayoutParams getDragShadowLayoutParams() {
- final FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
- mDragShadowWidth, mDragShadowHeight);
- lp.leftMargin = mDragShadowLeft;
- lp.topMargin = mDragShadowTop;
- return lp;
- }
-
/**
* @return True if the drag is started.
*/
@@ -361,7 +353,8 @@
mDragShadowOverlay.setVisibility(VISIBLE);
mDragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
- mDragShadowOverlay.setLayoutParams(getDragShadowLayoutParams());
+ mDragShadowOverlay.setX(mDragShadowLeft);
+ mDragShadowOverlay.setY(mDragShadowTop);
// x and y passed in are the coordinates of where the user has touched down, calculate
// the offset to the top left coordinate of the dragged child. This will be used for
diff --git a/src/com/android/dialer/list/PhoneFavoriteTileView.java b/src/com/android/dialer/list/PhoneFavoriteTileView.java
index 7657451..ac89fd6 100644
--- a/src/com/android/dialer/list/PhoneFavoriteTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteTileView.java
@@ -96,7 +96,6 @@
setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
- setPressed(false);
final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
// NOTE The drag shadow is handled in the ListView.
if (view instanceof PhoneFavoriteRegularRowView) {
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index ce18a2b..a4a2cb4 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -772,7 +772,6 @@
setVisibility(View.VISIBLE);
}
}
- setPressed(false);
}
private void addTileFromEntry(ContactEntry entry, int childIndex, boolean isLastRow) {