Fix scaling of text in quick settings header view

Bug: 16824061
Change-Id: Ic2b5d42f4485885f43448ab311972a886d6da6d6
This commit is contained in:
Jorim Jaggi
2014-08-14 16:55:35 +02:00
committed by Jim Miller
parent a2bbbb3bac
commit fc69f78732
2 changed files with 32 additions and 18 deletions

View File

@@ -34,5 +34,15 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock"
android:textSize="@dimen/qs_time_collapsed_size"
/>
<!-- Empty text view so we have the same height when expanded/collapsed-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock"
/>
</com.android.systemui.statusbar.policy.SplitClockView>

View File

@@ -24,6 +24,7 @@ import android.graphics.Outline;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
@@ -54,7 +55,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private View mSystemIconsSuperContainer;
private View mDateGroup;
private View mClock;
private View mTime;
private TextView mTime;
private View mAmPm;
private MultiUserSwitch mMultiUserSwitch;
private ImageView mMultiUserAvatar;
@@ -86,6 +87,9 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private int mMultiUserSwitchWidthCollapsed;
private int mMultiUserSwitchWidthExpanded;
private int mClockCollapsedSize;
private int mClockExpandedSize;
/**
* In collapsed QS, the clock and avatar are scaled down a bit post-layout to allow for a nice
* transition. These values determine that factor.
@@ -121,7 +125,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mSystemIconsSuperContainer.setOnClickListener(this);
mDateGroup = findViewById(R.id.date_group);
mClock = findViewById(R.id.clock);
mTime = findViewById(R.id.time_view);
mTime = (TextView) findViewById(R.id.time_view);
mAmPm = findViewById(R.id.am_pm_view);
mMultiUserSwitch = (MultiUserSwitch) findViewById(R.id.multi_user_switch);
mMultiUserAvatar = (ImageView) findViewById(R.id.multi_user_avatar);
@@ -152,8 +156,6 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
boolean rtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
mTime.setPivotX(rtl ? mTime.getWidth() : 0);
mTime.setPivotY(mTime.getBaseline());
mAmPm.setPivotX(rtl ? mAmPm.getWidth() : 0);
mAmPm.setPivotY(mAmPm.getBaseline());
updateAmPmTranslation();
}
});
@@ -206,9 +208,10 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mAvatarCollapsedScaleFactor =
getResources().getDimensionPixelSize(R.dimen.multi_user_avatar_collapsed_size)
/ (float) mMultiUserAvatar.getLayoutParams().width;
mClockCollapsedScaleFactor =
(float) getResources().getDimensionPixelSize(R.dimen.qs_time_collapsed_size)
/ (float) getResources().getDimensionPixelSize(R.dimen.qs_time_expanded_size);
mClockCollapsedSize = getResources().getDimensionPixelSize(R.dimen.qs_time_collapsed_size);
mClockExpandedSize = getResources().getDimensionPixelSize(R.dimen.qs_time_expanded_size);
mClockCollapsedScaleFactor = (float) mClockCollapsedSize / (float) mClockExpandedSize;
}
public void setActivityStarter(ActivityStarter activityStarter) {
@@ -333,17 +336,14 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
}
private void updateClockScale() {
mAmPm.setScaleX(mClockCollapsedScaleFactor);
mAmPm.setScaleY(mClockCollapsedScaleFactor);
mTime.setScaleX(getTimeScale());
mTime.setScaleY(getTimeScale());
mTime.setTextSize(TypedValue.COMPLEX_UNIT_PX, mExpanded
? mClockExpandedSize
: mClockCollapsedSize);
mTime.setScaleX(1f);
mTime.setScaleY(1f);
updateAmPmTranslation();
}
private float getTimeScale() {
return !mExpanded ? mClockCollapsedScaleFactor : 1f;
}
private void updateAmPmTranslation() {
boolean rtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
mAmPm.setTranslationX((rtl ? 1 : -1) * mTime.getWidth() * (1 - mTime.getScaleX()));
@@ -526,8 +526,8 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
}
private void captureLayoutValues(LayoutValues target) {
target.timeScale = mTime.getScaleX();
target.clockY = mClock.getTop();
target.timeScale = mExpanded ? 1f : mClockCollapsedScaleFactor;
target.clockY = mClock.getBottom();
target.dateY = mDateGroup.getTop();
target.emergencyCallsOnlyAlpha = getAlphaForVisibility(mEmergencyCallsOnly);
target.alarmStatusAlpha = getAlphaForVisibility(mAlarmStatus);
@@ -566,7 +566,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private void applyLayoutValues(LayoutValues values) {
mTime.setScaleX(values.timeScale);
mTime.setScaleY(values.timeScale);
mClock.setY(values.clockY);
mClock.setY(values.clockY - mClock.getHeight());
mDateGroup.setY(values.dateY);
mAlarmStatus.setY(values.dateY - mAlarmStatus.getPaddingTop());
mMultiUserAvatar.setScaleX(values.avatarScale);
@@ -595,6 +595,10 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
applyAlpha(mBatteryLevel, values.batteryLevelAlpha);
applyAlpha(mSettingsButton, values.settingsAlpha);
applyAlpha(mSignalCluster, values.signalClusterAlpha);
if (!mExpanded) {
mTime.setScaleX(1f);
mTime.setScaleY(1f);
}
updateAmPmTranslation();
}