Merge "Large-screen notification panel size + positioning." into jb-dev

This commit is contained in:
Daniel Sandler
2012-05-03 07:30:50 -07:00
committed by Android (Google) Code Review
13 changed files with 252 additions and 380 deletions

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
**
** Copyright 2012, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- This is the combined status bar / notification panel window. -->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:fitsSystemWindows="true"
>
<include layout="@layout/status_bar_expanded"
android:layout_width="@dimen/notification_panel_width"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal|top"
/>
<include layout="@layout/status_bar"
android:layout_width="match_parent"
android:layout_height="@*android:dimen/status_bar_height"
/>
</FrameLayout>

View File

@@ -21,120 +21,114 @@
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:focusable="true"
android:descendantFocusability="afterDescendants"
android:id="@+id/notification_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/notification_tracking_bg"
android:paddingTop="@*android:dimen/status_bar_height"
android:layout_marginLeft="@dimen/notification_panel_margin_left"
>
<FrameLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/notification_panel"
android:background="@drawable/notification_tracking_bg"
android:paddingTop="@*android:dimen/status_bar_height"
android:layout_height="52dp"
android:paddingTop="3dp"
android:paddingBottom="5dp"
android:paddingRight="3dp"
android:background="@drawable/notification_header_bg"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="52dp"
android:paddingTop="3dp"
android:paddingBottom="5dp"
android:paddingRight="3dp"
android:background="@drawable/notification_header_bg"
>
<com.android.systemui.statusbar.policy.DateView android:id="@+id/date"
android:textAppearance="@style/TextAppearance.StatusBar.Date"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:singleLine="true"
android:gravity="center_vertical|left"
android:paddingLeft="16dp"
/>
<!--
<com.android.systemui.statusbar.phone.CarrierLabel
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="1dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center_vertical"
android:paddingBottom="1dp"
android:paddingLeft="4dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?android:attr/textColorSecondary"
/>
-->
<ImageView android:id="@+id/settings_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toRightOf="@id/date"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:src="@drawable/ic_notify_quicksettings"
android:contentDescription="@string/accessibility_settings_button"
/>
<ImageView android:id="@+id/clear_all_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:src="@drawable/ic_notify_clear"
android:contentDescription="@string/accessibility_clear_all"
/>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="52dp"
android:background="@drawable/status_bar_hr"
/>
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
<com.android.systemui.statusbar.policy.DateView android:id="@+id/date"
android:textAppearance="@style/TextAppearance.StatusBar.Date"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:fadingEdge="none"
android:overScrollMode="ifContentScrolls"
android:layout_marginTop="54dp"
android:layout_marginBottom="34dp"
>
<com.android.systemui.statusbar.policy.NotificationRowLayout
android:id="@+id/latestItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
systemui:rowHeight="@dimen/notification_height"
/>
</ScrollView>
<ImageView
android:layout_alignParentLeft="true"
android:singleLine="true"
android:gravity="center_vertical|left"
android:paddingLeft="16dp"
/>
<!--
<com.android.systemui.statusbar.phone.CarrierLabel
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="1dp"
android:layout_marginLeft="5dp"
android:layout_gravity="center_vertical"
android:paddingBottom="1dp"
android:paddingLeft="4dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?android:attr/textColorSecondary"
/>
-->
<ImageView android:id="@+id/settings_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toRightOf="@id/date"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:src="@drawable/ic_notify_quicksettings"
android:contentDescription="@string/accessibility_settings_button"
/>
<ImageView android:id="@+id/clear_all_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:src="@drawable/ic_notify_clear"
android:contentDescription="@string/accessibility_clear_all"
/>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="52dp"
android:background="@drawable/status_bar_hr"
/>
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadingEdge="none"
android:overScrollMode="ifContentScrolls"
android:layout_marginTop="54dp"
android:layout_marginBottom="34dp"
>
<com.android.systemui.statusbar.policy.NotificationRowLayout
android:id="@+id/latestItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/title_bar_shadow"
android:layout_marginTop="54dp"
android:scaleType="fitXY"
/>
<com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close"
android:layout_width="match_parent"
android:layout_height="@dimen/close_handle_height"
android:layout_gravity="bottom"
android:orientation="vertical"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="34dp"
android:layout_gravity="bottom"
android:scaleType="fitXY"
android:src="@drawable/status_bar_close_on"
/>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout><!-- end of sliding panel -->
systemui:rowHeight="@dimen/notification_height"
/>
</ScrollView>
</FrameLayout><!-- end of window -->
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/title_bar_shadow"
android:layout_marginTop="54dp"
android:scaleType="fitXY"
/>
<com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close"
android:layout_width="match_parent"
android:layout_height="@dimen/close_handle_height"
android:layout_gravity="bottom"
android:orientation="vertical"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="34dp"
android:layout_gravity="bottom"
android:scaleType="fitXY"
android:src="@drawable/status_bar_close_on"
/>
</com.android.systemui.statusbar.phone.CloseDragHandle>
</FrameLayout><!-- end of sliding panel -->

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
* Copyright (c) 2010, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources>
<!-- gap on either side of status bar notification icons -->
<dimen name="status_bar_icon_padding">2dp</dimen>
</resources>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable name="status_bar_background">#000000</drawable>
<drawable name="notification_icon_area_smoke">#aa000000</drawable>
</resources>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2010, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
<!-- Whether or not we show the number in the bar. -->
<bool name="config_statusBarShowNumber">false</bool>
</resources>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
* Copyright (c) 2010, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources>
<!-- The width of the ticker, including the icon -->
<dimen name="notification_ticker_width">360dp</dimen>
<!-- Status bar panel bottom offset (height of status bar - overlap) -->
<dimen name="status_bar_panel_bottom_offset">36dp</dimen>
<!-- gap on either side of status bar notification icons -->
<dimen name="status_bar_icon_padding">8dp</dimen>
</resources>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright (c) 2010, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- The text for the button in the notification window-shade that clears
all of the currently visible notifications. [CHAR LIMIT=10]-->
<string name="status_bar_clear_all_button">Clear all</string>
<!-- Separator for PLMN and SPN in network name. -->
<string name="status_bar_network_name_separator" translatable="false">" – "</string>
<!-- Title for the pseudo-notification shown when notifications are disabled (do-not-disturb
mode) -->
<string name="notifications_off_title">Notifications off</string>
<!-- Content text for do-not-disturb mode notification -->
<string name="notifications_off_text">Tap here to turn notifications back on.</string>
</resources>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
* Copyright (c) 2012, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources>
<!-- Layout parameters for the notification panel -->
<dimen name="notification_panel_margin_bottom">0dp</dimen>
<dimen name="notification_panel_margin_left">32dp</dimen>
<!-- Gravity for the notification panel -->
<!-- 0x33 = left|top -->
<integer name="notification_panel_layout_gravity">0x33</integer>
</resources>

