am cbd067e8: Merge "Dim status icons / battery / clock on opaque bars." into klp-dev

* commit 'cbd067e87537874ce216c02cab2ab46b5980b634':
  Dim status icons / battery / clock on opaque bars.
This commit is contained in:
John Spurlock
2013-09-03 13:35:29 -07:00
committed by Android Git Automerger
4 changed files with 38 additions and 66 deletions

View File

@@ -70,7 +70,6 @@ import com.android.systemui.R;
import com.android.systemui.RecentsComponent;
import com.android.systemui.SearchPanelView;
import com.android.systemui.SystemUI;
import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.policy.NotificationRowLayout;
import java.util.ArrayList;
@@ -828,7 +827,7 @@ public abstract class BaseStatusBar extends SystemUI implements
// Construct the icon.
final StatusBarIconView iconView = new StatusBarIconView(mContext,
notification.getPackageName() + "/0x" + Integer.toHexString(notification.getId()),
notification.getNotification(), getStatusBarMode());
notification.getNotification());
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
final StatusBarIcon ic = new StatusBarIcon(notification.getPackageName(),
@@ -851,10 +850,6 @@ public abstract class BaseStatusBar extends SystemUI implements
return entry;
}
protected int getStatusBarMode() {
return BarTransitions.MODE_OPAQUE;
}
protected void addNotificationViews(NotificationData.Entry entry) {
// Add the expanded view and icon.
int pos = mNotificationData.add(entry);

View File

@@ -16,11 +16,6 @@
package com.android.systemui.statusbar;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
import android.animation.ObjectAnimator;
import android.app.Notification;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -53,13 +48,10 @@ public class StatusBarIconView extends AnimatedImageView {
private int mNumberY;
private String mNumberText;
private Notification mNotification;
private final float mAlphaWhenOpaque;
private final float mAlphaWhenTransparent = 1;
public StatusBarIconView(Context context, String slot, Notification notification, int mode) {
public StatusBarIconView(Context context, String slot, Notification notification) {
super(context);
final Resources res = context.getResources();
mAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
mSlot = slot;
mNumberPain = new Paint();
mNumberPain.setTextAlign(Paint.Align.CENTER);
@@ -76,7 +68,6 @@ public class StatusBarIconView extends AnimatedImageView {
final float scale = (float)imageBounds / (float)outerBounds;
setScaleX(scale);
setScaleY(scale);
setAlpha(getAlphaFor(mode));
}
setScaleType(ImageView.ScaleType.CENTER);
@@ -85,22 +76,11 @@ public class StatusBarIconView extends AnimatedImageView {
public StatusBarIconView(Context context, AttributeSet attrs) {
super(context, attrs);
final Resources res = context.getResources();
mAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
final float scale = (float)imageBounds / (float)outerBounds;
setScaleX(scale);
setScaleY(scale);
setAlpha(getAlphaFor(MODE_OPAQUE));
}
public ObjectAnimator animateTransitionTo(int mode) {
return ObjectAnimator.ofFloat(this, "alpha", getAlpha(), getAlphaFor(mode));
}
public float getAlphaFor(int mode) {
final boolean isTransparent = mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT;
return isTransparent ? mAlphaWhenTransparent : mAlphaWhenOpaque;
}
private static boolean streq(String a, String b) {

View File

@@ -839,7 +839,7 @@ public class PhoneStatusBar extends BaseStatusBar {
public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {
if (SPEW) Log.d(TAG, "addIcon slot=" + slot + " index=" + index + " viewIndex=" + viewIndex
+ " icon=" + icon);
StatusBarIconView view = new StatusBarIconView(mContext, slot, null, getStatusBarMode());
StatusBarIconView view = new StatusBarIconView(mContext, slot, null);
view.set(icon);
mStatusIcons.addView(view, viewIndex, new LinearLayout.LayoutParams(mIconSize, mIconSize));
}
@@ -1857,11 +1857,6 @@ public class PhoneStatusBar extends BaseStatusBar {
}
}
@Override
protected int getStatusBarMode() {
return mStatusBarView.getBarTransitions().getMode();
}
private int computeBarMode(int oldVis, int newVis, BarTransitions transitions,
int transientFlag, int transparentFlag) {
final int oldMode = barMode(oldVis, transientFlag, transparentFlag);

View File

@@ -16,8 +16,12 @@
package com.android.systemui.statusbar.phone;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.ActivityManager;
import android.content.Context;
import android.content.res.Resources;
@@ -27,15 +31,10 @@ import android.util.EventLog;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import com.android.systemui.EventLogTags;
import com.android.systemui.R;
import com.android.systemui.statusbar.StatusBarIconView;
import java.util.ArrayList;
import java.util.List;
public class PhoneStatusBarView extends PanelBar {
private static final String TAG = "PhoneStatusBarView";
@@ -56,11 +55,22 @@ public class PhoneStatusBarView extends PanelBar {
private final class StatusBarTransitions extends BarTransitions {
private final int mTransparent;
private final float mAlphaWhenOpaque;
private final float mAlphaWhenTransparent = 1;
private View mLeftSide;
private View mRightSide;
public StatusBarTransitions(Context context) {
super(context, PhoneStatusBarView.this);
final Resources res = context.getResources();
mTransparent = res.getColor(R.color.status_bar_background_transparent);
mAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
}
public void init() {
mLeftSide = findViewById(R.id.notification_icon_area);
mRightSide = findViewById(R.id.system_icon_area);
applyMode(getMode(), false /*animate*/);
}
@Override
@@ -69,41 +79,32 @@ public class PhoneStatusBarView extends PanelBar {
return super.getBackgroundColor(mode);
}
public ObjectAnimator animateTransitionTo(View v, float toAlpha) {
return ObjectAnimator.ofFloat(v, "alpha", v.getAlpha(), toAlpha);
}
public float getAlphaFor(int mode) {
final boolean isTransparent = mode == MODE_SEMI_TRANSPARENT || mode == MODE_TRANSPARENT;
return isTransparent ? mAlphaWhenTransparent : mAlphaWhenOpaque;
}
@Override
protected void onTransition(int oldMode, int newMode, boolean animate) {
super.onTransition(oldMode, newMode, animate);
applyMode(newMode, animate);
}
private void applyMode(int mode, boolean animate) {
float newAlpha = getAlphaFor(mode);
if (animate) {
List<Animator> animators = new ArrayList<Animator>();
for(StatusBarIconView icon : findStatusBarIcons()) {
animators.add(icon.animateTransitionTo(newMode));
}
ObjectAnimator lhs = animateTransitionTo(mLeftSide, newAlpha);
ObjectAnimator rhs = animateTransitionTo(mRightSide, newAlpha);
AnimatorSet set = new AnimatorSet();
set.playTogether(animators);
set.playTogether(lhs, rhs);
set.start();
} else {
for(StatusBarIconView icon : findStatusBarIcons()) {
icon.setAlpha(icon.getAlphaFor(newMode));
}
}
}
private List<StatusBarIconView> findStatusBarIcons() {
List<StatusBarIconView> icons = new ArrayList<StatusBarIconView>();
findStatusBarIcons(icons, findViewById(R.id.moreIcon));
findStatusBarIcons(icons, findViewById(R.id.statusIcons));
findStatusBarIcons(icons, findViewById(R.id.notificationIcons));
return icons;
}
private void findStatusBarIcons(List<StatusBarIconView> icons, View v) {
if (v instanceof StatusBarIconView) {
icons.add((StatusBarIconView) v);
} else if (v instanceof ViewGroup) {
ViewGroup group = (ViewGroup) v;
final int N = group.getChildCount();
for (int i = 0; i < N; i++) {
findStatusBarIcons(icons, group.getChildAt(i));
}
mLeftSide.setAlpha(newAlpha);
mRightSide.setAlpha(newAlpha);
}
}
}
@@ -140,6 +141,7 @@ public class PhoneStatusBarView extends PanelBar {
for (PanelView pv : mPanels) {
pv.setRubberbandingEnabled(!mFullWidthNotifications);
}
mBarTransitions.init();
}
@Override