Files
assistant-android/app/src/main/java/com/gh/common/util/GameViewUtils.java
chenjuntao f63d5eb30a feat: 整理静态类代码 https://jira.shanqu.cc/browse/GHZS-837
1. 移除远古时代的光环3.0数据同步代码
2. 清理部分无用的弹窗构建代码
3. 将默认头像修改完全放置到网络数据中 (原来是本地 drawable,但提交固定 url 的形式)
4. 移除部分没有引用的代码
5. 合并重复的日志类
6. 移除已经没有入口的玩过的游戏 activity
7. 整理部分含有无用入参的方法
8. 重命名部分不合规范的命名
2022-12-27 15:20:23 +08:00

203 lines
8.5 KiB
Java

package com.gh.common.util;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.gh.gamecenter.common.utils.ExtensionsKt;
import com.gh.gamecenter.core.AppExecutor;
import com.gh.gamecenter.common.view.DrawableView;
import com.gh.gamecenter.R;
import com.gh.gamecenter.core.utils.DisplayUtils;
import com.gh.gamecenter.feature.entity.TagStyleEntity;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
/**
* 设置列表中game item视图上的工具类
*/
public class GameViewUtils {
public static void setLabelList(Context context, LinearLayout labelLayout, List<TagStyleEntity> tagStyle) {
setLabelList(context, labelLayout, tagStyle, 8);
}
public static void setLabelList(Context context, LinearLayout labelLayout, List<TagStyleEntity> tagEntityList, int margin) {
int childTvCount = labelLayout.getChildCount();
for (int k = 0; k < childTvCount; k++) {
labelLayout.getChildAt(k).setVisibility(View.GONE);
}
if (tagEntityList == null || tagEntityList.isEmpty()) {
return;
}
for (int i = 0, size = tagEntityList.size(); i < size; i++) {
TextView tagTv;
TagStyleEntity tagEntity = tagEntityList.get(i);
int marginRight = i == size - 1 ? 0 : DisplayUtils.dip2px(context, margin);
if (i < childTvCount) {
tagTv = (TextView) labelLayout.getChildAt(i);
updateTagStyle(context, tagTv, tagEntity, marginRight);
} else {
AppExecutor.getLightWeightIoExecutor().execute(() -> {
TextView tv = getNewGameTagView(context, tagEntity, marginRight);
AppExecutor.getUiExecutor().execute(() -> {
// 快速刷新列表会出现重复标签被添加到布局中的问题,这里在实际执行代码前再检查一次数量
if (labelLayout.getChildCount() >= tagEntityList.size()) return;
labelLayout.addView(tv);
});
});
}
if (i >= 2) {
break;
}
}
}
// 新的游戏标签样式 version>=4.0.0
private static TextView getNewGameTagView(Context context, TagStyleEntity tagEntity, int rightMargin) {
// 参数不全,用旧样式实现
if (TextUtils.isEmpty(tagEntity.getBackground())) {
return getGameTagView(context, tagEntity.getName(), rightMargin, "type", tagEntity);
}
TextView tag = new TextView(context);
updateTagStyle(context, tag, tagEntity, rightMargin);
return tag;
}
private static void updateTagStyle(Context context, TextView textView, TagStyleEntity tagEntity, int rightMargin) {
textView.setVisibility(View.VISIBLE);
// 同样的内容不用再更新
if (textView.getText() == tagEntity.getName()) return;
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lparams.rightMargin = rightMargin;
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
textView.setSingleLine(true);
textView.setText(tagEntity.getName());
textView.setLayoutParams(lparams);
textView.setPadding(
DisplayUtils.dip2px(context, 4),
0,
DisplayUtils.dip2px(context, 4),
DisplayUtils.dip2px(context, 1));
textView.setTextColor(ExtensionsKt.hexStringToIntColor("#" + tagEntity.getColor(), Color.WHITE));
textView.setBackground(DrawableView.getServerDrawable(ExtensionsKt.hexStringToIntColor("#" + tagEntity.getBackground(), Color.WHITE)));
}
private static TextView getGameTagView(Context context, String tagStr, int rightMargin, String tagType, TagStyleEntity tagEntity) {
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lparams.rightMargin = rightMargin;
TextView tag = new TextView(context);
tag.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
tag.setSingleLine(true);
tag.setText(tagStr);
if ("官方版".equals(tagStr) || "已关注".equals(tagStr)) {
tag.setBackgroundResource(R.drawable.border_green_bg);
tag.setTextColor(ContextCompat.getColor(context, R.color.tag_green));
} else {
String colorStr;
if (!TextUtils.isEmpty(tagType) && "type".equals(tagType) && tagEntity != null) { // 游戏标签
colorStr = "#" + tagEntity.getColor();
GradientDrawable gradientDrawable = new GradientDrawable();
if ("border".equals(tagEntity.getStyle())) {
gradientDrawable.setColor(Color.TRANSPARENT);
gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1f), ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE));
tag.setTextColor(ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE));
} else {
gradientDrawable.setColor(ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE));
gradientDrawable.setShape(GradientDrawable.RECTANGLE);
tag.setTextColor(Color.WHITE);
}
gradientDrawable.setCornerRadius(DisplayUtils.dip2px(3F));
tag.setBackgroundDrawable(gradientDrawable);
} else {
colorStr = TagUtils.getInstance(context).getColor(tagStr);
if (colorStr == null) {
return null;
}
int color = ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE);
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setColor(Color.TRANSPARENT);
gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1f), color);
gradientDrawable.setCornerRadius(DisplayUtils.dip2px(3F));
tag.setBackgroundDrawable(gradientDrawable);
tag.setTextColor(color);
}
}
tag.setLayoutParams(lparams);
tag.setPadding(DisplayUtils.dip2px(context, 4),
0,
DisplayUtils.dip2px(context, 4),
DisplayUtils.dip2px(context, 1));
return tag;
}
public static String getGameTestDate(long testTime) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
format.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
String testDate;
try {
long today = format.parse(format.format(new Date())).getTime();
long day = Long.parseLong(testTime + "000");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm", Locale.CHINA);
String time = timeFormat.format(day);
if (day >= today && day < today + 86400 * 1000) {
testDate = "今天 " + time;
} else if (day >= today + 86400 * 1000
&& day < today + 86400 * 1000 * 2) {
testDate = "明天 " + time;
} else if (day >= today + 86400 * 1000 * 2
&& day < today + 86400 * 1000 * 3) {
testDate = "后天 " + time;
} else if (day >= today - 86400 * 1000 && day < today) {
testDate = "昨天 " + time;
} else {
testDate = new SimpleDateFormat("MM-dd HH:mm", Locale.CHINA).format(day);
}
return testDate;
} catch (ParseException e) {
e.printStackTrace();
long day = Long.parseLong(testTime + "000");
Calendar calendar = Calendar.getInstance(TimeZone
.getTimeZone("Asia/Shanghai"));
calendar.setTimeInMillis(day);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
format = new SimpleDateFormat("MM-dd", Locale.CHINA);
testDate = format.format(day) + " " + hour + "";
return testDate;
}
}
}