View File

@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
<integer name="config_maxNotificationIcons">3</integer>
</resources>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
* Copyright (c) 2011, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources>
<!-- gap on either side of status bar notification icons -->
<dimen name="status_bar_icon_padding">0dp</dimen>
<!-- The width of the view containing non-menu status bar icons -->
<dimen name="navigation_key_width">70dip</dimen>
<!-- The width of the view containing the menu status bar icon -->
<dimen name="navigation_menu_key_width">40dip</dimen>
</resources>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
* Copyright (c) 2012, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources>
<!-- The width of the notification panel window -->
<dimen name="notification_panel_width">446dp</dimen>
<!-- Layout parameters for the notification panel -->
<dimen name="notification_panel_margin_bottom">192dp</dimen>
<dimen name="notification_panel_margin_left">0dp</dimen>
<!-- Gravity for the notification panel -->
<!-- 0x33 = center_horizontal|top -->
<integer name="notification_panel_layout_gravity">0x31</integer>
</resources>

View File

@@ -120,4 +120,12 @@
<!-- Height of the draggable handle at the bottom of the phone notification panel -->
<dimen name="close_handle_height">34dp</dimen>
<!-- Layout parameters for the notification panel -->
<dimen name="notification_panel_margin_bottom">0dp</dimen>
<dimen name="notification_panel_margin_left">0dp</dimen>
<!-- Gravity for the notification panel -->
<!-- 0x37 = fill_horizontal|top -->
<integer name="notification_panel_layout_gravity">0x37</integer>
</resources>

