From 5609a953829520e89954df7369008e4fd8eaa5df Mon Sep 17 00:00:00 2001 From: leafwai Date: Tue, 26 Jul 2022 14:05:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E3=80=90=E5=85=89=E7=8E=AF=E5=8A=A9?= =?UTF-8?q?=E6=89=8BV5.12.0=E3=80=91=E6=B8=B8=E6=88=8F=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E2=80=9C=E5=86=85=E5=AE=B9=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E2=80=9D=E5=8A=9F=E8=83=BD=20https://git.shanqu.cc/pm/halo/hal?= =?UTF-8?q?o-app-issues/-/issues/1953?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/DirectUtils.kt | 10 +- .../com/gh/common/util/NewFlatLogUtils.kt | 40 ++++ .../com/gh/gamecenter/GameDetailActivity.kt | 2 +- .../java/com/gh/gamecenter/SkipActivity.java | 2 +- .../catalog/SpecialCatalogFragment.kt | 2 +- .../catalog/SpecialCatalogViewModel.kt | 10 +- .../category2/CategoryV2Fragment.kt | 24 +- .../category2/CategoryV2ListAdapter.kt | 4 +- .../category2/CategoryV2ListFragment.kt | 5 +- .../category2/CategoryV2ListViewModel.kt | 6 +- .../GameDetailContentCardContentAdapter.kt | 46 ++++ .../gamedetail/GameDetailFragment.kt | 208 +++++++++++++++++- .../gamedetail/GameDetailViewModel.kt | 12 + .../gamecenter/gamedetail/desc/DescAdapter.kt | 10 +- .../gamedetail/desc/DescFragment.kt | 12 + .../gamedetail/desc/DescViewModel.kt | 15 ++ .../gamedetail/entity/ContentCardEntity.kt | 69 ++++++ .../gamedetail/entity/NewGameDetailEntity.kt | 4 +- .../gh/gamecenter/subject/SubjectAdapter.kt | 4 +- .../gamecenter/subject/SubjectListFragment.kt | 2 +- .../subject/SubjectListViewModel.kt | 6 +- .../bg_content_card_large.webp | Bin 0 -> 956 bytes .../bg_content_card_large_primary.webp | Bin 0 -> 20864 bytes .../bg_content_card_large_right.webp | Bin 0 -> 1010 bytes .../bg_content_card_small.webp | Bin 0 -> 594 bytes .../bg_content_card_small_right.webp | Bin 0 -> 858 bytes .../bg_content_card_large.webp | Bin 0 -> 1084 bytes .../bg_content_card_large_primary.webp | Bin 0 -> 99046 bytes .../bg_content_card_large_right.webp | Bin 0 -> 1078 bytes .../bg_content_card_small.webp | Bin 0 -> 516 bytes .../bg_content_card_small_right.webp | Bin 0 -> 890 bytes .../res/drawable/bg_hint_red_radius_999.xml | 5 + app/src/main/res/layout/gamedetail_body.xml | 10 + .../item_game_detail_content_card_content.xml | 8 + .../layout_game_detail_content_card_large.xml | 99 +++++++++ .../layout_game_detail_content_card_small.xml | 60 +++++ .../common/constant/EntranceConsts.java | 1 + .../com/gh/gamecenter/core/utils/TimeUtils.kt | 12 + 38 files changed, 646 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt create mode 100644 app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt create mode 100644 app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large.webp create mode 100644 app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large_primary.webp create mode 100644 app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large_right.webp create mode 100644 app/src/main/res/drawable-night-xxxhdpi/bg_content_card_small.webp create mode 100644 app/src/main/res/drawable-night-xxxhdpi/bg_content_card_small_right.webp create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_content_card_large.webp create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_content_card_large_primary.webp create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_content_card_large_right.webp create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_content_card_small.webp create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_content_card_small_right.webp create mode 100644 app/src/main/res/drawable/bg_hint_red_radius_999.xml create mode 100644 app/src/main/res/layout/item_game_detail_content_card_content.xml create mode 100644 app/src/main/res/layout/layout_game_detail_content_card_large.xml create mode 100644 app/src/main/res/layout/layout_game_detail_content_card_small.xml diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index a64044aa6b..01ef948439 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -80,6 +80,7 @@ import org.greenrobot.eventbus.EventBus import retrofit2.HttpException import java.net.URLEncoder import java.util.* +import kotlin.collections.ArrayList import kotlin.math.roundToInt /** @@ -189,7 +190,7 @@ object DirectUtils { "column", "游戏专题" -> directToSubject( context, linkEntity.link - ?: "", linkEntity.text, BaseActivity.mergeEntranceAndPath(entrance, path) + ?: "", linkEntity.text, BaseActivity.mergeEntranceAndPath(entrance, path), exposureEvent ) "question", "社区问题" -> directToQuestionDetail( @@ -239,7 +240,7 @@ object DirectUtils { "catalog" -> directCatalog(context, linkEntity.link!!, linkEntity.text!!, entrance, path) - "category_v2" -> directCategoryV2(context, linkEntity.link!!, linkEntity.text!!, entrance, path) + "category_v2" -> directCategoryV2(context, linkEntity.link!!, linkEntity.text!!, entrance, path, exposureEvent) "block", "版块" -> { if (linkEntity.link.isNullOrEmpty()) return @@ -629,13 +630,14 @@ object DirectUtils { // 专栏 @JvmStatic - fun directToSubject(context: Context, id: String, subjectName: String? = "", entrance: String? = null) { + fun directToSubject(context: Context, id: String, subjectName: String? = "", entrance: String? = null, exposureEvent: ExposureEvent? = null) { if (id.isEmpty()) return val bundle = Bundle() val subjectData = SubjectData(subjectId = id, subjectName = subjectName, isOrder = false) bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_TO, SubjectActivity::class.java.name) bundle.putParcelable(EntranceConsts.KEY_SUBJECT_DATA, subjectData) + if (exposureEvent != null) bundle.putParcelableArrayList(KEY_EXPOSURE_SOURCE_LIST, ArrayList(exposureEvent.source)) jumpActivity(context, bundle) } @@ -1179,6 +1181,7 @@ object DirectUtils { categoryTitle: String, entrance: String? = null, path: String? = "", + exposureEvent: ExposureEvent? = null, ) { if (categoryId.isEmpty()) return val bundle = Bundle() @@ -1186,6 +1189,7 @@ object DirectUtils { bundle.putString(KEY_CATEGORY_ID, categoryId) bundle.putString(KEY_CATEGORY_TITLE, categoryTitle) bundle.putString(KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + if (exposureEvent != null) bundle.putParcelableArrayList(KEY_EXPOSURE_SOURCE_LIST, ArrayList(exposureEvent.source)) jumpActivity(context, bundle) } diff --git a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt index 4ffc0a4fc6..bafc34af00 100644 --- a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt +++ b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt @@ -83,4 +83,44 @@ object NewFlatLogUtils { } log(json, "event", false) } + + //游戏详情点击内容卡片 + @JvmStatic + fun logGameDetailGameContentCardClick( + title: String, + gameName: String, + gameId: String, + linkType: String, + linkId: String, + linkText: String + ) { + val json = json { + "event" to "game_detail_game_content_card_click" + "title" to title + "game_name" to gameName + "game_id" to gameId + "link_type" to linkType + "link_id" to linkId + "link_text" to linkText + parseAndPutMeta().invoke(this) + } + log(json, "event", false) + } + + //浏览自定义栏目 + @JvmStatic + fun logGameDetailColumnOrderingView( + title: String, + gameName: String, + gameId: String + ) { + val json = json { + "event" to "game_detail_column_ordering_view" + "title" to title + "game_name" to gameName + "game_id" to gameId + parseAndPutMeta().invoke(this) + } + log(json, "event", false) + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt index 7c11a0424c..c94897e465 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt @@ -80,7 +80,7 @@ class GameDetailActivity : DownloadToolbarActivity() { override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun updateStaticViewBackground(view: View?) { - updateStaticView(view, listOf(R.id.menu_download_iv, R.id.gameBigEvent)) + updateStaticView(view, listOf(R.id.menu_download_iv, R.id.gameBigEvent, R.id.backgroundIv)) } companion object { diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index c98d7e6b82..e815ac95e5 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -112,7 +112,7 @@ public class SkipActivity extends BaseActivity { DirectUtils.directToGameDetail(this, path, ENTRANCE_BROWSER, "true".equals(uri.getQueryParameter("auto_download")), to, null); break; case HOST_COLUMN: - DirectUtils.directToSubject(this, path, uri.getQueryParameter(KEY_NAME), ENTRANCE_BROWSER); + DirectUtils.directToSubject(this, path, uri.getQueryParameter(KEY_NAME), ENTRANCE_BROWSER, null); break; case HOST_SUGGESTION: String platform = uri.getQueryParameter(KEY_PLATFORM); diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt index 20093e678d..7c9788fbc6 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt @@ -32,7 +32,7 @@ class SpecialCatalogFragment : ListFragment(application) { + private val mExposureSourceList: List?) : ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api val basicExposureSource by lazy { arrayListOf().apply { - mExposureSource?.let { add(it) } + if (!mExposureSourceList.isNullOrEmpty()) { + addAll(mExposureSourceList) + } add(ExposureSource("分类", mCatalogTitle)) } } @@ -98,7 +100,7 @@ class SpecialCatalogViewModel(application: Application, class Factory(private val mCatalogId: String, private val mCatalogTitle: String, private val mIsCategoryV2: Boolean, - private val mExposureSource: ExposureSource? + private val mExposureSourceList: List? ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return SpecialCatalogViewModel( @@ -106,7 +108,7 @@ class SpecialCatalogViewModel(application: Application, mCatalogId, mCatalogTitle, mIsCategoryV2, - mExposureSource + mExposureSourceList ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt index f8d25cbe8d..b90527d491 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt @@ -1,6 +1,5 @@ package com.gh.gamecenter.category2 -import android.graphics.Color import android.os.Bundle import android.view.MenuItem import android.view.View @@ -10,17 +9,18 @@ import androidx.core.view.GravityCompat import androidx.drawerlayout.widget.DrawerLayout import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager -import com.gh.gamecenter.common.base.fragment.LazyFragment -import com.gh.gamecenter.common.constant.Constants -import com.gh.common.util.* +import com.gh.common.exposure.ExposureSource import com.gh.common.util.LogUtils -import com.gh.gamecenter.common.view.FixLinearLayoutManager import com.gh.gamecenter.R import com.gh.gamecenter.SearchActivity import com.gh.gamecenter.catalog.SpecialCatalogFragment +import com.gh.gamecenter.common.base.fragment.LazyFragment +import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.common.view.FixLinearLayoutManager +import com.gh.gamecenter.core.utils.PageSwitchDataHelper +import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentCategoryBinding import com.gh.gamecenter.entity.CategoryEntity import com.gh.gamecenter.entity.SidebarsEntity @@ -307,7 +307,7 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_IS_CATEGORY_V2 to true, EntranceConsts.KEY_CATALOG_ID to id, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager @@ -331,7 +331,7 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[selectedCategoryPosition].categoryId, EntranceConsts.KEY_CATEGORY_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager @@ -360,7 +360,7 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[position].categoryId, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager @@ -378,7 +378,7 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_IS_CATEGORY_V2 to true, EntranceConsts.KEY_CATALOG_ID to id, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager @@ -391,7 +391,7 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[position].categoryId, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) } @@ -413,7 +413,7 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[position].categoryId, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) } diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt index 36459ce123..d612c7b9c3 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt @@ -110,7 +110,9 @@ class CategoryV2ListAdapter( val sortSize = mViewModel.sortSize.text val exposureSources = ArrayList() - mViewModel.exposureSource?.let { exposureSources.add(it) } + if (!mViewModel.exposureSourceList.isNullOrEmpty()) { + exposureSources.addAll(mViewModel.exposureSourceList!!) + } exposureSources.add(ExposureSource("分类", categoryTitle)) exposureSources.add(ExposureSource(selectedCategoryName)) exposureSources.add(ExposureSource("二级分类详情", "$selectedSubCatalogName+$sortType+$sortSize")) diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt index c0ba61b88f..dee785e6b3 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt @@ -4,9 +4,7 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup import com.ethanhua.skeleton.Skeleton -import com.gh.gamecenter.common.constant.Constants import com.gh.common.exposure.ExposureListener -import com.gh.common.util.* import com.gh.common.util.DialogUtils import com.gh.common.view.CategoryFilterView import com.gh.common.xapk.XapkInstaller @@ -14,6 +12,7 @@ import com.gh.common.xapk.XapkUnzipStatus import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.databinding.FragmentCategoryListBinding @@ -57,7 +56,7 @@ class CategoryV2ListFragment : ListFragment viewModelProvider(CategoryV2ListViewModel.Factory( mCategoryId, mSubCategoryId, - arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE))) + arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST))) override fun provideListAdapter() = mAdapter ?: CategoryV2ListAdapter( diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt index 10c19a6b3b..afc2bce771 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt @@ -20,7 +20,7 @@ import io.reactivex.Single class CategoryV2ListViewModel(application: Application, val categoryId: String, var categoryIds: String, - var exposureSource: ExposureSource?) : ListViewModel(application) { + var exposureSourceList: List?) : ListViewModel(application) { val refresh = MutableLiveData() @@ -85,13 +85,13 @@ class CategoryV2ListViewModel(application: Application, } } - class Factory(val categoryId: String, val categoryIds: String, val exposureSource: ExposureSource?): ViewModelProvider.NewInstanceFactory() { + class Factory(val categoryId: String, val categoryIds: String, val exposureSourceList: List?): ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return CategoryV2ListViewModel( HaloApp.getInstance().application, categoryId, categoryIds, - exposureSource + exposureSourceList ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt new file mode 100644 index 0000000000..70a10a569e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt @@ -0,0 +1,46 @@ +package com.gh.gamecenter.gamedetail + +import android.content.Context +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.gh.gamecenter.R +import com.gh.gamecenter.common.utils.safelyGetInRelease +import com.gh.gamecenter.common.utils.toBinding +import com.gh.gamecenter.common.utils.toColor +import com.gh.gamecenter.core.utils.TimeUtils +import com.gh.gamecenter.databinding.ItemGameDetailContentCardContentBinding +import com.gh.gamecenter.gamedetail.entity.ContentCardEntity +import com.lightgame.adapter.BaseRecyclerAdapter + +class GameDetailContentCardContentAdapter(context: Context, private val linkEntity: ContentCardEntity, private val isHighlightBg: Boolean = false): BaseRecyclerAdapter(context) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = GameDetailContentCardContentItemViewHolder(parent.toBinding()) + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is GameDetailContentCardContentItemViewHolder) { + holder.binding.root.setTextColor(if (isHighlightBg) R.color.text_subtitle.toColor(mContext) else R.color.text_subtitleDesc.toColor(mContext)) + if (linkEntity.type == "func_server" && linkEntity.server != null && linkEntity.server?.calendar?.isNotEmpty() == true) { + val calendarList = linkEntity.server!!.calendar.take(10) + val realPosition = position % calendarList.size + calendarList.safelyGetInRelease(realPosition)?.let { + val serverTime = + if (TimeUtils.isToday(it.getTime())) + it.getFormatTime("今天 HH:mm") + else if (TimeUtils.isTomorrow(it.getTime())) + it.getFormatTime("明天 HH:mm") + else + it.getFormatTime("MM-dd HH:mm") + val serverText = "$serverTime ${it.remark}" + holder.binding.root.text = serverText + } + } + if (linkEntity.type == "func_libao" && linkEntity.libao != null) { + holder.binding.root.text = "${linkEntity.libao!!.total}个游戏礼包" + } + } + } + + override fun getItemCount(): Int = Int.MAX_VALUE + + class GameDetailContentCardContentItemViewHolder(var binding: ItemGameDetailContentCardContentBinding) : RecyclerView.ViewHolder(binding.root) +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 5804ea8272..242f470faa 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -1,19 +1,22 @@ package com.gh.gamecenter.gamedetail +import android.animation.Animator +import android.animation.ValueAnimator import android.annotation.SuppressLint import android.content.Intent import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color import android.graphics.drawable.GradientDrawable -import android.os.Build -import android.os.Bundle +import android.os.* import android.text.SpannableStringBuilder import android.text.Spanned import android.text.TextUtils import android.view.* +import android.view.animation.AccelerateDecelerateInterpolator import android.widget.FrameLayout import android.widget.ImageView +import android.widget.LinearLayout import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.constraintlayout.widget.ConstraintLayout @@ -23,11 +26,13 @@ import androidx.core.view.children import androidx.core.widget.TextViewCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Observer +import androidx.viewpager2.widget.ViewPager2 import com.ethanhua.skeleton.Skeleton import com.ethanhua.skeleton.ViewSkeletonScreen import com.gh.common.constant.Config import com.gh.common.databind.BindingAdapters import com.gh.common.exposure.ExposureEvent +import com.gh.common.exposure.ExposureSource import com.gh.common.repository.ReservationRepository import com.gh.common.simulator.SimulatorGameManager import com.gh.common.util.* @@ -57,8 +62,10 @@ import com.gh.gamecenter.gamedetail.desc.DescFragment import com.gh.gamecenter.gamedetail.dialog.GameBigEventDialog import com.gh.gamecenter.gamedetail.dialog.GameDetailMoreDialog import com.gh.gamecenter.gamedetail.dialog.GameTagsDialog +import com.gh.gamecenter.gamedetail.entity.ContentCardEntity import com.gh.gamecenter.gamedetail.entity.NewGameDetailEntity import com.gh.gamecenter.gamedetail.fuli.FuLiFragment +import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersCalendarActivity import com.gh.gamecenter.gamedetail.rating.RatingFragment import com.gh.gamecenter.gamedetail.video.TopVideoView import com.gh.gamecenter.home.video.ScrollCalculatorHelper @@ -84,6 +91,7 @@ import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import retrofit2.HttpException +import java.lang.ref.WeakReference import java.util.* import kotlin.math.abs @@ -116,6 +124,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { private var mRecommendDisposable: Disposable? = null private var mRecommendPopupEntity: RecommendPopupEntity? = null private var mTabClickEvent: Pair = Pair(0L, "") + private var mContentCardServerVp: ViewPager2? = null + private var mContentCardLibaoVp: ViewPager2? = null private lateinit var mBinding: FragmentGamedetailBinding private lateinit var mVideoBinding: PieceGameDetailVideoBinding @@ -129,6 +139,9 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { private val mFragmentsList = ArrayList() private val mTabTitleList = ArrayList() + private val mLooperHandle = LooperHandle(this) + private val mServerLooperKey = 123 + private val mLibaoLooperKey = 124 private val dataWatcher = object : DataWatcher() { override fun onDataChanged(downloadEntity: DownloadEntity) { @@ -203,6 +216,66 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mTraceEvent ) + private val contentCardClick: (contentCard: ContentCardEntity) -> Unit = { contentCardEntity -> + NewFlatLogUtils.logGameDetailGameContentCardClick(contentCardEntity.title ?: "", mGameEntity?.name ?: "", mGameEntity?.id ?: "", contentCardEntity.type ?: "", contentCardEntity.link ?: "", contentCardEntity.text ?: "") + when (contentCardEntity.type) { + "func_server" -> { + if (contentCardEntity.server != null) { + requireContext().startActivity( + ServersCalendarActivity.getIntent( + requireContext(), + mViewModel.game!!, contentCardEntity.server!!, + mNewGameDetailEntity?.me + ) + ) + } + } + "func_libao" -> { + tabPerformClick(0) + mBodyBinding.gamedetailAppbar.setExpanded(false, true) + val fragment = mFragmentsList[0] + if (fragment is DescFragment && fragment.isAdded) { + fragment.scrollToLibao() + } + } + "func_related_version" -> { + tabPerformClick(0) + mBodyBinding.gamedetailAppbar.setExpanded(false, true) + val fragment = mFragmentsList[0] + if (fragment is DescFragment && fragment.isAdded) { + fragment.scrollToRelatedVersion() + } + } + "func_zone" -> { + val gameDetailEntity = mViewModel.gameDetailLiveData.value?.data + if (contentCardEntity.zoneTab && gameDetailEntity?.zone != null && gameDetailEntity.zone!!.style == "link") { + requireContext().startActivity(WebActivity.getIntent(requireContext(), gameDetailEntity.zone!!.link, true)) + } + } + "func_tool_kit" -> { + if (contentCardEntity.toolkit.isNotEmpty()) { + contentCardEntity.toolkit.safelyGetInRelease(0)?.let { + val url = it.url + if (url != null && url.contains(Config.URL_ARTICLE)) { + val newsId = url.substring(url.lastIndexOf("/") + 1, url.length - 5) // 5: ".html" + val intent = NewsDetailActivity.getIntentById(requireContext(), newsId, "游戏详情->内容卡片") + requireContext().startActivity(intent) + } else { + requireContext().startActivity( + WebActivity.getWebByCollectionTools( + requireContext(), + it, + false + ) + ) + } + } + } + } + else -> DirectUtils.directToLinkPage(requireContext(), contentCardEntity.toLinkEntity(), mEntrance, "游戏详情->内容卡片", ExposureEvent.createEvent(null, listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)))) + } + } + override fun getLayoutId(): Int = 0 override fun getInflatedLayout(): View { @@ -443,7 +516,7 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { var changeDisplayName = false if ((lineCount == 2 && layout.getEllipsisCount(1) > 0) || (lineCount == 2 && tagView.measuredWidth > remainWidth)) { val textCount = calculateTextCountByWidth(this, 2 * gameTitleTv.width - tagView.measuredWidth) - 1 - if (textCount < text.length) { + if (textCount in text.indices) { displayName = text.substring(0, textCount) + "…" changeDisplayName = true } @@ -576,6 +649,11 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { showAlertDialogIfNeeded(data) initViewPage(data) + + if (data.contentCard.size > 1) { + initGameContentCard(data.contentCard) + } + updateGameDetailTopArea() val viewHolder = detailViewHolder @@ -701,6 +779,9 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mTabTitleList.add(getString(R.string.game_detail_desc)) data.zone?.let { + data.contentCard.forEach { contentCard -> + if (data.contentCard.size > 1 && contentCard.type == "func_zone") return@let + } if (it.style == "link") {//显示web页面 val webFragment = childFragmentManager.findFragmentByTag("${tag}${INDEX_TRENDES}") ?: WebFragment() val webBundle = Bundle() @@ -959,6 +1040,103 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } } + private fun initGameContentCard(linkEntityList: List) { + mBodyBinding.contentCardContainer.removeAllViews() + mBodyBinding.contentCardContainer.visibility = View.VISIBLE + if (linkEntityList.size >= 3) { + linkEntityList.safelyGetInRelease(0)?.let { + mBodyBinding.contentCardContainer.addView(getLargeContentCardView(it, true), LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 2F)) + } + linkEntityList.safelyGetInRelease(1)?.let { + mBodyBinding.contentCardContainer.addView(getSmallContentCardView(it), LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1F)) + } + linkEntityList.safelyGetInRelease(2)?.let { + mBodyBinding.contentCardContainer.addView(getSmallContentCardView(it, true), LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1F)) + } + } else if (linkEntityList.size == 2) { + linkEntityList.safelyGetInRelease(0)?.let { + mBodyBinding.contentCardContainer.addView(getLargeContentCardView(it), LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1F)) + } + linkEntityList.safelyGetInRelease(1)?.let { + mBodyBinding.contentCardContainer.addView(getLargeContentCardView(it, isLastView = true), LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1F)) + } + } + } + + private fun getLargeContentCardView(contentCardEntity: ContentCardEntity, isHighlightBg: Boolean = false, isLastView: Boolean = false) = LayoutGameDetailContentCardLargeBinding.inflate(layoutInflater).apply { + when { + isHighlightBg && !isLastView -> backgroundIv.setImageDrawable(R.drawable.bg_content_card_large_primary.toDrawable(requireContext())) + !isHighlightBg && !isLastView -> backgroundIv.setImageDrawable(R.drawable.bg_content_card_large.toDrawable(requireContext())) + !isHighlightBg && isLastView -> backgroundIv.setImageDrawable(R.drawable.bg_content_card_large_right.toDrawable(requireContext())) + } + spaceStart.layoutParams = spaceStart.layoutParams.apply { width = if (isLastView) 20F.dip2px() else 12F.dip2px()} + spaceEnd.layoutParams = spaceEnd.layoutParams.apply { width = if (isLastView) 8F.dip2px() else 12F.dip2px()} + titleTv.text = contentCardEntity.title + ImageUtils.display(iconIv, contentCardEntity.icon) + if (contentCardEntity.des.isNotEmpty()) { + contentTv.visibility = View.VISIBLE + contentVp.visibility = View.GONE + contentTv.text = contentCardEntity.des + contentTv.setTextColor(if (isHighlightBg) R.color.text_subtitle.toColor(requireContext()) else R.color.text_subtitleDesc.toColor(requireContext())) + } else if (contentCardEntity.type == "func_server" || contentCardEntity.type == "func_libao") { + contentTv.visibility = View.GONE + contentVp.visibility = View.VISIBLE + if (contentCardEntity.type == "func_server") mContentCardServerVp = contentVp else mContentCardLibaoVp = contentVp + contentVp.run { + isUserInputEnabled = false + orientation = ViewPager2.ORIENTATION_VERTICAL + adapter = GameDetailContentCardContentAdapter(requireContext(), contentCardEntity, isHighlightBg) + startAutoPlay(if (contentCardEntity.type == "func_server") mServerLooperKey else mLibaoLooperKey) + } + } + redDotTv.goneIf(!(contentCardEntity.type == "func_server" || contentCardEntity.type == "func_libao")) + if ((contentCardEntity.type == "func_server") && (contentCardEntity.server?.calendar?.isNotEmpty() == true)) redDotTv.text = contentCardEntity.server?.calendar?.size.toString() + if ((contentCardEntity.type == "func_libao") && (contentCardEntity.libao != null)) redDotTv.text = contentCardEntity.libao?.total.toString() + root.setOnClickListener { + contentCardClick.invoke(contentCardEntity) + } + }.root + + private fun getSmallContentCardView(contentCardEntity: ContentCardEntity, isLastView: Boolean = false) = LayoutGameDetailContentCardSmallBinding.inflate(layoutInflater).apply { + backgroundIv.setImageDrawable(if (isLastView) R.drawable.bg_content_card_small_right.toDrawable(requireContext()) else R.drawable.bg_content_card_small.toDrawable(requireContext())) + titleTv.text = contentCardEntity.title + ImageUtils.display(iconIv, contentCardEntity.icon) + redDotTv.goneIf(!(contentCardEntity.type == "func_server" || contentCardEntity.type == "func_libao")) + if ((contentCardEntity.type == "func_server") && (contentCardEntity.server?.calendar?.isNotEmpty() == true)) redDotTv.text = contentCardEntity.server?.calendar?.size.toString() + if ((contentCardEntity.type == "func_libao") && (contentCardEntity.libao != null)) redDotTv.text = contentCardEntity.libao?.total.toString() + root.setOnClickListener { + contentCardClick.invoke(contentCardEntity) + } + }.root + + private fun scrollToNextContent(viewPager: ViewPager2? = null) { + viewPager?.run { + val pxToDrag: Int = height + val animator = ValueAnimator.ofInt(0, pxToDrag) + var previousValue = 0 + animator.addUpdateListener { valueAnimator -> + val currentValue = valueAnimator.animatedValue as Int + val currentPxToDrag = (currentValue - previousValue).toFloat() + fakeDragBy(-currentPxToDrag) + previousValue = currentValue + } + animator.addListener(object : Animator.AnimatorListener { + override fun onAnimationStart(animation: Animator?) { beginFakeDrag() } + override fun onAnimationEnd(animation: Animator?) { endFakeDrag() } + override fun onAnimationCancel(animation: Animator?) { } + override fun onAnimationRepeat(animation: Animator?) { } + }) + animator.interpolator = AccelerateDecelerateInterpolator() + animator.duration = 1000 + animator.start() + } + } + + private fun startAutoPlay(key: Int) { + mLooperHandle.removeMessages(key) + mLooperHandle.sendEmptyMessageDelayed(key, CONTENT_CARD_LOOP_TIME) + } + private fun setUpTopVideo(topVideo: GameDetailEntity.Video) { GSYVideoOptionBuilder() .setIsTouchWigetFull(false) @@ -1643,6 +1821,11 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } mBinding.detailLlBottom.detailLlBottom.setBackgroundColor(R.color.background.toColor(requireContext())) updateToolbarStyle(mBodyBinding.gamedetailThumbSmall.visibility == View.VISIBLE) + mViewModel.gameDetailLiveData.value?.data?.let { + if (it.contentCard.size > 1) { + initGameContentCard(it.contentCard) + } + } } override fun scrollToTop() { @@ -1667,8 +1850,27 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { const val SCROLL_TO_KAIFU = "scrollToKaiFu" const val EB_SCROLLING = "EB_SCROLLING" const val INITIAL_DELAY = 500L + const val CONTENT_CARD_LOOP_TIME = 3000L private const val SP_OPENED_DIALOG_TIME_PREFIX = "opened_dialog_time_prefix_" private const val LAST_SELECTED_POSITION = "last_selected_position" } + + class LooperHandle(fragment: GameDetailFragment): Handler( + Looper.getMainLooper()) { + private val mWeakReference: WeakReference = WeakReference(fragment) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val fragment = mWeakReference.get() + if (fragment != null) { + if (msg.what == fragment.mServerLooperKey) { + fragment.scrollToNextContent(fragment.mContentCardServerVp) + } else if (msg.what == fragment.mLibaoLooperKey) { + fragment.scrollToNextContent(fragment.mContentCardLibaoVp) + } + fragment.startAutoPlay(msg.what) + } + } + } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt index a86ba4a5fd..7a7e4410c3 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt @@ -127,6 +127,18 @@ class GameDetailViewModel(application: Application, // 4.4以下设备不显示顶部视频 displayTopVideo = data.topVideo != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT + + data.contentCard.forEach { + if (data.contentCard.size > 1 && it.type == "func_server") { + data.detailEntity.forEach detail@{ detailEntity -> + if (detailEntity.type == DetailEntity.Type.LATEST_SERVER.value) { + data.detailEntity.remove(detailEntity) + return@detail + } + } + } + } + gameDetailLiveData.postValue(Resource.success(data)) if (CheckLoginUtils.isLogin()) { getUserRelatedInfo(data) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt index ab25b5c479..8c2186c235 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt @@ -26,15 +26,14 @@ import com.gh.common.databind.BindingAdapters import com.gh.common.exposure.ExposureEvent import com.gh.common.exposure.ExposureManager import com.gh.common.exposure.ExposureSource +import com.gh.common.util.* import com.gh.common.util.DialogUtils -import com.gh.common.util.DirectUtils import com.gh.common.util.LogUtils import com.gh.common.util.NewLogUtils import com.gh.gamecenter.GameNewsActivity import com.gh.gamecenter.R import com.gh.gamecenter.SuggestionActivity import com.gh.gamecenter.adapter.viewholder.FooterViewHolder -import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.callback.OnListClickListener import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.utils.* @@ -966,8 +965,11 @@ class DescAdapter( } } - class GameDetailCustomColumnViewHolder(var binding: GamedetailItemCustomColumnBinding, handler: Handler) : - ExposureViewHolder(binding.root, handler) + inner class GameDetailCustomColumnViewHolder(var binding: GamedetailItemCustomColumnBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { + override fun exposureLog() { + NewFlatLogUtils.logGameDetailColumnOrderingView(binding.titleTv.text.toString(), mViewModel.game?.name ?: "", mViewModel.game?.id ?: "") + } + } class GameDetailRelatedVersionViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) class GameVideoGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt index 63941da7c3..679fa5e95f 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt @@ -270,6 +270,18 @@ class DescFragment : BaseFragment(), IScrollable { } } + fun scrollToRelatedVersion() { + if (mViewModel.getRelatedVersionPosition() != -1) { + mLayoutManager?.scrollToPositionWithOffset(mViewModel.getRelatedVersionPosition(), 0) + } + } + + fun scrollToLibao() { + if (mViewModel.getDetailLibaoPosition() != -1) { + mLayoutManager?.scrollToPositionWithOffset(mViewModel.getDetailLibaoPosition(), 0) + } + } + override fun onNightModeChange() { super.onNightModeChange() mBinding.recyclerview.setBackgroundColor(R.color.background.toColor(requireContext())) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt index e9c4784768..b2eb183847 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt @@ -43,6 +43,8 @@ class DescViewModel(application: Application, private var mGameInfoPosition = 0 private var mLibaoPosition = -1 private var mServerPosition = -1 + private var mDetailLibaoPosition = -1 + private var mRelatedVersionPosition = -1 private var mGameInfo: GameInfo? = null var list = MutableLiveData>() @@ -360,6 +362,15 @@ class DescViewModel(application: Application, } } + for ((index, entity) in detailEntityList.withIndex()) { + if (entity.libao != null) { + mDetailLibaoPosition = index + } + if (entity.relatedVersion != null) { + mRelatedVersionPosition = index + } + } + if (containsFirstTimeExpandCustomColumnTags) { SPUtils.setBoolean(Constants.SP_HAS_EXPANDED_GAME_DETAIL_TAGS, true) } @@ -375,6 +386,10 @@ class DescViewModel(application: Application, fun getGameInfoPosition() = mGameInfoPosition + fun getDetailLibaoPosition() = mDetailLibaoPosition + + fun getRelatedVersionPosition() = mRelatedVersionPosition + fun getGameInfo() = mGameInfo /** diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt new file mode 100644 index 0000000000..21f1485e49 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ContentCardEntity.kt @@ -0,0 +1,69 @@ +package com.gh.gamecenter.gamedetail.entity + +import com.gh.gamecenter.entity.* +import com.google.gson.annotations.SerializedName + +data class ContentCardEntity( + @SerializedName("_id") + var id: String = "", + var name: String? = "", // tag + var title: String? = "", + var image: String? = "", + @SerializedName("target", alternate = ["link", "link_id"]) + var link: String? = "", + @SerializedName("type", alternate = ["link_type"]) + var type: String? = "", + var icon: String = "", + @SerializedName("game_icon") + var gameIcon: String? = "", + @SerializedName("game_icon_subscript") + var gameIconSubscript: String? = "", + var text: String? = "", + @SerializedName("link_text") + var linkText: String? = "",//游戏详情弹窗,兼容旧版本用 + var value: String? = "", + @SerializedName("community_id") + var communityId: String? = "", + @SerializedName("link_community", alternate = ["community"]) + var community: CommunityEntity? = CommunityEntity(), + var display: Display? = null, // 板块 + @SerializedName("close_button") + var closeButton: String = "open",//用户判断h5游戏关闭按钮是否显示,hide(隐藏)、open(开启) + @SerializedName("button_link") + var buttonLink: Boolean = false, + @SerializedName("activity_id") + var activityId: String = "", + var style: String = "", + + var des: String = "", + var server: GameDetailServer? = null, + var libao: LibaoEntity? = null, + @SerializedName("zone_tab") + var zoneTab: Boolean = false, + @SerializedName("related_version") + var relatedVersion: Boolean = false, + var toolkit: ArrayList = ArrayList() +) { + fun toLinkEntity(): LinkEntity { + return LinkEntity( + name = name, + title = title, + image = image, + link = link, + type = type, + icon = icon, + gameIcon = gameIcon, + gameIconSubscript = gameIconSubscript, + text = text, + linkText = linkText, + value = value, + communityId = communityId, + community = community, + display = display, + closeButton = closeButton, + buttonLink = buttonLink, + activityId = activityId, + style = style + ) + } +} diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt index 1bdd9cb435..bcd5b27511 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt @@ -45,7 +45,9 @@ data class NewGameDetailEntity( @SerializedName("bbs_tab") var bbsTab: LinkEntity? = null, @SerializedName("certification_tag") - var certificateTag: Screenshot? = null + var certificateTag: Screenshot? = null, + @SerializedName("content_card") + var contentCard: ArrayList = ArrayList() ) @Keep diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt index e2943488dc..a65df62988 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt @@ -312,7 +312,9 @@ class SubjectAdapter( private fun generateExposureEvent(gameEntity: GameEntity, subjectStyle: String, isFilterOn: Boolean): ExposureEvent { val exposureSourceList = arrayListOf() - mViewModel.exposureSource?.let { exposureSourceList.add(it) } + if (!mViewModel.exposureSourceList.isNullOrEmpty()) { + exposureSourceList.addAll(mViewModel.exposureSourceList!!) + } if (mIsColumnCollection) { exposureSourceList.add(ExposureSource("排行榜")) exposureSourceList.add(ExposureSource("专题", subjectData.subjectName.toString())) diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt index 7fabb2fdb1..9642304e6a 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt @@ -77,7 +77,7 @@ class SubjectListFragment : LazyListFragment() val factory = SubjectListViewModel.Factory( HaloApp.getInstance().application, arguments?.getParcelable(EntranceConsts.KEY_SUBJECT_DATA)!!, - arguments?.getParcelable(EntranceConsts.KEY_EXPOSURE_SOURCE)) + arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST)) if (requireContext() is SubjectActivity) { requireActivity().intent.getParcelableExtra(EntranceConsts.KEY_SUBJECT_DATA)?.let { val f = SubjectViewModel.Factory(HaloApp.getInstance().application, it) diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt index 9016c9b951..f74d606fcb 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt @@ -23,7 +23,7 @@ import retrofit2.HttpException class SubjectListViewModel(application: Application, var subjectData: SubjectData, - var exposureSource: ExposureSource?) : ListViewModel(application) { + var exposureSourceList: List?) : ListViewModel(application) { // 供专题类型为 rows 时统计用 var selectedLabelList = arrayListOf() @@ -104,9 +104,9 @@ class SubjectListViewModel(application: Application, } } - class Factory(private val mApplication: Application, private val subjectData: SubjectData, private val exposureSource: ExposureSource? = null) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val mApplication: Application, private val subjectData: SubjectData, private val exposureSourceList: List? = null) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { - return SubjectListViewModel(mApplication, subjectData, exposureSource) as T + return SubjectListViewModel(mApplication, subjectData, exposureSourceList) as T } } diff --git a/app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large.webp b/app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large.webp new file mode 100644 index 0000000000000000000000000000000000000000..9f0fe20aa9ae7d6273dff56c06bac7613d168ba2 GIT binary patch literal 956 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 TV)0Km&QJgV319!x>3{$LRp?e1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large_right.webp b/app/src/main/res/drawable-night-xxxhdpi/bg_content_card_large_right.webp new file mode 100644 index 0000000000000000000000000000000000000000..18c3726129099aa729893aefb604c4a03f1ed626 GIT binary patch literal 1010 zcmWIYbaQ*f%)k)t>J$(bU=hK^z`!5?#QjVR_Zb)*eF8ixnHU%t^A!X+rCB zvg6vl8)x6o$+dcJTfn)Q;kZ`&&4xp4EE~-4>=Hh3FSd_g;g0$&6W0$P<9k)kuh^aH z@?YKI*}ngkD_izeZt(whttQAvT>SeHGu5xB zHm|wf9J7f&@?xRoJIzhz&nixzN$NY*BR4Ni^p^Bx8&mDeLZNG?5*WRhT#^u*wk1Z$6y z8|UJlz)>j*LZd@WNb%MbmWypE9rHXJU#PjM8(6hmwEKDdg7(DyJaR-7^%G z#1={`DfKRBzFo(#Md|i?#*zy5n}?pSeDmf-?<8lTH zdLjJGUn*A^3C+r_syX@CcTqA7gut@weUVQa&!bXb3|t z8OP7eGr6S(N4CjxY__843(Z8=^y~U^R849fmEY75hQduJnK6xl;otv%zss)H|NpBi qcK-i;4F?7WX8HgBFI@x$lE?ou-~a!AKPL>xUh)6`y$+Bd5C8y0anH8^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-xxxhdpi/bg_content_card_small.webp b/app/src/main/res/drawable-night-xxxhdpi/bg_content_card_small.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c0308686d038c48945fe1cfd83dd6e6836fddd8 GIT binary patch literal 594 zcmWIYbaV4!Vqge&bqWXzu!!JdU|!Kj0_Bn`3eFax9(TBb$Hl5 zxVCL=lx4lfJC_gD6_&Re${gO9By3!oa;;%^^t-&>v+a-B%16HJePOS>Jy)ji*R
GKor85R6k`ak|$+odqCmDU0-mZzsF{1kDs^#1+)J(K3-JZmS-R6pUQjSs%CIa?kG z%uTfzvta!|~DBr1*!&l*@Vok8D<8%)$ zM}Ci09QLQR_^aH$bg8)S*sCf0rBlUs2dlQ|pVtaX<{gHKnk%F)DkR;R)fsSn?Th+5 zUH^{jdS3j$Lsj#a{B{*x(e8g>;Zw@T)|xDoR^HOELitVW2j6OynoD||?{Bb75Nl`g zxOUL4(P{N@)AKX$EuCLrQk^Vy(@!(^neKWOwcxyy;wKU#ZaC8<>BvKVW~s{``G?$L|^E>QA1N zi~90&@^OdxMirMcW?atrn|=A2zf`WUWZnkr72>zu>{321JzBSH>MfpmCb!f~!<=sv zq!_ObiT+`3eFax9(TBb$Hl5 zvABKz+gbg+>OSww9|)E-Tv;g|d*CS(+Ya`~&5{r1tqo^%`F3o=Le76*t$W{k_*Fjd z_~+knruO$=r~lve-@TbM*Yv%}!-6vRoZv3;vI8McD-!mFa~0h%y}oME9<%Fg+_nbi zR~?F(o!;E`ZuaA8kM>GqwHQ{4~)QQ#0qCxU|LP$?J8VQ#;*IjVJO zb#U0snE8)puJPscxwhOz?eLT%PhL+sqtb#>&xUI%%vCC^7eZa!1>QPu z@vi$=srG5|`Ot|6()XXxn&;@EGf!JdsrTGH-}nbQC!a+Ze9Kpq&X7BGt?$f+Y-!Dy zeeb5fecN>Edhw^-+r@mYoj>{h_H%BT`1$v4s@`T|0H!>JGr&|gL5N{4qm~Eb10b70 zb?NTbTSszbBYeJmnQ=J-gsz6o-IDywUn*C`t*7SXW8X!|UTYk-ck#?Kxus@uOQTof z=j3CvU5?FJ|8}vwQN`tqnHw*IR0~U$<;X>S0ZF>Qj++mXK^VpVqHM+vi1GNyFb0Ny y|Nnk_yXyb{Us1aA|L+TEV6dESy$i_k3=9C29(Pgz literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/bg_content_card_large.webp b/app/src/main/res/drawable-xxxhdpi/bg_content_card_large.webp new file mode 100644 index 0000000000000000000000000000000000000000..3df87fcc26d7e5f2eda864c90523656909dac784 GIT binary patch literal 1084 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

SSfRl^Zb>~s8qn(+8tTTj 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 OKQ?=DM7!$(1_l6qpAnt_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/bg_content_card_small.webp b/app/src/main/res/drawable-xxxhdpi/bg_content_card_small.webp new file mode 100644 index 0000000000000000000000000000000000000000..c067ffd380e6103838033bb29ee2847653e2c764 GIT binary patch literal 516 zcmWIYbaVT|$iNWp>J$(bVBzx~$kum1XfAMmfm*^LwFL|Q`F^{b;Ou*##n-{{@9a0b z9TCh%h1+IZg>yLg8!Xe4c^IxoG0#)Ez4ffwBp)MBwVAmpGgG$x{eOO&!=w!92`abP zI49+<4%=K<{`P0TNISENb(Qk3_Z_*??naZ=M#k&Uy#HdRisvL0bn@H3n`dMz39#&a*{I$OzJoT+}bxatYNw&>Ao4ePuv-8-^NMV5EY`oMD2%!K`} zbFVD9yKuF3))KqAWoo%~Cg$@tEw;;AvuS_hvb(cNekRIZeNnpc&-bW*)w=)pPWvBs zx_Ni literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/bg_content_card_small_right.webp b/app/src/main/res/drawable-xxxhdpi/bg_content_card_small_right.webp new file mode 100644 index 0000000000000000000000000000000000000000..ae0417fe795cba346c12f6e45125bf9624172a31 GIT binary patch literal 890 zcmV-=1BLujNk&F;0{{S5MM6+kP&il$0000G0000-0RZ0s06|PpNRa^m01bdpTYKB) z3j;w=5m-eKm4So6HUhT@WFd%+U?6B9I1Cg7RT-E;_psdYWhx>Rxoz9nNV4feHVRBwm3pwVRD@BW!@23~483bm;wrld-DxyP zvAnmNu(1Fw7Ok@s27v0xau`7M(1*GXCD?IYhk?lq^hmU;Fnu7%Dy>31SS3S3*^d;K zfXM6VB>)bK3?Q*cSrV384%>isM3wU%7zt5QQ+Gv_+n4fg*Hr8hHW?Hmv5zBN`8jM(LK6vumJ#8P&gpE0RR9n833IDDo6p~00000 zC8fKC-GpzL1E2b#2BDlFz?B2rTfhV@;q!ZiFos zXU9;V@z~#d}uGWjC{%CO`xhezE;sOrqMB`(Jw4;=*P^SG}B>hWI9q8I#7FM8=y$y5J_WR%1<~V@;xCOnJ8kZu2LNHi?Zk ziG9O(^Jfn&dVI;_O^QurVDi_e%$_u|W{J7G*RARECyh3VjVc*n0092~{`+>-fB(;x z2mkMG>30~nWklN$-6U9SVD4QMV5YEXWbH)Qd@#x3e# zJ3Dz@2M?%!5F5FxZ~y2;+>s0BK{>?(NC7S3 zB8{{pXNEHFhFYAoJ&ajR34mMP4)?Fe~{t(&7iY?J$^W^W72g05 Q!FP{fjzFn5wyrn;07KZLzW@LL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/bg_hint_red_radius_999.xml b/app/src/main/res/drawable/bg_hint_red_radius_999.xml new file mode 100644 index 0000000000..f9c6f807c0 --- /dev/null +++ b/app/src/main/res/drawable/bg_hint_red_radius_999.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetail_body.xml b/app/src/main/res/layout/gamedetail_body.xml index d731de90e6..a1e2b50e0d 100644 --- a/app/src/main/res/layout/gamedetail_body.xml +++ b/app/src/main/res/layout/gamedetail_body.xml @@ -223,6 +223,16 @@ tools:text="游戏大事件游戏大事件" tools:visibility="visible" /> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_game_detail_content_card_large.xml b/app/src/main/res/layout/layout_game_detail_content_card_large.xml new file mode 100644 index 0000000000..f3b249d5b3 --- /dev/null +++ b/app/src/main/res/layout/layout_game_detail_content_card_large.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_game_detail_content_card_small.xml b/app/src/main/res/layout/layout_game_detail_content_card_small.xml new file mode 100644 index 0000000000..a878f69ec8 --- /dev/null +++ b/app/src/main/res/layout/layout_game_detail_content_card_small.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java index c66deae246..dcf7feef6f 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java @@ -202,6 +202,7 @@ public class EntranceConsts { public static final String KEY_CONFLICT_PHONE = "conflictPhone"; public static final String KEY_CONFLICT_USER = "conflictUser"; public static final String KEY_EXPOSURE_SOURCE = "exposure_source"; + public static final String KEY_EXPOSURE_SOURCE_LIST = "exposure_source_list"; public static final String KEY_BBS_ID = "bbs_id"; public static final String KEY_DIAGNOSIS = "diagnosis"; public static final String KEY_SIMULATOR = "simulator"; diff --git a/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt b/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt index ebe195fc93..ee11a81c11 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/utils/TimeUtils.kt @@ -66,6 +66,18 @@ object TimeUtils { return false } + //判断是不是明天 + fun isTomorrow(timestamp: Long): Boolean { + val format = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + format.timeZone = TimeZone.getTimeZone("Asia/Shanghai") + val today = format.parse(format.format(Date())).time + val day = timestamp * 1000 + if (day >= today + 86400 * 1000 && day < today + 86400 * 1000 * 2) { + return true + } + return false + } + //判断是不是本周 fun isThisWeek(timestamp: Long): Boolean { val calendar = Calendar.getInstance()