Fix WindowLeaked issue on AttachmentPreview am: 1412b40ec6 am: 7ad96ef75f am: 994ef53939 am: 268e6717f1
Change-Id: I87624b6e9887a1415f3b0e9365c6e54ba55c356c
This commit is contained in:
@@ -57,6 +57,8 @@ public class AttachmentPreview extends ScrollView implements OnAttachmentClickLi
|
||||
private Runnable mHideRunnable;
|
||||
private boolean mPendingHideCanceled;
|
||||
|
||||
private PopupTransitionAnimation mPopupTransitionAnimation;
|
||||
|
||||
private static final int CLOSE_BUTTON_REVEAL_STAGGER_MILLIS = 300;
|
||||
|
||||
public AttachmentPreview(final Context context, final AttributeSet attrs) {
|
||||
@@ -132,6 +134,7 @@ public class AttachmentPreview extends ScrollView implements OnAttachmentClickLi
|
||||
public void run() {
|
||||
// Only hide if we are didn't get overruled by showing
|
||||
if (!mPendingHideCanceled) {
|
||||
stopPopupAnimation();
|
||||
mAttachmentView.removeAllViews();
|
||||
setVisibility(GONE);
|
||||
}
|
||||
@@ -280,10 +283,19 @@ public class AttachmentPreview extends ScrollView implements OnAttachmentClickLi
|
||||
mHideRunnable.run();
|
||||
}
|
||||
|
||||
static void tryAnimateViewIn(final MessagePartData attachmentData, final View view) {
|
||||
private void tryAnimateViewIn(final MessagePartData attachmentData, final View view) {
|
||||
if (attachmentData instanceof MediaPickerMessagePartData) {
|
||||
final Rect startRect = ((MediaPickerMessagePartData) attachmentData).getStartRect();
|
||||
new PopupTransitionAnimation(startRect, view).startAfterLayoutComplete();
|
||||
stopPopupAnimation();
|
||||
mPopupTransitionAnimation = new PopupTransitionAnimation(startRect, view);
|
||||
mPopupTransitionAnimation.startAfterLayoutComplete();
|
||||
}
|
||||
}
|
||||
|
||||
private void stopPopupAnimation() {
|
||||
if (mPopupTransitionAnimation != null) {
|
||||
mPopupTransitionAnimation.cancel();
|
||||
mPopupTransitionAnimation = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.android.messaging.datamodel.data.MessagePartData;
|
||||
import com.android.messaging.datamodel.data.PendingAttachmentData;
|
||||
import com.android.messaging.datamodel.media.ImageRequestDescriptor;
|
||||
import com.android.messaging.ui.AsyncImageView.AsyncImageViewDelayLoader;
|
||||
import com.android.messaging.ui.animation.PopupTransitionAnimation;
|
||||
import com.android.messaging.util.AccessibilityUtil;
|
||||
import com.android.messaging.util.Assert;
|
||||
import com.android.messaging.util.UiUtils;
|
||||
@@ -275,7 +276,11 @@ public class MultiAttachmentLayout extends FrameLayout {
|
||||
// views will slide from their previous position to their new position within the
|
||||
// layout
|
||||
if (i == 0) {
|
||||
AttachmentPreview.tryAnimateViewIn(attachment, attachmentWrapper.view);
|
||||
if (attachment instanceof MediaPickerMessagePartData) {
|
||||
final Rect startRect = ((MediaPickerMessagePartData) attachment).getStartRect();
|
||||
new PopupTransitionAnimation(startRect, attachmentWrapper.view)
|
||||
.startAfterLayoutComplete();
|
||||
}
|
||||
}
|
||||
attachmentWrapper.needsSlideAnimation = i > 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user