summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2014-10-28 00:57:10 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2014-10-28 00:57:11 +0000
commite5d27a22a6908026d346e86389cf414b5badeab6 (patch)
tree1718045fafbb725a0d7f45150a64a4ba70d359aa
parent80c9fbe36fe8b1e298a70c465e85ee677fc12e12 (diff)
parentd4e7790fee10e21b41a1c387c2734722bda56a0b (diff)
Merge "Play CLICK sound effect when compound buttons are clicked" into lmp-mr1-dev
-rw-r--r--core/java/android/widget/CompoundButton.java18
-rw-r--r--core/java/android/widget/Switch.java10
2 files changed, 18 insertions, 10 deletions
diff --git a/core/java/android/widget/CompoundButton.java b/core/java/android/widget/CompoundButton.java
index 7d9d3052fe22..092e31c5a6b4 100644
--- a/core/java/android/widget/CompoundButton.java
+++ b/core/java/android/widget/CompoundButton.java
@@ -29,6 +29,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.Gravity;
+import android.view.SoundEffectConstants;
import android.view.ViewDebug;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -114,15 +115,16 @@ public abstract class CompoundButton extends Button implements Checkable {
@Override
public boolean performClick() {
- /*
- * XXX: These are tiny, need some surrounding 'expanded touch area',
- * which will need to be implemented in Button if we only override
- * performClick()
- */
-
- /* When clicked, toggle the state */
toggle();
- return super.performClick();
+
+ final boolean handled = super.performClick();
+ if (!handled) {
+ // View only makes a sound effect if the onClickListener was
+ // called, so we'll need to make one here instead.
+ playSoundEffect(SoundEffectConstants.CLICK);
+ }
+
+ return handled;
}
@ViewDebug.ExportedProperty
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index a8980849af43..4c8aa519108c 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -39,6 +39,7 @@ import android.util.FloatProperty;
import android.util.MathUtils;
import android.view.Gravity;
import android.view.MotionEvent;
+import android.view.SoundEffectConstants;
import android.view.VelocityTracker;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
@@ -797,6 +798,7 @@ public class Switch extends CompoundButton {
// Commit the change if the event is up and not canceled and the switch
// has not been disabled during the drag.
final boolean commitChange = ev.getAction() == MotionEvent.ACTION_UP && isEnabled();
+ final boolean oldState = isChecked();
final boolean newState;
if (commitChange) {
mVelocityTracker.computeCurrentVelocity(1000);
@@ -807,10 +809,14 @@ public class Switch extends CompoundButton {
newState = getTargetCheckedState();
}
} else {
- newState = isChecked();
+ newState = oldState;
+ }
+
+ if (newState != oldState) {
+ playSoundEffect(SoundEffectConstants.CLICK);
+ setChecked(newState);
}
- setChecked(newState);
cancelSuperTouch(ev);
}