PhoneStatusBarView.java revision fd52b18d9bf3cd62c7a07058536e9f97db65beea
115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2008 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 17fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onoratopackage com.android.systemui.statusbar.phone; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 20d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackbornimport android.content.res.Configuration; 21d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackbornimport android.graphics.Canvas; 22119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onoratoimport android.graphics.Rect; 23d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackbornimport android.os.SystemClock; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewGroup; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewParent; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.FrameLayout; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3179de0c550037a5328bbc7f4fddaf02f192a5c283Joe Onoratoimport com.android.systemui.R; 32fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onoratoimport com.android.systemui.statusbar.policy.FixedSizeDrawable; 3379de0c550037a5328bbc7f4fddaf02f192a5c283Joe Onorato 34fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onoratopublic class PhoneStatusBarView extends FrameLayout { 35fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onorato private static final String TAG = "PhoneStatusBarView"; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 37d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn static final int DIM_ANIM_TIME = 400; 38d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn 39fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onorato PhoneStatusBar mService; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean mTracking; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mStartX, mStartY; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup mNotificationIcons; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup mStatusIcons; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project View mDate; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FixedSizeDrawable mBackground; 46d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn 47d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn boolean mNightMode = false; 48d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn int mStartAlpha = 0, mEndAlpha = 0; 49d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn long mEndTime = 0; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 51119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato Rect mButtonBounds = new Rect(); 52119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato boolean mCapturingEvents = true; 53119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato 54fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onorato public PhoneStatusBarView(Context context, AttributeSet attrs) { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context, attrs); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onFinishInflate() { 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onFinishInflate(); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNotificationIcons = (ViewGroup)findViewById(R.id.notificationIcons); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStatusIcons = (ViewGroup)findViewById(R.id.statusIcons); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDate = findViewById(R.id.date); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBackground = new FixedSizeDrawable(mDate.getBackground()); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBackground.setFixedBounds(0, 0, 0, 0); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDate.setBackgroundDrawable(mBackground); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onAttachedToWindow() { 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onAttachedToWindow(); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.onBarViewAttached(); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 75d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn 76d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn @Override 77d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn protected void onConfigurationChanged(Configuration newConfig) { 78d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn super.onConfigurationChanged(newConfig); 79d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn boolean nightMode = (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) 80d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn == Configuration.UI_MODE_NIGHT_YES; 81d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn if (mNightMode != nightMode) { 82d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn mNightMode = nightMode; 83d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn mStartAlpha = getCurAlpha(); 84d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn mEndAlpha = mNightMode ? 0x80 : 0x00; 85d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn mEndTime = SystemClock.uptimeMillis() + DIM_ANIM_TIME; 86d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn invalidate(); 87d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 88d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 90d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn int getCurAlpha() { 91d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn long time = SystemClock.uptimeMillis(); 92d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn if (time > mEndTime) { 93d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn return mEndAlpha; 94d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 95d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn return mEndAlpha 96d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn - (int)(((mEndAlpha-mStartAlpha) * (mEndTime-time) / DIM_ANIM_TIME)); 97d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 98d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onSizeChanged(int w, int h, int oldw, int oldh) { 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onSizeChanged(w, h, oldw, oldh); 102fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onorato mService.updateExpandedViewPos(PhoneStatusBar.EXPANDED_LEAVE_ALONE); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onLayout(boolean changed, int l, int t, int r, int b) { 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onLayout(changed, l, t, r, b); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // put the date date view quantized to the icons 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int oldDateRight = mDate.getRight(); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int newDateRight; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project newDateRight = getDateSize(mNotificationIcons, oldDateRight, 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getViewOffset(mNotificationIcons)); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (newDateRight < 0) { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int offset = getViewOffset(mStatusIcons); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (oldDateRight < offset) { 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project newDateRight = oldDateRight; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project newDateRight = getDateSize(mStatusIcons, oldDateRight, offset); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (newDateRight < 0) { 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project newDateRight = r; 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int max = r - getPaddingRight(); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (newDateRight > max) { 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project newDateRight = max; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDate.layout(mDate.getLeft(), mDate.getTop(), newDateRight, mDate.getBottom()); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBackground.setFixedBounds(-mDate.getLeft(), -mDate.getTop(), (r-l), (b-t)); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 135d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn @Override 136d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn protected void dispatchDraw(Canvas canvas) { 137d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn super.dispatchDraw(canvas); 138d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn int alpha = getCurAlpha(); 139d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn if (alpha != 0) { 140d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn canvas.drawARGB(alpha, 0, 0, 0); 141d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 142d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn if (alpha != mEndAlpha) { 143d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn invalidate(); 144d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 145d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn } 146d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the left position of v in this view. Throws if v is not 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a child of this. 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int getViewOffset(View v) { 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int offset = 0; 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (v != this) { 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset += v.getLeft(); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewParent p = v.getParent(); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (v instanceof View) { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v = (View)p; 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException(v + " is not a child of " + this); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return offset; 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int getDateSize(ViewGroup g, int w, int offset) { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int N = g.getChildCount(); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project View v = g.getChildAt(i); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int l = v.getLeft() + offset; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int r = v.getRight() + offset; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (w >= l && w <= r) { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return r; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Ensure that, if there is no target under us to receive the touch, 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that we process it ourself. This makes sure that onInterceptTouchEvent() 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is always called for the entire gesture. 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onTouchEvent(MotionEvent event) { 185119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato if (!mCapturingEvents) { 186119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato return false; 187119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato } 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (event.getAction() != MotionEvent.ACTION_DOWN) { 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.interceptTouchEvent(event); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onInterceptTouchEvent(MotionEvent event) { 196119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato if (event.getAction() == MotionEvent.ACTION_DOWN) { 197119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato if (mButtonBounds.contains((int)event.getX(), (int)event.getY())) { 198119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato mCapturingEvents = false; 199119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato return false; 200119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato } 201119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato } 202119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato mCapturingEvents = true; 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.interceptTouchEvent(event) 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ? true : super.onInterceptTouchEvent(event); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 208