View File

@@ -46,6 +46,7 @@ import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Slog;
import android.util.TypedValue;
import android.view.Display;
import android.view.Gravity;
import android.view.IWindowManager;
@@ -61,6 +62,7 @@ import android.view.WindowManagerImpl;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RemoteViews;
@@ -158,6 +160,9 @@ public class PhoneStatusBar extends BaseStatusBar {
View mNotificationPanel; // the sliding/resizing panel within the notification window
ScrollView mScrollView;
View mExpandedContents;
int mNotificationPanelMarginBottomPx, mNotificationPanelMarginLeftPx;
int mNotificationPanelGravity;
// top bar
View mClearButton;
View mSettingsButton;
@@ -279,6 +284,17 @@ public class PhoneStatusBar extends BaseStatusBar {
if (DEBUG) {
mStatusBarWindow.setBackgroundColor(0x6000FF80);
}
mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (mExpanded && !mAnimating) {
animateCollapse();
}
}
return true;
}});
mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel);
@@ -1111,7 +1127,7 @@ public class PhoneStatusBar extends BaseStatusBar {
// Expand the window to encompass the full screen in anticipation of the drag.
// This is only possible to do atomically because the status bar is at the top of the screen!
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();
lp.height = mDisplayMetrics.heightPixels;
lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
final WindowManager wm = WindowManagerImpl.getDefault();
wm.updateViewLayout(mStatusBarWindow, lp);
@@ -1162,7 +1178,7 @@ public class PhoneStatusBar extends BaseStatusBar {
if (mAnimating) {
y = (int)mAnimY;
} else {
y = mDisplayMetrics.heightPixels-1;
y = getExpandedViewMaxHeight()-1;
}
// Let the fling think that we're open so it goes in the right direction
// and doesn't try to re-open the windowshade.
@@ -1224,7 +1240,7 @@ public class PhoneStatusBar extends BaseStatusBar {
if (SPEW) Slog.d(TAG, "doAnimation before mAnimY=" + mAnimY);
incrementAnim();
if (SPEW) Slog.d(TAG, "doAnimation after mAnimY=" + mAnimY);
if (mAnimY >= mDisplayMetrics.heightPixels-1) {
if (mAnimY >= getExpandedViewMaxHeight()-1) {
if (SPEW) Slog.d(TAG, "Animation completed to expanded state.");
mAnimating = false;
updateExpandedViewPos(EXPANDED_FULL_OPEN);
@@ -1329,7 +1345,7 @@ public class PhoneStatusBar extends BaseStatusBar {
if (mExpanded) {
if (!always && (
vel > mFlingCollapseMinVelocityPx
|| (y > (mDisplayMetrics.heightPixels*(1f-mCollapseMinDisplayFraction)) &&
|| (y > (getExpandedViewMaxHeight()*(1f-mCollapseMinDisplayFraction)) &&
vel > -mFlingExpandMinVelocityPx))) {
// We are expanded, but they didn't move sufficiently to cause
// us to retract. Animate back to the expanded position.
@@ -1348,7 +1364,7 @@ public class PhoneStatusBar extends BaseStatusBar {
} else {
if (always || (
vel > mFlingExpandMinVelocityPx
|| (y > (mDisplayMetrics.heightPixels*(1f-mExpandMinDisplayFraction)) &&
|| (y > (getExpandedViewMaxHeight()*(1f-mExpandMinDisplayFraction)) &&
vel > -mFlingCollapseMinVelocityPx))) {
// We are collapsed, and they moved enough to allow us to
// expand. Animate in the notifications.
@@ -1412,7 +1428,8 @@ public class PhoneStatusBar extends BaseStatusBar {
// mViewDelta = mAbsPos[1] + mTrackingView.getHeight() - y;
}
if ((!mExpanded && y < hitSize) ||
(mExpanded && y > (mDisplayMetrics.heightPixels-hitSize))) {
// @@ add taps outside the panel if it's not full-screen
(mExpanded && y > (getExpandedViewMaxHeight()-hitSize))) {
// We drop events at the edge of the screen to make the windowshade come
// down by accident less, especially when pushing open a device with a keyboard
@@ -1864,15 +1881,22 @@ public class PhoneStatusBar extends BaseStatusBar {
return a < 0f ? 0f : (a > 1f ? 1f : a);
}
int getExpandedViewMaxHeight() {
return mDisplayMetrics.heightPixels - mNotificationPanelMarginBottomPx;
}
void updateExpandedViewPos(int expandedPosition) {
if (SPEW) {
Slog.d(TAG, "updateExpandedViewPos before expandedPosition=" + expandedPosition
//+ " mTrackingParams.y=" + ((mTrackingParams == null) ? "?" : mTrackingParams.y)
+ " mTrackingPosition=" + mTrackingPosition);
+ " mTrackingPosition=" + mTrackingPosition
+ " gravity=" + mNotificationPanelGravity);
}
int panelh = 0;
final int disph = mDisplayMetrics.heightPixels;
final boolean portrait = mDisplayMetrics.heightPixels > mDisplayMetrics.widthPixels;
final int disph = getExpandedViewMaxHeight();
// If the expanded view is not visible, make sure they're still off screen.
// Maybe the view was resized.
@@ -1906,113 +1930,25 @@ public class PhoneStatusBar extends BaseStatusBar {
mTrackingPosition = panelh;
final View cropView = mNotificationPanel;
ViewGroup.LayoutParams lp = cropView.getLayoutParams();
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mNotificationPanel.getLayoutParams();
lp.height = panelh;
lp.gravity = mNotificationPanelGravity;
lp.leftMargin = mNotificationPanelMarginLeftPx;
if (SPEW) {
Slog.v(TAG, "updated cropView height=" + panelh);
Slog.v(TAG, "updated cropView height=" + panelh + " grav=" + lp.gravity);
}
cropView.setLayoutParams(lp);
mNotificationPanel.setLayoutParams(lp);
// woo, special effects
final int barh = getCloseViewHeight() + getStatusBarHeight();
final float frac = saturate((float)(panelh - barh) / (disph - barh));
final int color = ((int)(0xB0 * Math.sin(frac * 1.57f))) << 24;
mStatusBarWindow.setBackgroundColor(color);
// Slog.d(TAG, String.format("updateExpanded: pos=%d frac=%.2f col=0x%08x", pos, frac, color));
// if (mExpandedParams != null) {
// if (mCloseView.getWindowVisibility() == View.VISIBLE) {
// mCloseView.getLocationInWindow(mPositionTmp);
// final int closePos = mPositionTmp[1];
//
// mExpandedContents.getLocationInWindow(mPositionTmp);
// final int contentsBottom = mPositionTmp[1] + mExpandedContents.getHeight();
//
// mExpandedParams.y = pos + mTrackingView.getHeight()
// - (mTrackingParams.height-closePos) - contentsBottom;
//
// if (SPEW) {
// Slog.d(PhoneStatusBar.TAG,
// "pos=" + pos +
// " trackingHeight=" + mTrackingView.getHeight() +
// " (trackingParams.height - closePos)=" +
// (mTrackingParams.height - closePos) +
// " contentsBottom=" + contentsBottom);
// }
//
// } else {
// // If the tracking view is not yet visible, then we can't have
// // a good value of the close view location. We need to wait for
// // it to be visible to do a layout.
// mExpandedParams.y = -mDisplayMetrics.heightPixels;
// }
// int max = h;
// if (mExpandedParams.y > max) {
// mExpandedParams.y = max;
// }
// int min = mTrackingPosition;
// if (mExpandedParams.y < min) {
// mExpandedParams.y = min;
// }
//
// boolean visible = (mTrackingPosition + mTrackingView.getHeight()) > h;
// if (!visible) {
// // if the contents aren't visible, move the expanded view way off screen
// // because the window itself extends below the content view.
// mExpandedParams.y = -disph;
// }
// mExpandedDialog.getWindow().setAttributes(mExpandedParams);
//
// // As long as this isn't just a repositioning that's not supposed to affect
// // the user's perception of what's showing, call to say that the visibility
// // has changed. (Otherwise, someone else will call to do that).
// if (expandedPosition != EXPANDED_LEAVE_ALONE) {
// if (SPEW) Slog.d(TAG, "updateExpandedViewPos visibilityChanged(" + visible + ")");
// visibilityChanged(visible);
// }
// }
//
// if (SPEW) {
// Slog.d(TAG, "updateExpandedViewPos after expandedPosition=" + expandedPosition
// + " mTrackingParams.y=" + mTrackingParams.y
// + " mTrackingPosition=" + mTrackingPosition
// + " mExpandedParams.y=" + mExpandedParams.y
// + " mExpandedParams.height=" + mExpandedParams.height);
// }
}
int getExpandedHeight() {
return mDisplayMetrics.heightPixels;
}
void updateDisplaySize() {
mDisplay.getMetrics(mDisplayMetrics);
// if (DEBUG) {
// Slog.d(TAG, "updateDisplaySize: " + mDisplayMetrics);
// }
// updateExpandedSize();
}
// void updateExpandedSize() {
// if (DEBUG) {
// Slog.d(TAG, "updateExpandedSize()");
// }
// if (mStatusBarWindow != null && mDisplayMetrics != null) {
// mExpandedParams.width = mDisplayMetrics.widthPixels;
// mExpandedParams.height = getExpandedHeight();
// if (!mExpandedVisible) {
// updateExpandedInvisiblePosition();
// } else {
// mExpandedDialog.getWindow().setAttributes(mExpandedParams);
// }
// if (DEBUG) {
// Slog.d(TAG, "updateExpandedSize: height=" + mExpandedParams.height + " " +
// (mExpandedVisible ? "VISIBLE":"INVISIBLE"));
// }
// }
// }
void performDisableActions(int net) {
int old = mDisabled;
int diff = net ^ old;
@@ -2152,8 +2088,9 @@ public class PhoneStatusBar extends BaseStatusBar {
animateCollapse(excludeRecents);
}
else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
repositionNavigationBar();
updateResources();
repositionNavigationBar();
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
}
}
};
@@ -2228,6 +2165,15 @@ public class PhoneStatusBar extends BaseStatusBar {
mCollapseAccelPx = res.getDimension(R.dimen.collapse_accel);
mFlingGestureMaxXVelocityPx = res.getDimension(R.dimen.fling_gesture_max_x_velocity);
mNotificationPanelMarginBottomPx
= (int) res.getDimension(R.dimen.notification_panel_margin_bottom);
mNotificationPanelMarginLeftPx
= (int) res.getDimension(R.dimen.notification_panel_margin_left);
mNotificationPanelGravity = res.getInteger(R.integer.notification_panel_layout_gravity);
if (mNotificationPanelGravity <= 0) {
mNotificationPanelGravity = Gravity.CENTER_VERTICAL | Gravity.TOP;
}
if (false) Slog.v(TAG, "updateResources");
}