diff options
author | Chih-Chung Chang <chihchung@google.com> | 2009-07-13 13:11:52 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2009-07-14 10:35:15 +0800 |
commit | d918cfa6846593ceb844196a6d0012f3f350252f (patch) | |
tree | 8e6c37335f86d4da0cde9754aa508a46612334a3 /src/com/android/camera/Switcher.java | |
parent | 584d9a3d7b368d68aef213bd85786257a6d686ac (diff) | |
download | LegacyCamera-d918cfa6846593ceb844196a6d0012f3f350252f.zip LegacyCamera-d918cfa6846593ceb844196a6d0012f3f350252f.tar.gz LegacyCamera-d918cfa6846593ceb844196a6d0012f3f350252f.tar.bz2 |
Fix 1973541: The mode switcher does not correspond to the actual mode.
Diffstat (limited to 'src/com/android/camera/Switcher.java')
-rw-r--r-- | src/com/android/camera/Switcher.java | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/com/android/camera/Switcher.java b/src/com/android/camera/Switcher.java index e02636b..06e0af5 100644 --- a/src/com/android/camera/Switcher.java +++ b/src/com/android/camera/Switcher.java @@ -20,13 +20,17 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; +import android.util.Log; import android.view.MotionEvent; import android.view.animation.AnimationUtils; import android.widget.ImageView; public class Switcher extends ImageView { + private static final String TAG = "Switcher"; + public interface OnSwitchListener { - public void onSwitchChanged(Switcher source, boolean onOff); + // Returns true if the listener agrees that the switch can be changed. + public boolean onSwitchChanged(Switcher source, boolean onOff); } private static final int ANIMATION_SPEED = 200; @@ -42,9 +46,19 @@ public class Switcher extends ImageView { } public void setSwitch(boolean onOff) { - if (mSwitch == onOff) return; - mSwitch = onOff; - if (mListener != null) mListener.onSwitchChanged(this, mSwitch); + try { + if (mSwitch == onOff) return; + + if (mListener != null) { + if (!mListener.onSwitchChanged(this, onOff)) { + return; + } + } + + mSwitch = onOff; + } finally { + startParkingAnimation(); + } } public void setOnSwitchListener(OnSwitchListener listener) { @@ -72,13 +86,12 @@ public class Switcher extends ImageView { case MotionEvent.ACTION_UP: trackTouchEvent(event); setSwitch(mPosition >= available / 2); - startParkingAnimation(); setPressed(false); break; case MotionEvent.ACTION_CANCEL: + setSwitch(mSwitch); setPressed(false); - startParkingAnimation(); break; } return true; |