From 31c404021c44ed4dcbd6265ca40f0febff0dee00 Mon Sep 17 00:00:00 2001 From: "kehaoyuan@ghzhushou.com" Date: Wed, 8 Apr 2020 18:24:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E7=89=88=E6=9C=AC=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E4=BC=98=E5=8C=96(=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E5=AE=8C=E6=88=90UI=E7=9B=B8=E5=85=B3)https://gitlab.ghzs.com/?= =?UTF-8?q?pm/halo-app-issues/issues/819?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/DialogUtils.java | 55 +++++- .../com/gh/common/view/DownloadDialog.java | 56 +----- .../java/com/gh/download/DownloadDialog.kt | 60 ------ .../com/gh/download/dialog/DownloadDialog.kt | 173 ++++++++++++++++++ .../download/dialog/DownloadDialogAdapter.kt | 61 ++++++ .../DownloadDialogInstalledItemViewHolder.kt | 8 + .../download/dialog/DownloadDialogItemData.kt | 9 + .../dialog/DownloadDialogItemViewHolder.kt | 8 + .../DownloadDialogLinkItemViewHolder.kt | 8 + .../DownloadDialogSectionItemViewHolder.kt | 9 + .../gh/download/dialog/DownloadViewModel.kt | 11 ++ .../gamecenter/download/DownloadFragment.kt | 2 +- .../com/gh/gamecenter/entity/ApkEntity.kt | 7 +- .../gamecenter/entity/GameCollectionEntity.kt | 9 +- .../com/gh/gamecenter/entity/GameEntity.kt | 16 +- .../gh/gamecenter/entity/PlatformEntity.kt | 4 +- .../drawable-xxhdpi/download_dialog_back.png | Bin 0 -> 973 bytes .../download_dialog_status_collection.png | Bin 0 -> 411 bytes .../download_dialog_status_download.png | Bin 0 -> 627 bytes .../download_dialog_status_launch.png | Bin 0 -> 846 bytes .../download_dialog_status_pause.png | Bin 0 -> 572 bytes .../download_dialog_status_pluggable.png | Bin 0 -> 1879 bytes .../download_dialog_status_update.png | Bin 0 -> 1359 bytes .../download_dialog_item_background.xml | 8 + .../download_dialog_item_progress.xml | 33 ++++ .../drawable/download_dialog_version_note.xml | 11 ++ app/src/main/res/layout/dialog_download.xml | 64 ++++++- .../layout/download_dialog_installed_item.xml | 162 ++++++++++++++++ .../main/res/layout/download_dialog_item.xml | 97 ++++++++++ .../res/layout/download_dialog_link_item.xml | 40 ++++ .../layout/download_dialog_section_item.xml | 34 ++++ app/src/main/res/layout/downloadmanager.xml | 3 +- app/src/main/res/values/colors.xml | 1 + 33 files changed, 826 insertions(+), 123 deletions(-) delete mode 100644 app/src/main/java/com/gh/download/DownloadDialog.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialog.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt create mode 100644 app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_back.png create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_status_collection.png create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_status_download.png create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_status_launch.png create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_status_pause.png create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_status_pluggable.png create mode 100644 app/src/main/res/drawable-xxhdpi/download_dialog_status_update.png create mode 100644 app/src/main/res/drawable/download_dialog_item_background.xml create mode 100644 app/src/main/res/drawable/download_dialog_item_progress.xml create mode 100644 app/src/main/res/drawable/download_dialog_version_note.xml create mode 100644 app/src/main/res/layout/download_dialog_installed_item.xml create mode 100644 app/src/main/res/layout/download_dialog_item.xml create mode 100644 app/src/main/res/layout/download_dialog_link_item.xml create mode 100644 app/src/main/res/layout/download_dialog_section_item.xml diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index b22f381f69..354b7ca21b 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -32,6 +32,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.RecyclerView; import com.facebook.drawee.generic.GenericDraweeHierarchy; @@ -40,12 +41,17 @@ import com.gh.common.constant.Config; import com.gh.common.dialog.TrackableDialog; import com.gh.common.view.DrawableView; import com.gh.common.view.FixLinearLayoutManager; +import com.gh.common.view.LimitHeightLinearLayout; import com.gh.gamecenter.AboutActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.PrivacyPolicyItemViewHolder; +import com.gh.gamecenter.databinding.ImprintContentItemBinding; import com.gh.gamecenter.databinding.PrivacyItemBinding; +import com.gh.gamecenter.entity.ApkEntity; +import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.PrivacyPolicyEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.entity.TrackableEntity; import com.halo.assistant.HaloApp; import com.halo.assistant.fragment.SettingsFragment; @@ -53,6 +59,7 @@ import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.utils.AppManager; import com.lightgame.utils.Utils; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -1237,7 +1244,7 @@ public class DialogUtils { contentTv.setText(content); cancelTv.setOnClickListener(v -> dialog.dismiss()); - continueTv.setOnClickListener(v ->{ + continueTv.setOnClickListener(v -> { listener.onConfirm(); dialog.dismiss(); }); @@ -1252,6 +1259,52 @@ public class DialogUtils { dialog.show(); } + public static void showImprintDialog(Context context, GameEntity gameEntity, String titleName) { + context = checkDialogContext(context); + Dialog dialog = new Dialog(context, R.style.full_dialog); + View inflate = LayoutInflater.from(context).inflate(R.layout.imprint_dialog, null); + dialog.setContentView(inflate); + dialog.show(); + + Window window = dialog.getWindow(); + WindowManager.LayoutParams params; + if (window != null) { + params = window.getAttributes(); + params.width = (int) (context.getResources().getDisplayMetrics().widthPixels * 0.9); + window.setAttributes(params); + window.setBackgroundDrawableResource(R.drawable.full_dialog_background); + } + + inflate.findViewById(R.id.imprint_close).setOnClickListener(v -> dialog.dismiss()); + LinearLayout content = inflate.findViewById(R.id.imprint_content); + ((TextView) inflate.findViewById(R.id.imprint_title)).setText(titleName); + View head = LayoutInflater.from(context).inflate(R.layout.imprint_content_item, null); + content.addView(head, LinearLayout.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(30)); + LimitHeightLinearLayout imprintContainer = inflate.findViewById(R.id.imprint_container); + imprintContainer.setLimitHeight((int) (context.getResources().getDisplayMetrics().heightPixels * 0.8)); + + ArrayList list = gameEntity.getApk(); + SettingsEntity settings = Config.getSettings(); + for (int i = 0; i < list.size(); i++) { + ApkEntity apk = gameEntity.getApk().get(i); + if (settings != null && settings.getGameDownloadBlackList().contains(apk.getPackageName())) { + continue; + } + View item = LayoutInflater.from(context).inflate(R.layout.imprint_content_item, null); + ImprintContentItemBinding bind = DataBindingUtil.bind(item); + bind.setApk(apk); + bind.setPlatformName(PlatformUtils.getInstance(context).getPlatformName(apk.getPlatform())); + content.addView(item, LinearLayout.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(40)); + } + + + // close line + View view = new View(context); + view.setBackgroundColor(context.getResources().getColor(R.color.text_5d5d5d)); + view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(1))); + content.addView(view); + } + /** * @param context may be is application context * @return activity context diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 7969e1325d..633e56b806 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -1,28 +1,25 @@ package com.gh.common.view; -import android.app.Dialog; import android.content.Context; -import androidx.databinding.DataBindingUtil; + import androidx.annotation.Nullable; import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager.OnPageChangeListener; + import android.text.TextUtils; import android.view.Gravity; import android.view.KeyEvent; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.PopupWindow; import android.widget.TextView; -import com.gh.common.constant.Config; import com.gh.common.exposure.ExposureEvent; import com.gh.common.util.ClickUtils; +import com.gh.common.util.DialogUtils; import com.gh.common.util.DirectUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.PackageUtils; @@ -179,7 +176,7 @@ public class DownloadDialog implements OnCollectionCallBackListener { dialogAdMirror.setText(downloadAd.getTitle()); dialogAd.setOnClickListener(v -> { if ("imprint".equals(downloadAd.getType())) { - showImprintDialog(downloadAd.getTitle()); + DialogUtils.showImprintDialog(mContext, gameEntity, downloadAd.getTitle()); } else { DirectUtils.directToLinkPage( mContext, @@ -230,51 +227,6 @@ public class DownloadDialog implements OnCollectionCallBackListener { DownloadManager.getInstance(mContext).addObserver(dataWatcher); } - private void showImprintDialog(String titleName) { - Dialog dialog = new Dialog(mContext, R.style.full_dialog); - View inflate = LayoutInflater.from(mContext).inflate(R.layout.imprint_dialog, null); - dialog.setContentView(inflate); - dialog.show(); - - Window window = dialog.getWindow(); - WindowManager.LayoutParams params; - if (window != null) { - params = window.getAttributes(); - params.width = (int) (mContext.getResources().getDisplayMetrics().widthPixels * 0.9); - window.setAttributes(params); - window.setBackgroundDrawableResource(R.drawable.full_dialog_background); - } - - inflate.findViewById(R.id.imprint_close).setOnClickListener(v -> dialog.dismiss()); - LinearLayout content = inflate.findViewById(R.id.imprint_content); - ((TextView) inflate.findViewById(R.id.imprint_title)).setText(titleName); - View head = LayoutInflater.from(mContext).inflate(R.layout.imprint_content_item, null); - content.addView(head, LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(30)); - LimitHeightLinearLayout imprintContainer = inflate.findViewById(R.id.imprint_container); - imprintContainer.setLimitHeight((int) (mContext.getResources().getDisplayMetrics().heightPixels * 0.8)); - - ArrayList list = gameEntity.getApk(); - SettingsEntity settings = Config.getSettings(); - for (int i = 0; i < list.size(); i++) { - ApkEntity apk = gameEntity.getApk().get(i); - if (settings != null && settings.getGameDownloadBlackList().contains(apk.getPackageName())) { - continue; - } - View item = LayoutInflater.from(mContext).inflate(R.layout.imprint_content_item, null); - ImprintContentItemBinding bind = DataBindingUtil.bind(item); - bind.setApk(apk); - bind.setPlatformName(PlatformUtils.getInstance(mContext).getPlatformName(apk.getPlatform())); - content.addView(item, LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(40)); - } - - - // close line - View view = new View(mContext); - view.setBackgroundColor(mContext.getResources().getColor(R.color.text_5d5d5d)); - view.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(1))); - content.addView(view); - } - private void sortApk() { for (ApkEntity apkEntity : gameApk) { GameCollectionEntity apkCollection = apkEntity.getApkCollection(); diff --git a/app/src/main/java/com/gh/download/DownloadDialog.kt b/app/src/main/java/com/gh/download/DownloadDialog.kt deleted file mode 100644 index 52bcd6d5d5..0000000000 --- a/app/src/main/java/com/gh/download/DownloadDialog.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.gh.download - -import android.app.Dialog -import android.content.Context -import android.os.Bundle -import android.view.Gravity -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.FragmentActivity -import com.gh.base.fragment.BaseDialogFragment -import com.gh.gamecenter.BuildConfig -import com.gh.gamecenter.R -import com.gh.gamecenter.databinding.DialogDownloadBinding -import com.lightgame.utils.AppManager - -class DownloadDialog : BaseDialogFragment() { - - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val createDialog = super.onCreateDialog(savedInstanceState) - createDialog.setCanceledOnTouchOutside(true) - - val window = createDialog.window - window?.setGravity(Gravity.BOTTOM) - window?.setWindowAnimations(R.style.community_publication_animation) -// window?.setLayout(HaloApp.getInstance().application.resources.displayMetrics.widthPixels, ViewGroup.LayoutParams.WRAP_CONTENT) - return createDialog - } - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val binding: DialogDownloadBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_download, container, false) - - - return binding.root - } - - - companion object { - - @JvmStatic - fun showDownloadDialog(context: Context?) { - val fragmentActivity: FragmentActivity = if (context is FragmentActivity) { - context - } else if (BuildConfig.DEBUG) { - throw IllegalStateException("DownloadDialog context must be FragmentActivity") - } else { - val currentActivity = AppManager.getInstance().currentActivity() - if (currentActivity is FragmentActivity) { - currentActivity - } else { - throw IllegalStateException("current activity context must be FragmentActivity") - } - } - - val downloadDialog = DownloadDialog() - downloadDialog.show(fragmentActivity.supportFragmentManager, DownloadDialog::class.java.name) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt new file mode 100644 index 0000000000..c4d8826a09 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt @@ -0,0 +1,173 @@ +package com.gh.download.dialog + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.gh.base.fragment.BaseDialogFragment +import com.gh.common.util.DialogUtils +import com.gh.common.util.DirectUtils +import com.gh.download.DownloadManager +import com.gh.gamecenter.BuildConfig +import com.gh.gamecenter.R +import com.gh.gamecenter.databinding.DialogDownloadBinding +import com.lightgame.utils.AppManager +import com.gh.gamecenter.entity.GameEntity +import com.halo.assistant.HaloApp +import com.lightgame.download.DataWatcher +import com.lightgame.download.DownloadEntity +import com.lightgame.download.DownloadStatus +import com.lightgame.utils.Utils + + +class DownloadDialog : BaseDialogFragment() { + + private lateinit var mGameEntity: GameEntity + private lateinit var mViewModel: DownloadViewModel + private lateinit var mBinding: DialogDownloadBinding + + private var mEntrance: String = "" + + private val mDataWatcher = object : DataWatcher() { + override fun onDataChanged(downloadEntity: DownloadEntity) { + if (downloadEntity.gameId == mGameEntity.id && + DownloadStatus.delete != DownloadManager.getInstance(requireContext()).getStatus(downloadEntity.url)) { + } + } + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val createDialog = super.onCreateDialog(savedInstanceState) + createDialog.setCanceledOnTouchOutside(true) + + val window = createDialog.window + window?.setGravity(Gravity.BOTTOM) + window?.setWindowAnimations(R.style.community_publication_animation) + return createDialog + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mViewModel = ViewModelProviders.of(this).get(DownloadViewModel::class.java) + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_download, container, false) + val downloadNotice = mGameEntity.downloadAd + if (downloadNotice != null) { + mBinding.downloadNotice.visibility = View.VISIBLE + mBinding.downloadNotice.text = downloadNotice.title + mBinding.downloadNotice.setOnClickListener { + if ("imprint" == downloadNotice.type) { + DialogUtils.showImprintDialog(requireContext(), mGameEntity, downloadNotice.title) + } else { + DirectUtils.directToLinkPage( + requireContext(), + downloadNotice, + mEntrance, "下载多平台弹窗") + } + } + } + + // todo test + val apks = mGameEntity.getApk() + val itemList: MutableList = ArrayList() + apks.forEachIndexed { index, apkEntity -> + if (index == 0) { + val itemLink = DownloadDialogItemData() + itemLink.link = GameEntity.PluginLink() + itemList.add(itemLink) + val itemSection = DownloadDialogItemData() + itemSection.section = "" + itemList.add(itemSection) + } + + if (index == 5) { + val itemSection = DownloadDialogItemData() + itemSection.section = "" + itemList.add(itemSection) + } + + if (index < 5) { + val itemInstalled = DownloadDialogItemData() + itemInstalled.installed = apkEntity + itemList.add(itemInstalled) + } else { + val itemInstalled = DownloadDialogItemData() + itemInstalled.normal = apkEntity + itemList.add(itemInstalled) + } + } + mBinding.contentList.layoutManager = createLayoutManager(itemList) + mBinding.contentList.adapter = DownloadDialogAdapter(requireContext(), itemList) + return mBinding.root + } + + + fun showCollectionPage() { + // todo 切换动画 + + } + + private fun createLayoutManager(listData: List): RecyclerView.LayoutManager { + val layoutManager = GridLayoutManager(requireContext(), 2) + layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { + override fun getSpanSize(position: Int): Int { + // todo WTF + val i = if (listData[position].normal == null) 2 else 1 + Utils.log("DownloadDialog: createLayoutManager, SpanSize->" + i + " ,position->" + position) + return i + } + } + return layoutManager + } + + + override fun onResume() { + super.onResume() + DownloadManager.getInstance(requireContext()).addObserver(mDataWatcher) + } + + + override fun onPause() { + super.onPause() + DownloadManager.getInstance(requireContext()).removeObserver(mDataWatcher) + } + + override fun onStart() { + super.onStart() + val width = HaloApp.getInstance().application.resources.displayMetrics.widthPixels + val height = dialog?.window?.attributes?.height ?: ViewGroup.LayoutParams.WRAP_CONTENT + dialog?.window?.setLayout(width, height) + } + + companion object { + + @JvmStatic + fun showDownloadDialog(context: Context?, gameEntity: GameEntity) { + val fragmentActivity: FragmentActivity = if (context is FragmentActivity) { + context + } else if (BuildConfig.DEBUG) { + throw IllegalStateException("DownloadDialog context must be FragmentActivity") + } else { + val currentActivity = AppManager.getInstance().currentActivity() + if (currentActivity is FragmentActivity) { + currentActivity + } else { + throw IllegalStateException("current activity context must be FragmentActivity") + } + } + + val downloadDialog = DownloadDialog().apply { mGameEntity = gameEntity } + downloadDialog.show(fragmentActivity.supportFragmentManager, DownloadDialog::class.java.name) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt new file mode 100644 index 0000000000..c4576c0665 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt @@ -0,0 +1,61 @@ +package com.gh.download.dialog + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.gh.gamecenter.R +import com.gh.gamecenter.databinding.DownloadDialogInstalledItemBinding +import com.gh.gamecenter.databinding.DownloadDialogItemBinding +import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding +import com.gh.gamecenter.databinding.DownloadDialogSectionItemBinding +import com.lightgame.adapter.BaseRecyclerAdapter + +class DownloadDialogAdapter(context: Context, + private val mListData: MutableList) : BaseRecyclerAdapter(context) { + + override fun getItemViewType(position: Int): Int { + val itemData = mListData[position] + if (itemData.link != null) return ITEM_LINK + if (itemData.section != null) return ITEM_SECTION + if (itemData.installed != null) return ITEM_INSTALLED + return ITEM_NORMAL + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view: View + return when (viewType) { + ITEM_LINK -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_link_item, parent, false) + DownloadDialogLinkItemViewHolder(DownloadDialogLinkItemBinding.bind(view)) + } + ITEM_SECTION -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_section_item, parent, false) + DownloadDialogSectionItemViewHolder(DownloadDialogSectionItemBinding.bind(view)) + } + ITEM_INSTALLED -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_installed_item, parent, false) + DownloadDialogInstalledItemViewHolder(DownloadDialogInstalledItemBinding.bind(view)) + } + else -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_item, parent, false) + DownloadDialogItemViewHolder(DownloadDialogItemBinding.bind(view)) + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + + } + + override fun getItemCount(): Int { + return mListData.size + } + + companion object { + private const val ITEM_LINK = 200 + private const val ITEM_SECTION = 201 + private const val ITEM_INSTALLED = 202 + private const val ITEM_NORMAL = 203 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt new file mode 100644 index 0000000000..51aadb78fc --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt @@ -0,0 +1,8 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogInstalledItemBinding + +class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalledItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt new file mode 100644 index 0000000000..f2a498f537 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt @@ -0,0 +1,9 @@ +package com.gh.download.dialog + +import com.gh.gamecenter.entity.ApkEntity +import com.gh.gamecenter.entity.GameEntity + +data class DownloadDialogItemData(var link: GameEntity.PluginLink? = null, + var section: String? = null, + var installed: ApkEntity? = null, + var normal: ApkEntity? = null) \ 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 new file mode 100644 index 0000000000..038c42ed02 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt @@ -0,0 +1,8 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogItemBinding + +class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt new file mode 100644 index 0000000000..0a0b777454 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt @@ -0,0 +1,8 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding + +class DownloadDialogLinkItemViewHolder(val binding: DownloadDialogLinkItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt new file mode 100644 index 0000000000..268be73cd7 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt @@ -0,0 +1,9 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding +import com.gh.gamecenter.databinding.DownloadDialogSectionItemBinding + +class DownloadDialogSectionItemViewHolder(val binding: DownloadDialogSectionItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt b/app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt new file mode 100644 index 0000000000..5000b4b57e --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt @@ -0,0 +1,11 @@ +package com.gh.download.dialog + +import android.app.Application +import androidx.lifecycle.AndroidViewModel + +/** + * 是否需要viewModel? + */ +class DownloadViewModel(application: Application) : AndroidViewModel(application) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt index 15f205a651..b8a6a41fea 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -171,7 +171,7 @@ class DownloadFragment : BaseFragment_TabLayout() { fun onEventMainThread(skip: EBSkip) { if (DownloadManagerActivity.TAG == skip.type) { if (view != null) { - view!!.postDelayed({ + requireView().postDelayed({ mViewPager.currentItem = skip.currentItem if (isAdded && skip.currentItem == DownloadManagerActivity.INDEX_DOWNLOAD) { val fragments = childFragmentManager.fragments diff --git a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt index 6ef16c0ad6..831336fdb6 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt @@ -22,7 +22,12 @@ data class ApkEntity(@SerializedName("package") var force: Boolean = false, var apkLink: ApkLink? = null, var plugin: String? = "",/*控制是否显示插件化 默认:open,取值有:open/only_index/only_game/close*/ - var time: Long? = null) : Parcelable { + var time: Long? = null, + @SerializedName("platform_name") + val platformName: String = "", + val remark: String = "", + @SerializedName("platform_icon") + val platformIcon: String = "") : Parcelable { fun getPlatform(): String? { if (TextUtils.isEmpty(platform)) { return "官方版" diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt index 183da91d29..7284733868 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt @@ -12,8 +12,13 @@ data class GameCollectionEntity( @SerializedName("_id") var id: String? = "", var color: String? = null, - var icon: String? = null, + var icon: String? = null, // todo remove? var name: String? = null, @SerializedName("package") var `package`: List = ArrayList(), - var saveApkEntity: List? = null) : Parcelable + var saveApkEntity: List? = null, + val remark: String = "", + @SerializedName("new_icon") + val newIcon: String = "", + @SerializedName("download_instruction") + val downloadInstruction: String = "") : Parcelable 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 d86537bcd3..00854ff91d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -165,7 +165,11 @@ data class GameEntity( @SerializedName("mutex_package") val mutexPackage: List? = null, @SerializedName("version_number") - val versionNumber: String = ""//有版号、无版号-有内购、无版号-无内购 + val versionNumber: String = "",// 有版号、无版号-有内购、无版号-无内购 + @SerializedName("plugin_link") + val pluginLink: PluginLink = PluginLink(), + @SerializedName("p_button_add_word") + val downloadDialogTitle: String = "" ) : Parcelable { @IgnoredOnParcel @@ -342,6 +346,16 @@ data class GameEntity( ) : Parcelable } + @Parcelize + data class PluginLink(@SerializedName("link_id") + var linkId: String = "", + var title: String = "", + @SerializedName("link_type") + var linkType: String = "", + @SerializedName("link_text") + var linkText: String = "", + var content: String = "") : Parcelable + companion object { const val TAG: String = "GameEntity" } diff --git a/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt index 7937b2a0ba..cc6a17c4ea 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt @@ -9,10 +9,12 @@ class PlatformEntity { var name: String? = null - var pic: String? = null + var pic: String? = null // todo remove? var color: String? = null + var newPic: String = "" + override fun toString(): String { return "$code=$name=$pic=$color" } diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_back.png b/app/src/main/res/drawable-xxhdpi/download_dialog_back.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf28ce57b0a30a4edcafaee98faff1e42a04538 GIT binary patch literal 973 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(;Zvw#`F1}W^m|1t)s+}zW}F(iZa zZG>&Uu%p1)#N^;h3YXMG|0{SUpDbi&WfhvDV)BReP`kjR)epo29Gp5;xwrx*^Me%Z6V<-0d$>+41uvidLv9}qFXq#i8M z6v%A(^|!9nXr@iiq6}^`c8%Rvv%WfRzWHb6SOhw)tX0n3RW z=1gLgyZ9~9Ku z$kjKk66f1%(Z-%6(d#z9Q&TqX(7T+FLk0rVt(n$1T}|A6JJ(9x{jQOjp~AZ^q39!i z(NhgN-fEoNvGDw(yX|r7w=cap#q{3Gl01X59!DNy{@q?Pq~*OIZ+#)yTu@bIHhXW& zt^SMQqF0}__ZhP#C*I>ecI}z4@y6Bfw~EW83)Hv@-I|wvTw$tL>gF{(=X`op_i)Qx zH!85n-5OQi@Z4eZ=U+xKyEwkdl+N39IBIR#&Wjm;E;K!rOjmPTRMUOqzl!>EewO-$ z_gErJrT=X$ox4VCiMhZRUajxzBLu!^@B5-!^HP72;{yd_!+me8kHlPEru5A2mFR@0 zAE!j_*|*`d6NAO$dygxR_Ab30!0__tyPNI_H|h@8?Uhj4Fl$T9gB0)MU#n_)msF^9 zv}!Yy_TP3e`5@7={X*QaEGZ#xj>tAXr8As&7DsH8ezEPRjwr*~sRs?;`>UmWTh4#7 z+~%5Eo6S$93{Q1N0hxU+iIRIx_{=#n^WAf`H!??0=P%@mD^V-Ev7{{VPzl$ioyHZC zGb5B<9ph5;Nv|~8(H~GCJEv3Da;0vM!Q6Ho-&@N3I$K0vC~pz*nsIPuO+naxr|(%B zGp5u^r@twcv2OkMFu)?Qsn7U_@|NwvDtqJ#&)FY5`%*9JtKXZa9tK*i8@eA)J~&r5 zTHwn*VfE*&U%XX)6y|kyrZm4hqNp-?+fw1Q4QqJ#HnskH;UVPny}!kvIZIL|#rtRE zOtn|@n%`f_OUiit?t#J&p5pzRH_iX|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`8LOv@V@L$& z+v^8;n+i<;TeD@3t2bQQI?KZFMg3*b%aIF@ELiLF zmv6Jv%1eDlxiepu-T0;VHTSk%#QP~+EG?#9yqnxq8+8ItDrkp@onV^Eo3vO%L9L4| zY2k_m$|0el-|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*H=2p zE|F@X yvV9eqaA!;Sf`7J&6LV)PevDb-zIN{io*HJU;Qyyf^!q?biow&>&t;ucLK6USN%MRF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_launch.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_launch.png new file mode 100644 index 0000000000000000000000000000000000000000..ff91a0bbf40450b665f3b0d65e1071baad08ba73 GIT binary patch literal 846 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Je#q7srqY z&bQOgX9qh99N#Z|`BI0tZTDp5Lt3GVs?-5#@|v-X7+J$HXdS=?w*;w{qxP4?{9Bs{Izy| z<9{9ID>=4{Ki70fJU{xJoj1X-ye(|@&+5XnTqe^VzBEea?AdR}BDTZ5S#eI4sdIK5 zOTJ0_`iX(LqQ`XE-FTUf9q8;;>YB)Ew{}^aNp{fJN634Esde1rGjr+%i4EsDkXx`-$aoTrHy)1dB z=!E@Koz<@|F0XuYU259XOzQ-PFLgH;bj|KL{5|bN<<}d}zUnwn{a>5_2 zbeJ|N7AEavxtl4le(6ck30+|&MWGIDb2y&4NWOXJa#JwC_~NPGIltaUR=s1`C9_5M zRoJ4hOm5d7T-jIWC}?>|D!1dZz4f76-flls`rmXkU6a#Ywdkv|UVUfYb^Sx#_pePl zsc5M>^X9!@p<50dKB&;Nx9K8lr1vuM!{(M+9^xf2jO#>`zBnEKd+oe~J+o}e1O9J| W*k-QSDl!q2mOWklT-G@yGywoRVq`i1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_pause.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce8f90d94959f47ff6e35a167333f3a57b5f4cb GIT binary patch literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*)mTT$B+ol zx6}7}F*^zzPoK14#dN!^YhO&fW;8Wnq3a%}`v*_?eQ?;g`IPmI7%6U1#}nEr;Wx6R zUw5~*S)7Zxu^~Ij;7Dx88&m7uZ{Gg-X8+ri;a{`?Yryl|ZJWKFEEE^1?!7y$w?p2e zpfo^tzLq>|s)wh?@pTDB^)`hcR~kz=c-#=k+S}|~y+Xh&=huhiYSukWagD9v2kxg< zaXh{ErF`bPj_v=KG9BBt-SY5~zuUSwBKX7K|4jV$bF#j=1Cz7C4pEM_OkMGh1^LDm zb6HYt64gt8yf(9|&U(-MN+mOFw#hc(1uJ%y9Y1wM$6rpXZI!^mWaG0*+j!a36@$H= ztP+Ufo{;rh&WSnW-ku(I`O}-HB!{Z`@8$a9xxh{F@&8>7OW$h5R2n{+Wv-vBo?Jee zDKK@5V9E8v3GLI%SKV?kTy${X72XAvpEoUZy8Kxu@P*}D+kz-5ErmdijTOqJ$|qH)78&qol`;+00Qsdp8x;= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_pluggable.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_pluggable.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9b80adb4d853cd56a729fc123804c090d3adea GIT binary patch literal 1879 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 + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/download_dialog_item_progress.xml b/app/src/main/res/drawable/download_dialog_item_progress.xml new file mode 100644 index 0000000000..5a14b7ac19 --- /dev/null +++ b/app/src/main/res/drawable/download_dialog_item_progress.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/download_dialog_version_note.xml b/app/src/main/res/drawable/download_dialog_version_note.xml new file mode 100644 index 0000000000..5a6440f4f5 --- /dev/null +++ b/app/src/main/res/drawable/download_dialog_version_note.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_download.xml b/app/src/main/res/layout/dialog_download.xml index 06c051c17f..5de9a1f8a8 100644 --- a/app/src/main/res/layout/dialog_download.xml +++ b/app/src/main/res/layout/dialog_download.xml @@ -1,17 +1,75 @@ - + + android:background="@drawable/community_edit_window_bg" + android:paddingLeft="20dp" + android:paddingTop="14dp" + android:paddingRight="20dp"> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_installed_item.xml b/app/src/main/res/layout/download_dialog_installed_item.xml new file mode 100644 index 0000000000..1ab1ed3234 --- /dev/null +++ b/app/src/main/res/layout/download_dialog_installed_item.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_item.xml b/app/src/main/res/layout/download_dialog_item.xml new file mode 100644 index 0000000000..9004ac120d --- /dev/null +++ b/app/src/main/res/layout/download_dialog_item.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_link_item.xml b/app/src/main/res/layout/download_dialog_link_item.xml new file mode 100644 index 0000000000..032e287260 --- /dev/null +++ b/app/src/main/res/layout/download_dialog_link_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_section_item.xml b/app/src/main/res/layout/download_dialog_section_item.xml new file mode 100644 index 0000000000..64016466bb --- /dev/null +++ b/app/src/main/res/layout/download_dialog_section_item.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/downloadmanager.xml b/app/src/main/res/layout/downloadmanager.xml index faaf658699..a629dd4adb 100644 --- a/app/src/main/res/layout/downloadmanager.xml +++ b/app/src/main/res/layout/downloadmanager.xml @@ -14,7 +14,8 @@ android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/white" - android:orientation="vertical"> + android:orientation="vertical" + android:visibility="gone"> #50556B #979A9F #242529 + #ebebeb \ No newline at end of file