am 781f55b2: Make the responsive region larger for the Picture/Video mode switch.
Merge commit '781f55b23ec3c3f97189efaba9d214183109f769'
* commit '781f55b23ec3c3f97189efaba9d214183109f769':
Make the responsive region larger for the Picture/Video mode switch.
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 727b7d3..ff0471c 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -747,6 +747,7 @@
inflater.inflate(R.layout.camera_control, rootView);
mSwitcher = ((Switcher) findViewById(R.id.camera_switch));
mSwitcher.setOnSwitchListener(this);
+ mSwitcher.addTouchView(findViewById(R.id.camera_switch_set));
}
// Make sure preview is started.
diff --git a/src/com/android/camera/Switcher.java b/src/com/android/camera/Switcher.java
index 06e0af5..3c7fc44 100644
--- a/src/com/android/camera/Switcher.java
+++ b/src/com/android/camera/Switcher.java
@@ -22,10 +22,11 @@
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
+import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
-public class Switcher extends ImageView {
+public class Switcher extends ImageView implements View.OnTouchListener {
private static final String TAG = "Switcher";
public interface OnSwitchListener {
@@ -46,6 +47,13 @@
}
public void setSwitch(boolean onOff) {
+ if (mSwitch == onOff) return;
+ mSwitch = onOff;
+ invalidate();
+ }
+
+ // Try to change the switch position. (The client can veto it.)
+ private void tryToSetSwitch(boolean onOff) {
try {
if (mSwitch == onOff) return;
@@ -85,12 +93,12 @@
case MotionEvent.ACTION_UP:
trackTouchEvent(event);
- setSwitch(mPosition >= available / 2);
+ tryToSetSwitch(mPosition >= available / 2);
setPressed(false);
break;
case MotionEvent.ACTION_CANCEL:
- setSwitch(mSwitch);
+ tryToSetSwitch(mSwitch);
setPressed(false);
break;
}
@@ -160,4 +168,15 @@
canvas.restoreToCount(saveCount);
}
+ // Consume the touch events for the specified view.
+ public void addTouchView(View v) {
+ v.setOnTouchListener(this);
+ }
+
+ // This implements View.OnTouchListener so we intercept the touch events
+ // and pass them to ourselves.
+ public boolean onTouch(View v, MotionEvent event) {
+ onTouchEvent(event);
+ return true;
+ }
}
diff --git a/src/com/android/camera/VideoCamera.java b/src/com/android/camera/VideoCamera.java
index 0d10b09..ba6296d 100644
--- a/src/com/android/camera/VideoCamera.java
+++ b/src/com/android/camera/VideoCamera.java
@@ -259,6 +259,7 @@
mThumbController.loadData(ImageManager.getLastVideoThumbPath());
mSwitcher = ((Switcher) findViewById(R.id.camera_switch));
mSwitcher.setOnSwitchListener(this);
+ mSwitcher.addTouchView(findViewById(R.id.camera_switch_set));
} else {
View controlBar = inflater.inflate(
R.layout.attach_camera_control, rootView);