diff options
| author | Amith Yamasani <yamasani@google.com> | 2011-08-18 17:40:29 -0700 |
|---|---|---|
| committer | Amith Yamasani <yamasani@google.com> | 2011-08-18 17:40:29 -0700 |
| commit | baf6dbfa9340f3266e41841ebd51f21effc583ee (patch) | |
| tree | 408c2eb8f954f4ae3e1874e99f725495d5735d13 /core/java/android/view/VolumePanel.java | |
| parent | 3d01812f5e147ab4e842fb5e61179ed5cd4313b8 (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.java | 20 |
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(); |
