From 4072ab93a57bcb2ad9fab6f42edf3805420080ec Mon Sep 17 00:00:00 2001 From: Yuli Huang Date: Tue, 24 Apr 2012 15:20:28 +0800 Subject: Add prominent highlights for touch feedback. Mimic the system UI to fade out highlights on touch releases. bug:6145331 bug:5379176 Change-Id: I44c9245a926b2c5eb46b28d494c6393ba7f0c30c --- .../android/gallery3d/ui/AlbumSetSlotRenderer.java | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java') diff --git a/src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java b/src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java index d20c387ae..b0e615392 100644 --- a/src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java +++ b/src/com/android/gallery3d/ui/AlbumSetSlotRenderer.java @@ -39,6 +39,7 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { private SlotView mSlotView; private int mPressedIndex = -1; + private boolean mAnimatePressedUp; private Path mHighlightItemPath = null; private boolean mInSelectionMode; @@ -72,6 +73,12 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { mSlotView.invalidate(); } + public void setPressedUp() { + if (mPressedIndex == -1) return; + mAnimatePressedUp = true; + mSlotView.invalidate(); + } + public void setHighlightItemPath(Path path) { if (mHighlightItemPath == path) return; mHighlightItemPath = path; @@ -111,15 +118,24 @@ public class AlbumSetSlotRenderer extends AbstractSlotRenderer { protected int renderOverlay( GLCanvas canvas, int index, AlbumSetEntry entry, int width, int height) { - Path path = entry.setPath; + int renderRequestFlags = 0; if (mPressedIndex == index) { - drawPressedFrame(canvas, width, height); - } else if ((path != null) && (mHighlightItemPath == path)) { + if (mAnimatePressedUp) { + drawPressedUpFrame(canvas, width, height); + renderRequestFlags |= SlotView.RENDER_MORE_FRAME; + if (isPressedUpFrameFinished()) { + mAnimatePressedUp = false; + mPressedIndex = -1; + } + } else { + drawPressedFrame(canvas, width, height); + } + } else if ((mHighlightItemPath != null) && (mHighlightItemPath == entry.setPath)) { drawSelectedFrame(canvas, width, height); - } else if (mInSelectionMode && mSelectionManager.isItemSelected(path)) { + } else if (mInSelectionMode && mSelectionManager.isItemSelected(entry.setPath)) { drawSelectedFrame(canvas, width, height); } - return 0; + return renderRequestFlags; } protected int renderContent( -- cgit v1.2.3