Merge "Zen Mode QS tweaks."

This commit is contained in:
John Spurlock
2014-04-01 20:41:08 +00:00
committed by Android (Google) Code Review
3 changed files with 69 additions and 59 deletions

View File

@@ -248,6 +248,6 @@
<!-- Z distance between notifications if they are in the stack -->
<dimen name="z_distance_between_notifications">2dp</dimen>
<!-- Width of the zen mode interstitial dialog. Defaults to MATCH_PARENT. -->
<dimen name="zen_mode_dialog_width">-1px</dimen>
<!-- Width of the zen mode interstitial dialog. -->
<dimen name="zen_mode_dialog_width">320dp</dimen>
</resources>

View File

@@ -911,6 +911,7 @@ class QuickSettings {
d.getWindow().setAttributes(lp);
}
};
v.setAutoActivate(true);
v.setAdapter(new ZenModeViewAdapter(mContext) {
@Override
public void configure() {
@@ -928,7 +929,6 @@ class QuickSettings {
d.create();
d.getWindow().setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY);
WindowManager.LayoutParams lp = d.getWindow().getAttributes();
lp.horizontalMargin = 0;
lp.width = mContext.getResources().getDimensionPixelSize(R.dimen.zen_mode_dialog_width);
d.getWindow().setAttributes(lp);
d.show();

View File

@@ -16,11 +16,8 @@
package com.android.systemui.statusbar.phone;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.Typeface;
import android.graphics.drawable.ShapeDrawable;
@@ -39,14 +36,12 @@ import android.view.View;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.ZenModeView.Adapter.ExitCondition;
public class ZenModeView extends RelativeLayout {
@@ -63,20 +58,21 @@ public class ZenModeView extends RelativeLayout {
private static final long DURATION = new ValueAnimator().getDuration();
private static final long PAGER_DURATION = DURATION / 2;
private static final float BOUNCE_SCALE = 0.8f;
private static final long CLOSE_DELAY = 600;
private static final long AUTO_ACTIVATE_DELAY = 100;
private final Context mContext;
private final Paint mPathPaint;
private final ImageView mSettingsButton;
private final TextView mModeText;
private final Switch mModeSwitch;
private final View mDivider;
private final UntilPager mUntilPager;
private final ProgressDots mProgressDots;
private final View mDivider2;
private final TextView mSettingsButton;
private Adapter mAdapter;
private boolean mInit;
private boolean mAutoActivate;
public ZenModeView(Context context) {
this(context, null);
@@ -90,29 +86,9 @@ public class ZenModeView extends RelativeLayout {
final int iconSize = mContext.getResources()
.getDimensionPixelSize(com.android.internal.R.dimen.notification_large_icon_width);
final int topRowSize = iconSize * 2 / 3;
final int p = topRowSize / 7;
final int p = topRowSize / 3;
mPathPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPathPaint.setStyle(Paint.Style.STROKE);
mPathPaint.setColor(GRAY);
mPathPaint.setStrokeWidth(p / 2);
mSettingsButton = new ImageView(mContext);
mSettingsButton.setPadding(p, p, p, p);
mSettingsButton.setImageResource(R.drawable.ic_notify_settings_normal);
LayoutParams lp = new LayoutParams(topRowSize, topRowSize);
lp.topMargin = p;
lp.leftMargin = p;
addView(mSettingsButton, lp);
mSettingsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAdapter != null) {
mAdapter.configure();
}
bounce(mSettingsButton, null);
}
});
LayoutParams lp = null;
mModeText = new TextView(mContext);
mModeText.setText(MODE_LABEL);
@@ -120,11 +96,10 @@ public class ZenModeView extends RelativeLayout {
mModeText.setTextColor(GRAY);
mModeText.setTypeface(CONDENSED);
mModeText.setAllCaps(true);
mModeText.setGravity(Gravity.CENTER);
mModeText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mModeText.getTextSize() * 1.1f);
mModeText.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
mModeText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mModeText.getTextSize() * 1.5f);
lp = new LayoutParams(LayoutParams.WRAP_CONTENT, topRowSize);
lp.topMargin = p;
lp.addRule(CENTER_HORIZONTAL);
lp.leftMargin = p;
addView(mModeText, lp);
mModeSwitch = new Switch(mContext);
@@ -132,6 +107,7 @@ public class ZenModeView extends RelativeLayout {
mModeSwitch.setSwitchTypeface(CONDENSED);
lp = new LayoutParams(LayoutParams.WRAP_CONTENT, topRowSize);
lp.topMargin = p;
lp.rightMargin = p;
lp.addRule(ALIGN_PARENT_RIGHT);
lp.addRule(ALIGN_BASELINE, mModeText.getId());
addView(mModeSwitch, lp);
@@ -154,11 +130,10 @@ public class ZenModeView extends RelativeLayout {
mDivider.setBackgroundColor(GRAY);
lp = new LayoutParams(LayoutParams.MATCH_PARENT, 2);
lp.addRule(BELOW, mModeText.getId());
lp.topMargin = p;
lp.bottomMargin = p * 2;
lp.bottomMargin = p;
addView(mDivider, lp);
mUntilPager = new UntilPager(mContext, mPathPaint, iconSize * 3 / 4);
mUntilPager = new UntilPager(mContext, iconSize * 3 / 4);
mUntilPager.setId(android.R.id.tabhost);
lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.leftMargin = lp.rightMargin = iconSize / 2;
@@ -167,10 +142,41 @@ public class ZenModeView extends RelativeLayout {
addView(mUntilPager, lp);
mProgressDots = new ProgressDots(mContext, iconSize / 5);
mProgressDots.setId(android.R.id.progress);
lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(CENTER_HORIZONTAL);
lp.addRule(BELOW, mUntilPager.getId());
addView(mProgressDots, lp);
mDivider2 = new View(mContext);
mDivider2.setId(android.R.id.widget_frame);
mDivider2.setBackgroundColor(GRAY);
lp = new LayoutParams(LayoutParams.MATCH_PARENT, 2);
lp.addRule(BELOW, mProgressDots.getId());
addView(mDivider2, lp);
mSettingsButton = new TextView(mContext);
mSettingsButton.setTypeface(CONDENSED);
mSettingsButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, mSettingsButton.getTextSize() * 1.3f);
mSettingsButton.setPadding(p, p, p, p);
mSettingsButton.setText("More settings...");
lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lp.addRule(BELOW, mDivider2.getId());
addView(mSettingsButton, lp);
mSettingsButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mSettingsButton.setBackgroundColor(DARK_GRAY);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
mSettingsButton.setBackground(null);
if (mAdapter != null) {
mAdapter.configure();
}
}
return true;
}
});
}
public void setAdapter(Adapter adapter) {
@@ -189,6 +195,27 @@ public class ZenModeView extends RelativeLayout {
updateState(false);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (mAutoActivate) {
mAutoActivate = false;
postDelayed(new Runnable() {
@Override
public void run() {
if (!mModeSwitch.isChecked()) {
mInit = false;
mModeSwitch.setChecked(true);
}
}
}, AUTO_ACTIVATE_DELAY);
}
}
public void setAutoActivate(boolean value) {
mAutoActivate = value;
}
private void updateState(boolean animate) {
mUntilPager.updateState();
mModeSwitch.setChecked(mAdapter.getMode());
@@ -199,23 +226,6 @@ public class ZenModeView extends RelativeLayout {
Log.d(TAG, args == null || args.length == 0 ? msg : String.format(msg, args));
}
private static void bounce(final View v, final Runnable midBounce) {
v.animate().scaleX(BOUNCE_SCALE).scaleY(BOUNCE_SCALE).setDuration(DURATION / 3)
.setListener(new AnimatorListenerAdapter() {
private boolean mFired;
@Override
public void onAnimationEnd(Animator animation) {
if (!mFired) {
mFired = true;
if (midBounce != null) {
midBounce.run();
}
v.animate().scaleX(1).scaleY(1).setListener(null).start();
}
}
}).start();
}
private final class UntilView extends FrameLayout {
private static final boolean SUPPORT_LINKS = false;
@@ -223,7 +233,7 @@ public class ZenModeView extends RelativeLayout {
public UntilView(Context context) {
super(context);
mText = new TextView(mContext);
mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mText.getTextSize() * 1.2f);
mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mText.getTextSize() * 1.3f);
mText.setTypeface(CONDENSED);
mText.setTextColor(GRAY);
mText.setGravity(Gravity.CENTER);
@@ -284,7 +294,7 @@ public class ZenModeView extends RelativeLayout {
private int mCurrent;
private float mDownX;
public UntilPager(Context context, Paint pathPaint, int iconSize) {
public UntilPager(Context context, int iconSize) {
super(context);
mViews = new UntilView[3];
for (int i = 0; i < mViews.length; i++) {