style: tighten pinned header and context ring
This commit is contained in:
@@ -42,8 +42,8 @@ public final class BossUi {
|
|||||||
private static final int DEVICE_STATUS_ABNORMAL = Color.parseColor("#FF5A5A");
|
private static final int DEVICE_STATUS_ABNORMAL = Color.parseColor("#FF5A5A");
|
||||||
private static final int DEVICE_STATUS_OFFLINE = Color.parseColor("#A7AFB7");
|
private static final int DEVICE_STATUS_OFFLINE = Color.parseColor("#A7AFB7");
|
||||||
private static final int PINNED_ROW_BG = Color.parseColor("#FFF7F7F7");
|
private static final int PINNED_ROW_BG = Color.parseColor("#FFF7F7F7");
|
||||||
private static final int CONTEXT_RING_TRACK = Color.parseColor("#FFD7D7D7");
|
private static final int CONTEXT_RING_TRACK = Color.parseColor("#FFD0D0D0");
|
||||||
private static final int CONTEXT_RING_BG = Color.parseColor("#FFF4F4F4");
|
private static final int CONTEXT_RING_BG = Color.parseColor("#FFFFFFFF");
|
||||||
|
|
||||||
private BossUi() {}
|
private BossUi() {}
|
||||||
|
|
||||||
@@ -706,10 +706,10 @@ public final class BossUi {
|
|||||||
|
|
||||||
if (row.contextIndicatorVisible) {
|
if (row.contextIndicatorVisible) {
|
||||||
FrameLayout ringWrap = new FrameLayout(context);
|
FrameLayout ringWrap = new FrameLayout(context);
|
||||||
LinearLayout.LayoutParams ringWrapParams = new LinearLayout.LayoutParams(dp(context, 28), dp(context, 28));
|
LinearLayout.LayoutParams ringWrapParams = new LinearLayout.LayoutParams(dp(context, 24), dp(context, 24));
|
||||||
ringWrapParams.topMargin = dp(context, 8);
|
ringWrapParams.topMargin = dp(context, 6);
|
||||||
ringWrap.setLayoutParams(ringWrapParams);
|
ringWrap.setLayoutParams(ringWrapParams);
|
||||||
ringWrap.setBackground(createRoundedBackground(CONTEXT_RING_BG, dp(context, 14)));
|
ringWrap.setBackground(createRoundedBackground(CONTEXT_RING_BG, dp(context, 12)));
|
||||||
ringWrap.setContentDescription(TextUtils.isEmpty(row.contextStatusLabel)
|
ringWrap.setContentDescription(TextUtils.isEmpty(row.contextStatusLabel)
|
||||||
? "上下文使用量"
|
? "上下文使用量"
|
||||||
: "上下文使用量:" + row.contextStatusLabel);
|
: "上下文使用量:" + row.contextStatusLabel);
|
||||||
@@ -720,7 +720,7 @@ public final class BossUi {
|
|||||||
row.contextStatusLevel,
|
row.contextStatusLevel,
|
||||||
row.contextMustFinish
|
row.contextMustFinish
|
||||||
);
|
);
|
||||||
FrameLayout.LayoutParams ringParams = new FrameLayout.LayoutParams(dp(context, 18), dp(context, 18), Gravity.CENTER);
|
FrameLayout.LayoutParams ringParams = new FrameLayout.LayoutParams(dp(context, 16), dp(context, 16), Gravity.CENTER);
|
||||||
ring.setLayoutParams(ringParams);
|
ring.setLayoutParams(ringParams);
|
||||||
ringWrap.addView(ring);
|
ringWrap.addView(ring);
|
||||||
trailingColumn.addView(ringWrap);
|
trailingColumn.addView(ringWrap);
|
||||||
@@ -745,9 +745,9 @@ public final class BossUi {
|
|||||||
);
|
);
|
||||||
params.leftMargin = dp(context, 16);
|
params.leftMargin = dp(context, 16);
|
||||||
params.rightMargin = dp(context, 16);
|
params.rightMargin = dp(context, 16);
|
||||||
params.bottomMargin = dp(context, 8);
|
params.bottomMargin = dp(context, 6);
|
||||||
row.setLayoutParams(params);
|
row.setLayoutParams(params);
|
||||||
row.setPadding(0, dp(context, 6), 0, dp(context, 4));
|
row.setPadding(0, dp(context, 4), 0, dp(context, 2));
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
row.setClickable(true);
|
row.setClickable(true);
|
||||||
row.setFocusable(true);
|
row.setFocusable(true);
|
||||||
@@ -1430,7 +1430,7 @@ public final class BossUi {
|
|||||||
) {
|
) {
|
||||||
final int clampedUsage = Math.max(0, Math.min(100, usagePercent));
|
final int clampedUsage = Math.max(0, Math.min(100, usagePercent));
|
||||||
final int ringColor = resolveContextRingColor(level, mustFinish);
|
final int ringColor = resolveContextRingColor(level, mustFinish);
|
||||||
final float strokeWidth = dp(context, 2.4f);
|
final float strokeWidth = dp(context, 2f);
|
||||||
return new View(context) {
|
return new View(context) {
|
||||||
private final Paint trackPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
private final Paint trackPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
private final Paint progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
private final Paint progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
@@ -1451,7 +1451,7 @@ public final class BossUi {
|
|||||||
@Override
|
@Override
|
||||||
protected void onDraw(Canvas canvas) {
|
protected void onDraw(Canvas canvas) {
|
||||||
super.onDraw(canvas);
|
super.onDraw(canvas);
|
||||||
float inset = strokeWidth;
|
float inset = strokeWidth / 2f + dp(context, 0.5f);
|
||||||
arcRect.set(inset, inset, getWidth() - inset, getHeight() - inset);
|
arcRect.set(inset, inset, getWidth() - inset, getHeight() - inset);
|
||||||
canvas.drawArc(arcRect, -90, 360, false, trackPaint);
|
canvas.drawArc(arcRect, -90, 360, false, trackPaint);
|
||||||
canvas.drawArc(arcRect, -90, (360f * clampedUsage) / 100f, false, progressPaint);
|
canvas.drawArc(arcRect, -90, (360f * clampedUsage) / 100f, false, progressPaint);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@@ -95,6 +96,11 @@ public class BossUiConversationRowTest {
|
|||||||
|
|
||||||
assertEquals("空闲会话不应再渲染活动点", 2, trailingColumn.getChildCount());
|
assertEquals("空闲会话不应再渲染活动点", 2, trailingColumn.getChildCount());
|
||||||
assertFalse("右下角应改成环形上下文状态,而不是文字", viewTreeContainsText(trailingColumn, "上下文紧张 34%"));
|
assertFalse("右下角应改成环形上下文状态,而不是文字", viewTreeContainsText(trailingColumn, "上下文紧张 34%"));
|
||||||
|
FrameLayout ringWrap = (FrameLayout) trailingColumn.getChildAt(1);
|
||||||
|
assertEquals("上下文环外框应更克制,接近微信右侧小图标尺寸", BossUi.dp(context, 24), ringWrap.getLayoutParams().width);
|
||||||
|
assertEquals("上下文环外框应更克制,接近微信右侧小图标尺寸", BossUi.dp(context, 24), ringWrap.getLayoutParams().height);
|
||||||
|
assertEquals("上下文环本体应更细更轻", BossUi.dp(context, 16), ringWrap.getChildAt(0).getLayoutParams().width);
|
||||||
|
assertEquals("上下文环本体应更细更轻", BossUi.dp(context, 16), ringWrap.getChildAt(0).getLayoutParams().height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -127,6 +133,18 @@ public class BossUiConversationRowTest {
|
|||||||
assertFalse("置顶会话不应再显示右侧“置顶”文字", viewTreeContainsText(rowView, "置顶"));
|
assertFalse("置顶会话不应再显示右侧“置顶”文字", viewTreeContainsText(rowView, "置顶"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildConversationSectionHeader_usesTighterWechatSpacing() {
|
||||||
|
Context context = RuntimeEnvironment.getApplication();
|
||||||
|
|
||||||
|
LinearLayout header = BossUi.buildConversationSectionHeader(context, "置顶会话", "收起", null);
|
||||||
|
|
||||||
|
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) header.getLayoutParams();
|
||||||
|
assertEquals("分组标题和列表之间应再收紧一点", BossUi.dp(context, 6), params.bottomMargin);
|
||||||
|
assertEquals("分组头顶部留白应更轻", BossUi.dp(context, 4), header.getPaddingTop());
|
||||||
|
assertEquals("分组头底部留白应更轻", BossUi.dp(context, 2), header.getPaddingBottom());
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean viewTreeContainsText(View root, String expectedText) {
|
private static boolean viewTreeContainsText(View root, String expectedText) {
|
||||||
if (root instanceof TextView) {
|
if (root instanceof TextView) {
|
||||||
CharSequence text = ((TextView) root).getText();
|
CharSequence text = ((TextView) root).getText();
|
||||||
|
|||||||
Reference in New Issue
Block a user