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 ab3503da95..6b5b51d03c 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -13,12 +13,6 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.databinding.BindingAdapter; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.OnViewClickListener; import com.gh.common.constant.Config; @@ -74,6 +68,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.databinding.BindingAdapter; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + /** * Created by khy on 12/02/18. */ @@ -421,6 +421,7 @@ public class BindingAdapters { DownloadDialog.showDownloadDialog( v.getContext(), gameEntity, + traceEvent, entrance, location + ":" + gameEntity.getName()); }); @@ -435,6 +436,7 @@ public class BindingAdapters { DownloadDialog.showDownloadDialog( v.getContext(), gameEntity, + traceEvent, entrance, location + ":" + gameEntity.getName()); } diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index 355c1ccd73..0186343afa 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -464,6 +464,7 @@ public class DownloadItemUtils { DownloadDialog.showDownloadDialog( v.getContext(), gameEntity, + traceEvent, entrance, location); }); @@ -521,7 +522,7 @@ public class DownloadItemUtils { MtaHelper.onEvent("我的游戏_启动", "插件化", gameEntity.getName()); } if (gameEntity.getPluggableCollection() != null) { - DownloadDialog.showDownloadDialog(context, gameEntity, entrance, location); + DownloadDialog.showDownloadDialog(context, gameEntity, traceEvent, entrance, location); } else { DownloadDialogHelper.findAvailableDialogAndShow(context, gameEntity, apk, () -> { CertificationDialog.showCertificationDialog(context, gameEntity, () -> { diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt index 6d6003bc8b..348f9e007b 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt @@ -16,6 +16,7 @@ import androidx.recyclerview.widget.* import androidx.recyclerview.widget.RecyclerView.SmoothScroller import com.gh.base.fragment.BaseDialogFragment import com.gh.common.TimeElapsedHelper +import com.gh.common.exposure.ExposureEvent import com.gh.common.util.* import com.gh.download.DownloadManager import com.gh.gamecenter.BuildConfig @@ -45,6 +46,7 @@ class DownloadDialog : BaseDialogFragment(), View.OnTouchListener { private lateinit var mGestureDetector: GestureDetector private var mAdapter: DownloadDialogAdapter? = null + private var mTraceEvent: ExposureEvent? = null // 合集页面保持和后台一样的顺序 private var mCollectionAdapter: DownloadDialogAdapter? = null @@ -99,11 +101,12 @@ class DownloadDialog : BaseDialogFragment(), View.OnTouchListener { mGameEntity = requireArguments().getParcelable(GameEntity::class.java.simpleName)!! mEntrance = requireArguments().getString(EntranceUtils.KEY_ENTRANCE) ?: "" mLocation = requireArguments().getString(EntranceUtils.KEY_LOCATION) ?: "" + mTraceEvent = requireArguments().getParcelable(EntranceUtils.KEY_TRACE_EVENT) ?: null val factory = DownloadViewModel.Factory(HaloApp.getInstance().application, mGameEntity) mViewModel = ViewModelProviders.of(this, factory).get(DownloadViewModel::class.java) mViewModel.listLiveData.observeNonNull(this, callback = { itemList -> - mAdapter = DownloadDialogAdapter(requireContext(), mViewModel, itemList, false, mEntrance, mLocation) + mAdapter = DownloadDialogAdapter(requireContext(), mViewModel, itemList, false, mTraceEvent, mEntrance, mLocation) mBinding.contentList.layoutManager = createLayoutManager(itemList) mBinding.contentList.adapter = mAdapter }) @@ -124,7 +127,7 @@ class DownloadDialog : BaseDialogFragment(), View.OnTouchListener { itemList.add(DownloadDialogItemData(instruction = collection.downloadInstruction)) } - mCollectionAdapter = DownloadDialogAdapter(requireContext(), mViewModel, itemList, true, mEntrance, mLocation) + mCollectionAdapter = DownloadDialogAdapter(requireContext(), mViewModel, itemList, true, mTraceEvent, mEntrance, mLocation) mBinding.collectionList.layoutManager = createLayoutManager(itemList) mBinding.collectionList.adapter = mCollectionAdapter @@ -383,7 +386,7 @@ class DownloadDialog : BaseDialogFragment(), View.OnTouchListener { companion object { @JvmStatic - fun showDownloadDialog(context: Context?, gameEntity: GameEntity, entrance: String?, location: String?) { + fun showDownloadDialog(context: Context?, gameEntity: GameEntity, traceEvent: ExposureEvent?, entrance: String?, location: String?) { val fragmentActivity: FragmentActivity = if (context is FragmentActivity) { context } else if (BuildConfig.DEBUG) { @@ -405,6 +408,7 @@ class DownloadDialog : BaseDialogFragment(), View.OnTouchListener { bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance) bundle.putString(EntranceUtils.KEY_LOCATION, location) bundle.putParcelable(GameEntity::class.java.simpleName, gameEntity) + bundle.putParcelable(EntranceUtils.KEY_TRACE_EVENT, traceEvent) arguments = bundle } downloadDialog.show(fragmentActivity.supportFragmentManager, DownloadDialog::class.java.name) diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt index 56d626ae37..d89e303536 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt @@ -5,6 +5,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.base.OnViewClickListener +import com.gh.common.exposure.ExposureEvent import com.gh.common.util.MtaHelper import com.gh.common.util.throwExceptionInDebug import com.gh.gamecenter.NewsDetailActivity @@ -19,6 +20,7 @@ class DownloadDialogAdapter(context: Context, val viewModel: DownloadViewModel, val listData: List, val isCollectionPage: Boolean, + private val mTraceEvent: ExposureEvent?, private val mEntrance: String, private val mLocation: String) : BaseRecyclerAdapter(context) { @@ -104,11 +106,11 @@ class DownloadDialogAdapter(context: Context, holder.bindItem(viewModel.gameEntity) } is DownloadDialogInstalledItemViewHolder -> { - holder.bindInstalledItem(listData[position].installed!!, viewModel, mEntrance, mPath, mLocation) + holder.bindInstalledItem(listData[position].installed!!, viewModel, mTraceEvent, mEntrance, mPath, mLocation) throwExceptionInDebug("合集页面不应该存在该条数据", isCollectionPage) } is DownloadDialogItemViewHolder -> { - holder.bindItem(listData[position].normal!!, viewModel, isCollectionPage, mEntrance, mPath, mLocation) + holder.bindItem(listData[position].normal!!, viewModel, isCollectionPage, mTraceEvent, mEntrance, mPath, mLocation) } } } diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt index 33f5d97f56..f6da5e5fb5 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt @@ -3,6 +3,7 @@ package com.gh.download.dialog import android.view.View import com.gh.base.BaseRecyclerViewHolder import com.gh.common.constant.Config +import com.gh.common.exposure.ExposureEvent import com.gh.common.util.PackageUtils import com.gh.common.util.goneIf import com.gh.common.util.throwExceptionInDebug @@ -15,7 +16,7 @@ import com.lightgame.download.DownloadStatus class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalledItemBinding) : BaseRecyclerViewHolder(binding.root) { - fun bindInstalledItem(apkEntity: ApkEntity, viewModel: DownloadViewModel, entrance: String, path: String, location: String) { + fun bindInstalledItem(apkEntity: ApkEntity, viewModel: DownloadViewModel, traceEvent: ExposureEvent?, entrance: String, path: String, location: String) { val gameEntity = viewModel.gameEntity val apkCollection = apkEntity.apkCollection @@ -122,7 +123,7 @@ class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalled } } - DownloadDialogItemViewHolder.setDownloadClickListener(itemView, apkEntity, viewModel, entrance, path, location) + DownloadDialogItemViewHolder.setDownloadClickListener(itemView, apkEntity, viewModel, traceEvent, entrance, path, location) binding.executePendingBindings() } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt index b3116af942..13c617da71 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt @@ -7,6 +7,7 @@ import com.gh.base.BaseRecyclerViewHolder import com.gh.common.constant.Config import com.gh.common.dialog.CertificationDialog import com.gh.common.dialog.DeviceRemindDialog +import com.gh.common.exposure.ExposureEvent import com.gh.common.util.* import com.gh.common.util.DirectUtils.directToLinkPage import com.gh.download.DownloadManager @@ -29,6 +30,7 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas fun bindItem(apkEntity: ApkEntity, viewModel: DownloadViewModel, isCollectionPage: Boolean, + traceEvent: ExposureEvent?, entrance: String, path: String, location: String) { @@ -142,7 +144,7 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas } } - setDownloadClickListener(itemView, apkEntity, viewModel, entrance, path, location) + setDownloadClickListener(itemView, apkEntity, viewModel, traceEvent, entrance, path, location) binding.executePendingBindings() } @@ -159,6 +161,7 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas fun setDownloadClickListener(itemView: View, apkEntity: ApkEntity, viewModel: DownloadViewModel, + traceEvent: ExposureEvent?, entrance: String, path: String, location: String) { @@ -168,7 +171,7 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas var mtaValue = "未知" when (itemView.getTag(DownloadDialogAdapter.ITEM_TAG_KEY)) { DownloadDialogItemStatus.DOWNLOAD -> { - createDownloadTask(it.context, apkEntity, gameEntity, "下载", entrance, location) + createDownloadTask(it.context, apkEntity, gameEntity, "下载", traceEvent, entrance, location) mtaValue = gameEntity.name + "_" + apkEntity.getPlatformName() + "_下载" } DownloadDialogItemStatus.LAUNCH -> { @@ -220,12 +223,12 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas } } DownloadDialogItemStatus.PLUGGABLE -> { - createDownloadTask(it.context, apkEntity, gameEntity, "插件化", entrance, location) + createDownloadTask(it.context, apkEntity, gameEntity, "插件化", traceEvent, entrance, location) mtaValue = gameEntity.name + "_" + apkEntity.getPlatformName() + "_插件化" } DownloadDialogItemStatus.UPDATE -> { - createDownloadTask(it.context, apkEntity, gameEntity, "更新", entrance, location) + createDownloadTask(it.context, apkEntity, gameEntity, "更新", traceEvent, entrance, location) mtaValue = gameEntity.name + "_" + apkEntity.getPlatformName() + "_更新" } @@ -265,6 +268,7 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas apkEntity: ApkEntity, gameEntity: GameEntity, downloadMethod: String, + traceEvent: ExposureEvent?, entrance: String, location: String) { DownloadDialogHelper.findAvailableDialogAndShow(context, gameEntity, apkEntity, object : EmptyCallback { @@ -278,7 +282,7 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas downloadMethod, entrance, location, - isSubscribe, null) + isSubscribe, traceEvent) DeviceRemindDialog.showDeviceRemindDialog(context, gameEntity) } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java index 86d2874f39..62c0e80b8f 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java @@ -182,6 +182,7 @@ public class DetailViewHolder { DownloadDialog.showDownloadDialog( mViewHolder.context, mGameEntity, + mTraceEvent, StringUtils.buildString(mEntrance, "+(", mName, "[", mTitle, "])"), mName + ":" + mTitle); }); @@ -198,6 +199,7 @@ public class DetailViewHolder { DownloadDialog.showDownloadDialog( mViewHolder.context, mGameEntity, + mTraceEvent, StringUtils.buildString(mEntrance, "+(", mName, "[", mTitle, "])"), mName + ":" + mTitle); }); diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java index db33334712..32e2e7eef1 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -351,7 +351,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter implemen DialogUtils.checkDownload(mContext, updateEntity.getSize(), isSubscribe -> { if (str.contains("化")) { if (updateEntity.getPluggableCollection() != null) { - DownloadDialog.showDownloadDialog(mContext, updateEntity.transformGameEntity(), entrance, finalPluginDesc + "化:" + updateEntity.getName()); + DownloadDialog.showDownloadDialog(mContext, updateEntity.transformGameEntity(), updateEntity.getExposureEvent(), entrance, finalPluginDesc + "化:" + updateEntity.getName()); return; } else { viewHolder.guUpdate.setText(R.string.downloading);