diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml index 6ecbe06fd28b4..e025e2748fb26 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml @@ -25,55 +25,19 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top"> - - - - + android:paddingStart="@dimen/clock_padding_start"> + android:layout_alignParentStart="true" + android:layout_below="@id/lockscreen_clock_view" /> diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_status_area.xml b/packages/SystemUI/res-keyguard/layout/keyguard_status_area.xml index 9f3ca7459a6ba..95eb5c1d5f1aa 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_status_area.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_status_area.xml @@ -25,6 +25,7 @@ android:layout_gravity="center_horizontal" android:clipToPadding="false" android:orientation="vertical" + android:paddingStart="@dimen/below_clock_padding_start" android:layout_centerHorizontal="true"> - diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml index 07bd2e6f05055..9b8035d100ad4 100644 --- a/packages/SystemUI/res-keyguard/values/dimens.xml +++ b/packages/SystemUI/res-keyguard/values/dimens.xml @@ -90,4 +90,8 @@ 72dp 6dp 12dp + + + 28dp + 32dp diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index eb19b2eaba9a4..44d4ddad626ac 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1086,8 +1086,9 @@ burn-in on AOD. --> 42dp - + 150dp + 86dp 15dp diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java index d2a82cf190b31..407146fa991ca 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java @@ -4,35 +4,21 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; -import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Paint; import android.graphics.Paint.Style; -import android.os.Build; -import android.transition.Fade; -import android.transition.Transition; -import android.transition.TransitionListenerAdapter; -import android.transition.TransitionManager; -import android.transition.TransitionSet; -import android.transition.TransitionValues; import android.util.AttributeSet; -import android.util.Log; -import android.util.MathUtils; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.RelativeLayout; -import android.widget.TextClock; -import android.widget.TextView; import com.android.internal.colorextraction.ColorExtractor; import com.android.keyguard.dagger.KeyguardStatusViewScope; import com.android.systemui.R; import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.ClockPlugin; -import com.android.systemui.statusbar.StatusBarState; -import com.android.systemui.util.wakelock.KeepAwakeAnimationListener; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -47,53 +33,21 @@ public class KeyguardClockSwitch extends RelativeLayout { private static final String TAG = "KeyguardClockSwitch"; - /** - * Animation fraction when text is transitioned to/from bold. - */ - private static final float TO_BOLD_TRANSITION_FRACTION = 0.7f; - private static final long CLOCK_OUT_MILLIS = 150; private static final long CLOCK_IN_MILLIS = 200; - /** - * Layout transition that scales the default clock face. - */ - private final Transition mTransition; - - private final ClockVisibilityTransition mClockTransition; - private final ClockVisibilityTransition mBoldClockTransition; - /** * Optional/alternative clock injected via plugin. */ private ClockPlugin mClockPlugin; /** - * Default clock. + * Frame for small/large clocks */ - private TextClock mClockView; - - /** - * Default clock, bold version. - * Used to transition to bold when shrinking the default clock. - */ - private TextClock mClockViewBold; - - /** - * Frame for clock when mode != KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL. - */ - private FrameLayout mNewLockscreenClockFrame; - private FrameLayout mNewLockscreenLargeClockFrame; - - /** - * Frame for default and custom clock. - */ - private FrameLayout mSmallClockFrame; - - /** - * Container for big custom clock. - */ - private ViewGroup mBigClockContainer; + private FrameLayout mClockFrame; + private FrameLayout mLargeClockFrame; + private AnimatableClockView mClockView; + private AnimatableClockView mLargeClockView; /** * Status area (date and other stuff) shown below the clock. Plugin can decide whether or not to @@ -117,40 +71,23 @@ public class KeyguardClockSwitch extends RelativeLayout { /** * If the Keyguard Slice has a header (big center-aligned text.) */ - private boolean mShowingHeader; private boolean mSupportsDarkText; private int[] mColorPalette; - private int mLockScreenMode = KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL; private int mClockSwitchYAmount; public KeyguardClockSwitch(Context context, AttributeSet attrs) { super(context, attrs); - - mClockTransition = new ClockVisibilityTransition().setCutoff( - 1 - TO_BOLD_TRANSITION_FRACTION); - mClockTransition.addTarget(R.id.default_clock_view); - mBoldClockTransition = new ClockVisibilityTransition().setCutoff( - TO_BOLD_TRANSITION_FRACTION); - mBoldClockTransition.addTarget(R.id.default_clock_view_bold); - mTransition = new TransitionSet() - .setOrdering(TransitionSet.ORDERING_TOGETHER) - .addTransition(mClockTransition) - .addTransition(mBoldClockTransition) - .setDuration(KeyguardSliceView.DEFAULT_ANIM_DURATION / 2) - .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN); } /** * Apply dp changes on font/scale change */ public void onDensityOrFontScaleChanged() { - setTextSize(TypedValue.COMPLEX_UNIT_PX, mContext.getResources() - .getDimensionPixelSize(R.dimen.widget_big_font_size)); - - ((TextView) mNewLockscreenLargeClockFrame.getChildAt(0)) - .setTextSize(TypedValue.COMPLEX_UNIT_PX, mContext.getResources() - .getDimensionPixelSize(R.dimen.large_clock_text_size)); + mLargeClockView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mContext.getResources() + .getDimensionPixelSize(R.dimen.large_clock_text_size)); + mClockView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mContext.getResources() + .getDimensionPixelSize(R.dimen.clock_text_size)); mClockSwitchYAmount = mContext.getResources().getDimensionPixelSize( R.dimen.keyguard_clock_switch_y_shift); @@ -163,44 +100,14 @@ public class KeyguardClockSwitch extends RelativeLayout { return mClockPlugin != null; } - /** - * Update lock screen mode for testing different layouts - */ - public void updateLockScreenMode(int mode) { - mLockScreenMode = mode; - RelativeLayout.LayoutParams statusAreaLP = (RelativeLayout.LayoutParams) - mKeyguardStatusArea.getLayoutParams(); - - if (mode == KeyguardUpdateMonitor.LOCK_SCREEN_MODE_LAYOUT_1) { - final int startEndPadding = (int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, - 32, - getResources().getDisplayMetrics()); - setPaddingRelative(startEndPadding, 0, startEndPadding, 0); - mSmallClockFrame.setVisibility(GONE); - mNewLockscreenClockFrame.setVisibility(VISIBLE); - statusAreaLP.addRule(RelativeLayout.BELOW, R.id.new_lockscreen_clock_view); - statusAreaLP.addRule(RelativeLayout.ALIGN_PARENT_START); - } else { - setPaddingRelative(0, 0, 0, 0); - mSmallClockFrame.setVisibility(VISIBLE); - mNewLockscreenClockFrame.setVisibility(GONE); - - statusAreaLP.removeRule(RelativeLayout.ALIGN_PARENT_START); - statusAreaLP.addRule(RelativeLayout.BELOW, R.id.clock_view); - } - - requestLayout(); - } - @Override protected void onFinishInflate() { super.onFinishInflate(); - mClockView = findViewById(R.id.default_clock_view); - mClockViewBold = findViewById(R.id.default_clock_view_bold); - mNewLockscreenClockFrame = findViewById(R.id.new_lockscreen_clock_view); - mNewLockscreenLargeClockFrame = findViewById(R.id.new_lockscreen_clock_view_large); - mSmallClockFrame = findViewById(R.id.clock_view); + + mClockFrame = findViewById(R.id.lockscreen_clock_view); + mClockView = findViewById(R.id.animatable_clock_view); + mLargeClockFrame = findViewById(R.id.lockscreen_clock_view_large); + mLargeClockView = findViewById(R.id.animatable_clock_view_large); mKeyguardStatusArea = findViewById(R.id.keyguard_status_area); onDensityOrFontScaleChanged(); @@ -210,45 +117,35 @@ public class KeyguardClockSwitch extends RelativeLayout { // Disconnect from existing plugin. if (mClockPlugin != null) { View smallClockView = mClockPlugin.getView(); - if (smallClockView != null && smallClockView.getParent() == mSmallClockFrame) { - mSmallClockFrame.removeView(smallClockView); + if (smallClockView != null && smallClockView.getParent() == mClockFrame) { + mClockFrame.removeView(smallClockView); } - if (mBigClockContainer != null) { - mBigClockContainer.removeAllViews(); - updateBigClockVisibility(statusBarState); + View bigClockView = mClockPlugin.getBigClockView(); + if (bigClockView != null && bigClockView.getParent() == mLargeClockFrame) { + mLargeClockFrame.removeView(bigClockView); } mClockPlugin.onDestroyView(); mClockPlugin = null; } if (plugin == null) { - if (mShowingHeader) { - mClockView.setVisibility(View.GONE); - mClockViewBold.setVisibility(View.VISIBLE); - } else { - mClockView.setVisibility(View.VISIBLE); - mClockViewBold.setVisibility(View.INVISIBLE); - } - mKeyguardStatusArea.setVisibility(View.VISIBLE); + mClockView.setVisibility(View.VISIBLE); + mLargeClockView.setVisibility(View.VISIBLE); return; } // Attach small and big clock views to hierarchy. View smallClockView = plugin.getView(); if (smallClockView != null) { - mSmallClockFrame.addView(smallClockView, -1, + mClockFrame.addView(smallClockView, -1, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); mClockView.setVisibility(View.GONE); - mClockViewBold.setVisibility(View.GONE); } View bigClockView = plugin.getBigClockView(); - if (bigClockView != null && mBigClockContainer != null) { - mBigClockContainer.addView(bigClockView); - updateBigClockVisibility(statusBarState); - } - // Hide default clock. - if (!plugin.shouldShowStatusArea()) { - mKeyguardStatusArea.setVisibility(View.GONE); + if (bigClockView != null) { + mLargeClockFrame.addView(bigClockView); + mLargeClockView.setVisibility(View.GONE); } + // Initialize plugin parameters. mClockPlugin = plugin; mClockPlugin.setStyle(getPaint().getStyle()); @@ -259,31 +156,10 @@ public class KeyguardClockSwitch extends RelativeLayout { } } - float getClockTextTopPadding() { - Paint.FontMetrics fm = mClockView.getPaint().getFontMetrics(); - return fm.ascent - fm.top; - } - - /** - * Set container for big clock face appearing behind NSSL and KeyguardStatusView. - */ - public void setBigClockContainer(ViewGroup container, int statusBarState) { - if (mClockPlugin != null && container != null) { - View bigClockView = mClockPlugin.getBigClockView(); - if (bigClockView != null) { - container.addView(bigClockView); - } - } - mBigClockContainer = container; - updateBigClockVisibility(statusBarState); - } - /** * It will also update plugin setStyle if plugin is connected. */ public void setStyle(Style style) { - mClockView.getPaint().setStyle(style); - mClockViewBold.getPaint().setStyle(style); if (mClockPlugin != null) { mClockPlugin.setStyle(style); } @@ -293,48 +169,25 @@ public class KeyguardClockSwitch extends RelativeLayout { * It will also update plugin setTextColor if plugin is connected. */ public void setTextColor(int color) { - mClockView.setTextColor(color); - mClockViewBold.setTextColor(color); if (mClockPlugin != null) { mClockPlugin.setTextColor(color); } } - public void setShowCurrentUserTime(boolean showCurrentUserTime) { - mClockView.setShowCurrentUserTime(showCurrentUserTime); - mClockViewBold.setShowCurrentUserTime(showCurrentUserTime); - } - - public void setTextSize(int unit, float size) { - mClockView.setTextSize(unit, size); - } - - public void setFormat12Hour(CharSequence format) { - mClockView.setFormat12Hour(format); - mClockViewBold.setFormat12Hour(format); - } - - public void setFormat24Hour(CharSequence format) { - mClockView.setFormat24Hour(format); - mClockViewBold.setFormat24Hour(format); - } - private void animateClockChange(boolean useLargeClock) { - if (mLockScreenMode != KeyguardUpdateMonitor.LOCK_SCREEN_MODE_LAYOUT_1) return; - if (mClockInAnim != null) mClockInAnim.cancel(); if (mClockOutAnim != null) mClockOutAnim.cancel(); View in, out; int direction = 1; if (useLargeClock) { - out = mNewLockscreenClockFrame; - in = mNewLockscreenLargeClockFrame; + out = mClockFrame; + in = mLargeClockFrame; if (indexOfChild(in) == -1) addView(in); direction = -1; } else { - in = mNewLockscreenClockFrame; - out = mNewLockscreenLargeClockFrame; + in = mClockFrame; + out = mLargeClockFrame; // Must remove in order for notifications to appear in the proper place removeView(out); @@ -381,7 +234,6 @@ public class KeyguardClockSwitch extends RelativeLayout { if (mClockPlugin != null) { mClockPlugin.setDarkAmount(darkAmount); } - updateBigClockAlpha(); } /** @@ -394,13 +246,6 @@ public class KeyguardClockSwitch extends RelativeLayout { animateClockChange(!hasVisibleNotifications); mHasVisibleNotifications = hasVisibleNotifications; - if (mDarkAmount == 0f && mBigClockContainer != null) { - // Starting a fade transition since the visibility of the big clock will change. - TransitionManager.beginDelayedTransition(mBigClockContainer, - new Fade().setDuration(KeyguardSliceView.DEFAULT_ANIM_DURATION / 2).addTarget( - mBigClockContainer)); - } - updateBigClockAlpha(); } public Paint getPaint() { @@ -433,15 +278,9 @@ public class KeyguardClockSwitch extends RelativeLayout { * Refresh the time of the clock, due to either time tick broadcast or doze time tick alarm. */ public void refresh() { - mClockView.refreshTime(); - mClockViewBold.refreshTime(); if (mClockPlugin != null) { mClockPlugin.onTimeTick(); } - if (Build.IS_DEBUGGABLE) { - // Log for debugging b/130888082 (sysui waking up, but clock not updating) - Log.d(TAG, "Updating clock: " + mClockView.getText()); - } } /** @@ -472,240 +311,14 @@ public class KeyguardClockSwitch extends RelativeLayout { } } - void updateBigClockVisibility(int statusBarState) { - if (mBigClockContainer == null) { - return; - } - final boolean inDisplayState = statusBarState == StatusBarState.KEYGUARD - || statusBarState == StatusBarState.SHADE_LOCKED; - final int visibility = !mShowingHeader && inDisplayState - && mBigClockContainer.getChildCount() != 0 ? View.VISIBLE : View.GONE; - if (mBigClockContainer.getVisibility() != visibility) { - mBigClockContainer.setVisibility(visibility); - } - } - - private void updateBigClockAlpha() { - if (mBigClockContainer != null) { - final float alpha = mHasVisibleNotifications ? mDarkAmount : 1f; - mBigClockContainer.setAlpha(alpha); - if (alpha == 0f) { - mBigClockContainer.setVisibility(INVISIBLE); - } else if (mBigClockContainer.getVisibility() == INVISIBLE) { - mBigClockContainer.setVisibility(VISIBLE); - } - } - } - - /** - * Sets if the keyguard slice is showing a center-aligned header. We need a smaller clock in - * these cases. - */ - void setKeyguardShowingHeader(boolean hasHeader) { - if (mLockScreenMode != KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL) { - hasHeader = false; - } - - if (mShowingHeader == hasHeader) { - return; - } - mShowingHeader = hasHeader; - if (hasCustomClock()) { - return; - } - - float smallFontSize = mContext.getResources().getDimensionPixelSize( - R.dimen.widget_small_font_size); - float bigFontSize = mContext.getResources().getDimensionPixelSize( - R.dimen.widget_big_font_size); - mClockTransition.setScale(smallFontSize / bigFontSize); - mBoldClockTransition.setScale(bigFontSize / smallFontSize); - - // End any current transitions before starting a new transition so that the new transition - // starts from a good state instead of a potentially bad intermediate state arrived at - // during a transition animation. - TransitionManager.endTransitions((ViewGroup) mClockView.getParent()); - - if (hasHeader) { - // After the transition, make the default clock GONE so that it doesn't make the - // KeyguardStatusView appear taller in KeyguardClockPositionAlgorithm and elsewhere. - mTransition.addListener(new TransitionListenerAdapter() { - @Override - public void onTransitionEnd(Transition transition) { - super.onTransitionEnd(transition); - // Check that header is actually showing. I saw issues where this event was - // fired after the big clock transitioned back to visible, which causes the time - // to completely disappear. - if (mShowingHeader) { - mClockView.setVisibility(View.GONE); - } - transition.removeListener(this); - } - }); - } - - TransitionManager.beginDelayedTransition((ViewGroup) mClockView.getParent(), mTransition); - mClockView.setVisibility(hasHeader ? View.INVISIBLE : View.VISIBLE); - mClockViewBold.setVisibility(hasHeader ? View.VISIBLE : View.INVISIBLE); - int paddingBottom = mContext.getResources().getDimensionPixelSize(hasHeader - ? R.dimen.widget_vertical_padding_clock : R.dimen.title_clock_padding); - mClockView.setPadding(mClockView.getPaddingLeft(), mClockView.getPaddingTop(), - mClockView.getPaddingRight(), paddingBottom); - mClockViewBold.setPadding(mClockViewBold.getPaddingLeft(), mClockViewBold.getPaddingTop(), - mClockViewBold.getPaddingRight(), paddingBottom); - } - - /** - * Hide big clock if the keyguard slice is showing a header, need to reduce visual clutter in - * these cases. - */ - public void setKeyguardHidingBigClock(boolean hasHeader) { - if (mBigClockContainer != null) { - mBigClockContainer.setVisibility(hasHeader ? View.GONE : View.VISIBLE); - } - } - public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("KeyguardClockSwitch:"); pw.println(" mClockPlugin: " + mClockPlugin); - pw.println(" mClockView: " + mClockView); - pw.println(" mClockViewBold: " + mClockViewBold); - pw.println(" mSmallClockFrame: " + mSmallClockFrame); - pw.println(" mBigClockContainer: " + mBigClockContainer); + pw.println(" mClockFrame: " + mClockFrame); + pw.println(" mLargeClockFrame: " + mLargeClockFrame); pw.println(" mKeyguardStatusArea: " + mKeyguardStatusArea); pw.println(" mDarkAmount: " + mDarkAmount); - pw.println(" mShowingHeader: " + mShowingHeader); pw.println(" mSupportsDarkText: " + mSupportsDarkText); pw.println(" mColorPalette: " + Arrays.toString(mColorPalette)); } - - /** - * {@link Visibility} transformation that scales the view while it is disappearing/appearing and - * transitions suddenly at a cutoff fraction during the animation. - */ - private class ClockVisibilityTransition extends android.transition.Visibility { - - private static final String PROPNAME_VISIBILITY = "systemui:keyguard:visibility"; - - private float mCutoff; - private float mScale; - - /** - * Constructs a transition that switches between visible/invisible at a cutoff and scales in - * size while appearing/disappearing. - */ - ClockVisibilityTransition() { - setCutoff(1f); - setScale(1f); - } - - /** - * Sets the transition point between visible/invisible. - * - * @param cutoff The fraction in [0, 1] when the view switches between visible/invisible. - * @return This transition object - */ - public ClockVisibilityTransition setCutoff(float cutoff) { - mCutoff = cutoff; - return this; - } - - /** - * Sets the scale factor applied while appearing/disappearing. - * - * @param scale Scale factor applied while appearing/disappearing. When factor is less than - * one, the view will shrink while disappearing. When it is greater than one, - * the view will expand while disappearing. - * @return This transition object - */ - public ClockVisibilityTransition setScale(float scale) { - mScale = scale; - return this; - } - - @Override - public void captureStartValues(TransitionValues transitionValues) { - super.captureStartValues(transitionValues); - captureVisibility(transitionValues); - } - - @Override - public void captureEndValues(TransitionValues transitionValues) { - super.captureStartValues(transitionValues); - captureVisibility(transitionValues); - } - - private void captureVisibility(TransitionValues transitionValues) { - transitionValues.values.put(PROPNAME_VISIBILITY, - transitionValues.view.getVisibility()); - } - - @Override - public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, - TransitionValues endValues) { - if (!sceneRoot.isShown()) { - return null; - } - final float cutoff = mCutoff; - final int startVisibility = View.INVISIBLE; - final int endVisibility = (int) endValues.values.get(PROPNAME_VISIBILITY); - final float startScale = mScale; - final float endScale = 1f; - return createAnimator(view, cutoff, startVisibility, endVisibility, startScale, - endScale); - } - - @Override - public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, - TransitionValues endValues) { - if (!sceneRoot.isShown()) { - return null; - } - final float cutoff = 1f - mCutoff; - final int startVisibility = View.VISIBLE; - final int endVisibility = (int) endValues.values.get(PROPNAME_VISIBILITY); - final float startScale = 1f; - final float endScale = mScale; - return createAnimator(view, cutoff, startVisibility, endVisibility, startScale, - endScale); - } - - private Animator createAnimator(View view, float cutoff, int startVisibility, - int endVisibility, float startScale, float endScale) { - view.setPivotY(view.getHeight() - view.getPaddingBottom()); - ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); - animator.addUpdateListener(animation -> { - final float fraction = animation.getAnimatedFraction(); - if (fraction > cutoff) { - view.setVisibility(endVisibility); - } - final float scale = MathUtils.lerp(startScale, endScale, fraction); - view.setScaleX(scale); - view.setScaleY(scale); - }); - animator.addListener(new KeepAwakeAnimationListener(getContext()) { - @Override - public void onAnimationStart(Animator animation) { - super.onAnimationStart(animation); - view.setVisibility(startVisibility); - } - - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - animation.removeListener(this); - } - }); - addListener(new TransitionListenerAdapter() { - @Override - public void onTransitionEnd(Transition transition) { - view.setVisibility(endVisibility); - view.setScaleX(1f); - view.setScaleY(1f); - transition.removeListener(this); - } - }); - return animator; - } - } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index 24b7cd118ed67..874b4d9f95e90 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -26,11 +26,9 @@ import android.app.smartspace.SmartspaceSession; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; -import android.provider.Settings; import android.text.TextUtils; import android.text.format.DateFormat; import android.view.View; -import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.RelativeLayout; @@ -74,12 +72,12 @@ public class KeyguardClockSwitchController extends ViewController