diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java index ca56b95b34..a97bcde0ac 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -434,7 +434,7 @@ public class BindingAdapters { testTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart())); } } else { - GameViewUtils.setLabelList(layout.getContext(), layout, gameEntity.getTag(), subjectTag); + GameViewUtils.setLabelList(layout.getContext(), layout, gameEntity.getTag(), subjectTag, gameEntity.getTagStyle()); } } diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 9ae1ecfed1..7ed0223fbb 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -81,6 +81,7 @@ public class EntranceUtils { public static final String KEY_ASK_TAG = "askTag"; public static final String KEY_ASK_COLUMN_TAG = "askColumnTag"; public static final String KEY_COMMUNITY_DATA = "communityData"; + public static final String KEY_SUBJECT_DATA = "subjectData"; public static void jumpActivity(Context context, Bundle bundle) { diff --git a/app/src/main/java/com/gh/common/util/GameViewUtils.java b/app/src/main/java/com/gh/common/util/GameViewUtils.java index f8160532b2..3d26772292 100644 --- a/app/src/main/java/com/gh/common/util/GameViewUtils.java +++ b/app/src/main/java/com/gh/common/util/GameViewUtils.java @@ -12,6 +12,7 @@ import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.TagStyleEntity; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -30,17 +31,17 @@ import java.util.TimeZone; */ public class GameViewUtils { - public static void setLabelList(Context context, LinearLayout labelLayout, List tag, String tagType) { + public static void setLabelList(Context context, LinearLayout labelLayout, List tag, String tagType, List tagStyle) { labelLayout.removeAllViews(); if (tag == null || tag.isEmpty()) { - labelLayout.addView(getGameTagView(context, "官方版", 0, tagType)); + labelLayout.addView(getGameTagView(context, "官方版", 0, tagType, null)); } else { for (int i = 0, size = tag.size(); i < size; i++) { View view; if (i == size - 1) { - view = getGameTagView(context, tag.get(i), 0, tagType); + view = getGameTagView(context, tag.get(i), 0, tagType, tagStyle.size() > i ? tagStyle.get(i) : null); } else { - view = getGameTagView(context, tag.get(i), DisplayUtils.dip2px(context, 6), tagType); + view = getGameTagView(context, tag.get(i), DisplayUtils.dip2px(context, 6), tagType, tagStyle.size() > i ? tagStyle.get(i) : null); } if (view != null) { labelLayout.addView(view); @@ -52,7 +53,7 @@ public class GameViewUtils { } } - private static TextView getGameTagView(Context context, String tagStr, int rightMargin, String tagType) { + 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; @@ -65,22 +66,32 @@ public class GameViewUtils { tag.setTextColor(ContextCompat.getColor(context, R.color.tag_green)); } else { String colorStr; - if (!TextUtils.isEmpty(tagType) && "type".equals(tagType)) { // 游戏标签 - colorStr = "#ff6a28"; + 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, 0.6f), Color.parseColor(colorStr)); + tag.setTextColor(Color.parseColor(colorStr)); + } else { + gradientDrawable.setColor(Color.parseColor(colorStr)); + gradientDrawable.setShape(GradientDrawable.RECTANGLE); + tag.setTextColor(Color.WHITE); + } + tag.setBackgroundDrawable(gradientDrawable); } else { colorStr = TagUtils.getInstance(context).getColor(tagStr); + if (colorStr == null) { + return null; + } + int color = Color.parseColor(colorStr); + GradientDrawable gradientDrawable = new GradientDrawable(); + gradientDrawable.setColor(Color.TRANSPARENT); + gradientDrawable.setStroke(DisplayUtils.dip2px(context, 0.6f), color); + tag.setBackgroundDrawable(gradientDrawable); + tag.setTextColor(color); } - - if (colorStr == null) { - return null; - } - int color = Color.parseColor(colorStr); - GradientDrawable gradientDrawable = new GradientDrawable(); - gradientDrawable.setColor(Color.TRANSPARENT); - gradientDrawable.setStroke(DisplayUtils.dip2px(context, 0.6f), color); - tag.setBackgroundDrawable(gradientDrawable); -// tag.setBackgroundResource(R.drawable.border_blue_bg); - tag.setTextColor(color); } tag.setLayoutParams(lparams); tag.setPadding(DisplayUtils.dip2px(context, 3), diff --git a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java index c9e9b23c92..19913fa6a7 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java @@ -415,7 +415,7 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { PlatformUtils.getInstance(mContext).getPlatformName(gameEntity.getApk().get(0).getPlatform()))); holder.gameDes.setText(String.format("V%s", PackageUtils.getVersionByPackage(mContext, gameEntity.getApk().get(0).getPackageName()))); } - GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), ""); + GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), "", gameEntity.getTagStyle()); holder.cardView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java index 96f0ae0cf8..adfa289427 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -148,7 +148,7 @@ public class PluginAdapter extends BaseRecyclerAdapter { } else { holder.gameDes.setText(gameEntity.getApk().get(0).getSize() + " " + gameEntity.getBrief()); } - GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), ""); + GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), "", gameEntity.getTagStyle()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.java index 9f6482c74c..4f6f819dcd 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.adapter.viewholder; import android.view.View; +import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.BaseRecyclerViewHolder; @@ -20,6 +21,9 @@ public class GameImageViewHolder extends BaseRecyclerViewHolder { @BindView(R.id.game_image_line) public View line; + @BindView(R.id.game_des) + public TextView gameDes; + public GameImageItemBinding binding; public GameImageViewHolder(GameImageItemBinding bind) { diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java b/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java index 6e4ab4fbbe..116624e7bd 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java @@ -243,6 +243,8 @@ public class CategoryListAdapter extends BaseRecyclerAdapter { Map kv = new HashMap<>(); diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt index 36c9237ac6..bc4ff2d082 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -64,6 +64,11 @@ class GameEntity : Parcelable { var subjectData: GameSubjectData? = null + @SerializedName("tag_style") + var tagStyle: List = ArrayList() + + var des: String? = null + fun getTag(): ArrayList { if (tag == null) tag = ArrayList() if (!Config.isShowPlugin(id)) return ArrayList() @@ -139,6 +144,8 @@ class GameEntity : Parcelable { gameEntity.link = link gameEntity.isNewsExists = isNewsExists gameEntity.downloadOffText = downloadOffText + gameEntity.tagStyle = tagStyle + gameEntity.des = des return gameEntity } @@ -172,6 +179,8 @@ class GameEntity : Parcelable { dest.writeByte(if (this.isLibaoExists) 1.toByte() else 0.toByte()) dest.writeString(this.serverRemark) dest.writeValue(this.kaifuTimeHint) + dest.writeTypedList(this.tagStyle) + dest.writeString(this.des) } constructor() @@ -204,6 +213,8 @@ class GameEntity : Parcelable { this.isLibaoExists = `in`.readByte().toInt() != 0 this.serverRemark = `in`.readString() this.kaifuTimeHint = `in`.readValue(Long::class.java.classLoader) as Long? + this.tagStyle = `in`.createTypedArrayList(TagStyleEntity.CREATOR) + this.des = `in`.readString() } companion object { diff --git a/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt index 806fa9c978..02cbdb27d3 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt @@ -1,29 +1,21 @@ package com.gh.gamecenter.entity +import android.os.Parcelable import com.google.gson.annotations.SerializedName +import kotlinx.android.parcel.Parcelize /** * Created by LGT on 2016/7/1. */ -class SubjectEntity { - - @SerializedName("_id") - var id: String? = null - - var name: String? = null - - var more: String? = null - - @SerializedName("order") - var isOrder: Boolean = false - - var home: String? = null - - var tag: String? = null - - var data: MutableList? = null - - var type: String? = null - - var des: String? = null -} +@Parcelize +data class SubjectEntity(@SerializedName("_id") + var id: String? = null, + var name: String? = null, + var more: String? = null, + @SerializedName("order") + var isOrder: Boolean = false, + var home: String? = null, + var tag: String? = null, + var data: MutableList? = null, + var type: String? = null, + var des: String? = null) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt new file mode 100644 index 0000000000..a6c74324c3 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt @@ -0,0 +1,43 @@ +package com.gh.gamecenter.entity + +import android.os.Parcel +import android.os.Parcelable + +class TagStyleEntity() : Parcelable { + var name: String = "" + + var style: String = "" + + var color: String = "" + + constructor(parcel: Parcel) : this() { + this.name = parcel.readString() + this.style = parcel.readString() + this.color = parcel.readString() + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(this.name) + parcel.writeString(this.style) + parcel.writeString(this.color) + } + + override fun describeContents(): Int { + return 0 + } + + companion object { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + + override fun createFromParcel(parcel: Parcel): TagStyleEntity { + return TagStyleEntity(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java index 73e4a564ba..fb79738518 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java @@ -339,7 +339,7 @@ public class XinXiAdapter extends BaseRecyclerAdapter { int index = 1; if (isFuliNoData) { - index --; + index--; } if (position_notice != -1) { @@ -469,7 +469,7 @@ public class XinXiAdapter extends BaseRecyclerAdapter { holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief())); } - GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), ""); + GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), "", gameEntity.getTagStyle()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java index 2208dac9d6..c48f7d4c99 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -149,7 +149,7 @@ class SearchGameDetailFragmentAdapter extends BaseRecyclerAdapter { viewHolder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief())); } - GameViewUtils.setLabelList(mContext, viewHolder.gameLabelList, gameEntity.getTag(), ""); + GameViewUtils.setLabelList(mContext, viewHolder.gameLabelList, gameEntity.getTag(), "", gameEntity.getTagStyle()); viewHolder.itemView.setOnClickListener(new OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java index e8c4dd5f52..63678ab0e0 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -158,7 +158,7 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter { viewHolder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief())); } - GameViewUtils.setLabelList(mContext, viewHolder.gameLabelList, gameEntity.getTag(), ""); + GameViewUtils.setLabelList(mContext, viewHolder.gameLabelList, gameEntity.getTag(), "", gameEntity.getTagStyle()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java index b566b59b10..971f20f022 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java @@ -95,7 +95,7 @@ class SubjectAdapter extends BaseRecyclerAdapter { mIsLoaded = false; RetrofitManager.getInstance(mContext).getApi().getColumn(mId - ,UrlFilterUtils.getFilterQuery("publish", mOrder) + , UrlFilterUtils.getFilterQuery("publish", mOrder) , UrlFilterUtils.getFilterQuery("type", mType), page) .map(new Func1, List>() { @Override @@ -232,6 +232,11 @@ class SubjectAdapter extends BaseRecyclerAdapter { int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; final GameEntity gameEntity = mSubjectList.get(position); ImageUtils.Companion.getInstance().display(holder.image, gameEntity.getImage(), widthPixels); + + if (!TextUtils.isEmpty(gameEntity.getDes())) { + holder.gameDes.setVisibility(View.VISIBLE); + holder.gameDes.setText(gameEntity.getDes()); + } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -310,7 +315,7 @@ class SubjectAdapter extends BaseRecyclerAdapter { } holder.initServerType(gameEntity, mContext); - GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), mTagType); + GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), mTagType, gameEntity.getTagStyle()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java index 3bb04f613c..104c97db78 100644 --- a/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java @@ -68,7 +68,7 @@ public class GamePluginAdapter extends BaseRecyclerAdapter { } else { holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief())); } - GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), null); + GameViewUtils.setLabelList(mContext, holder.gameLabelList, gameEntity.getTag(), null, gameEntity.getTagStyle()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/res/layout/game_image_item.xml b/app/src/main/res/layout/game_image_item.xml index c244c14dd8..99773cebc4 100644 --- a/app/src/main/res/layout/game_image_item.xml +++ b/app/src/main/res/layout/game_image_item.xml @@ -3,6 +3,8 @@ + + @@ -32,14 +34,15 @@ + android:orientation = "vertical" + android:visibility = "gone" > + +