summaryrefslogtreecommitdiff
path: root/core/java/android/view/VolumePanel.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2011-08-18 17:40:29 -0700
committerAmith Yamasani <yamasani@google.com>2011-08-18 17:40:29 -0700
commitbaf6dbfa9340f3266e41841ebd51f21effc583ee (patch)
tree408c2eb8f954f4ae3e1874e99f725495d5735d13 /core/java/android/view/VolumePanel.java
parent3d01812f5e147ab4e842fb5e61179ed5cd4313b8 (diff)
Dismiss the volume overlay dialog when user touches above the dialog as well.
Bug: 5165168 Change-Id: Ib343c3b88371cb93f8241b1085d1a2f36a77b1ac
Diffstat (limited to 'core/java/android/view/VolumePanel.java')
-rw-r--r--core/java/android/view/VolumePanel.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java
index cb85e5fa9817..e1aa9a491839 100644
--- a/core/java/android/view/VolumePanel.java
+++ b/core/java/android/view/VolumePanel.java
@@ -101,6 +101,8 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
/** Dialog's content view */
private final View mView;
+ /** The visible portion of the volume overlay */
+ private final ViewGroup mPanel;
/** Contains the sliders and their touchable icons */
private final ViewGroup mSliderGroup;
/** The button that expands the dialog to show all sliders */
@@ -173,10 +175,23 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
View view = mView = inflater.inflate(R.layout.volume_adjust, null);
mView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
+ // Dismiss the dialog if the user touches outside the visible area. This is not
+ // handled by the usual dialog dismissing code because there is a region above
+ // the panel (marginTop) that is still within the dialog.
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ int x = (int) event.getX();
+ int y = (int) event.getY();
+ if (x < mPanel.getLeft() || x > mPanel.getRight() || y < mPanel.getTop()
+ || y > mPanel.getBottom()) {
+ forceTimeout();
+ return true;
+ }
+ }
resetTimeout();
return true;
}
});
+ mPanel = (ViewGroup) mView.findViewById(R.id.visible_panel);
mSliderGroup = (ViewGroup) mView.findViewById(R.id.slider_group);
mMoreButton = (ImageView) mView.findViewById(R.id.expand_button);
mDivider = (ImageView) mView.findViewById(R.id.expand_button_divider);
@@ -639,6 +654,11 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
sendMessageDelayed(obtainMessage(MSG_TIMEOUT), TIMEOUT_DELAY);
}
+ private void forceTimeout() {
+ removeMessages(MSG_TIMEOUT);
+ sendMessage(obtainMessage(MSG_TIMEOUT));
+ }
+
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
final Object tag = seekBar.getTag();