From 99fc35e632846694a1faa6fa71e50e4142f7e3ce Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Sun, 16 Jun 2019 14:18:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AE=80=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=B8=B8=E6=88=8F=E5=BC=B9=E7=AA=97=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 2 +- app/build.gradle | 3 +- .../gh/common/dialog/ReserveDialogFragment.kt | 118 ++++++++++++ .../com/gh/common/util/DownloadItemUtils.java | 32 +++- .../com/gh/gamecenter/entity/GameEntity.kt | 3 +- .../main/res/drawable-xhdpi/ic_reserve.png | Bin 0 -> 8160 bytes .../main/res/drawable-xhdpi/ic_reserved.png | Bin 0 -> 6122 bytes app/src/main/res/drawable/button_reserve.xml | 17 ++ .../main/res/drawable/round_grey_stroke.xml | 11 ++ .../main/res/layout/dialog_reserve_game.xml | 174 ++++++++++++++++++ build.gradle | 6 +- 11 files changed, 355 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt create mode 100644 app/src/main/res/drawable-xhdpi/ic_reserve.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_reserved.png create mode 100644 app/src/main/res/drawable/button_reserve.xml create mode 100644 app/src/main/res/drawable/round_grey_stroke.xml create mode 100644 app/src/main/res/layout/dialog_reserve_game.xml diff --git a/.gitmodules b/.gitmodules index 6c012ef391..5e47976cd4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "libraries/LGLibrary"] path = libraries/LGLibrary - url = git@gitlab.ghzhushou.com:android/common-library.git + url = git@gitlab.ghzs.com:android/common-library.git branch = master diff --git a/app/build.gradle b/app/build.gradle index 0d57b20a15..04a768b838 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,5 @@ apply plugin: 'com.android.application' - -apply plugin: 'org.jetbrains.kotlin.android.extensions' +apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android' // kotlin apply plugin: 'kotlin-kapt' diff --git a/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt new file mode 100644 index 0000000000..933d1a60a9 --- /dev/null +++ b/app/src/main/java/com/gh/common/dialog/ReserveDialogFragment.kt @@ -0,0 +1,118 @@ +package com.gh.common.dialog + +import android.annotation.SuppressLint +import android.os.Bundle +import android.text.Html +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.EditText +import android.widget.TextView +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import butterknife.BindView +import butterknife.ButterKnife +import butterknife.OnClick +import com.gh.common.util.observeNonNull +import com.gh.common.util.viewModelProvider +import com.gh.gamecenter.R +import com.lightgame.dialog.BaseDialogFragment +import com.lightgame.utils.Utils + +class ReserveDialogFragment : BaseDialogFragment() { + + @BindView(R.id.reserve_hint_tv) + lateinit var reserveHintTv: TextView + @BindView(R.id.reserve_content_tv) + lateinit var reserveContentTv: TextView + @BindView(R.id.reserve_completed_content_tv) + lateinit var reserveCompletedContentTv: TextView + @BindView(R.id.mobile_et) + lateinit var mobileEt: EditText + @BindView(R.id.reserve_container) + lateinit var reserveContainer: View + @BindView(R.id.reserve_completed_container) + lateinit var reserveCompletedContainer: View + + lateinit var mViewModel: ReserveViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + mViewModel = viewModelProvider() + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.dialog_reserve_game, null) + } + + @Suppress("DEPRECATION") + @SuppressLint("SetTextI18n") + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + ButterKnife.bind(this, view) + + val reserveContent = "游戏上线,您将免费收到短信提醒" + + reserveContentTv.text = Html.fromHtml(reserveContent) + + mViewModel.reservation.observeNonNull(this) { + if (it) { + showSuccessDialog() + } + } + dialog.setCanceledOnTouchOutside(true) + } + + private fun showSuccessDialog() { + reserveHintTv.text = "游戏预约成功" + reserveCompletedContentTv.text = Html.fromHtml("游戏上线,将通过免费短信提醒您建议你设置微信提醒,多渠道提醒,不会错过任何预约的游戏。" + + "一个帐号仅需设置一次,即可永久有效。") + + reserveContainer.visibility = View.GONE + reserveCompletedContainer.visibility = View.VISIBLE + } + + @OnClick(R.id.reserve_with_mobile_btn, + R.id.reserve_without_mobile_btn, + R.id.close_btn, + R.id.customizable_btn) + fun onClick(view: View) { + when (view.id) { + R.id.reserve_without_mobile_btn -> { + mViewModel.reserve() + } + + R.id.reserve_with_mobile_btn -> { + val mobile = mobileEt.text.toString() + if (mobile.length < 11 || !mobile.startsWith("1")) { + Utils.toast(context, "手机号格式错误,请检查并重新输入") + return + } + + mViewModel.reserve(mobile = mobile) + } + + R.id.close_btn -> { + dismiss() + } + + R.id.customizable_btn -> { + dismiss() + } + } + } +} + +class ReserveViewModel : ViewModel() { + val reservation = MutableLiveData() + + fun reserve(mobile: String = "") { + if (mobile.isNotEmpty()) { + reservation.postValue(true) + } else { + reservation.postValue(true) + } + } + +} \ No newline at end of file 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 379515b25a..06738ef428 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -3,15 +3,18 @@ package com.gh.common.util; import android.content.Context; import android.graphics.Color; import android.os.Message; -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.collection.ArrayMap; -import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.widget.TextView; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.collection.ArrayMap; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + import com.gh.common.constant.Config; +import com.gh.common.dialog.ReserveDialogFragment; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureUtils; import com.gh.common.view.DownloadDialog; @@ -124,6 +127,17 @@ public class DownloadItemUtils { holder.gameLibaoIcon.setVisibility(View.GONE); } + // 显示预约 + if (gameEntity.getCanReserve()) { + holder.gameDes.setVisibility(View.VISIBLE); + holder.gameProgressbar.setVisibility(View.GONE); + holder.gameInfo.setVisibility(View.GONE); + holder.gameDownloadBtn.setBackgroundResource(R.drawable.button_reserve); + holder.gameDownloadBtn.setText("预约"); + holder.gameDownloadBtn.setTextColor(Color.WHITE); + return; + } + if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { holder.gameDes.setVisibility(View.VISIBLE); holder.gameProgressbar.setVisibility(View.GONE); @@ -297,6 +311,16 @@ public class DownloadItemUtils { final String location, final ExposureEvent traceEvent) { + if (gameEntity.getCanReserve()) { + downloadBtn.setOnClickListener(v -> { + CheckLoginUtils.checkLogin(context, entrance, () -> { + ReserveDialogFragment dialogFragment = new ReserveDialogFragment(); + dialogFragment.show(((AppCompatActivity) context).getSupportFragmentManager(), "reserve"); + }); + }); + return; + } + if (gameEntity.getApk().size() == 1) { downloadBtn.setOnClickListener(v -> onNormalClick(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent)); } else { 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 3f6ac21958..a4ef65b29e 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -1,7 +1,6 @@ package com.gh.gamecenter.entity import android.os.Parcelable -import androidx.collection.ArrayMap import com.gh.common.constant.Config import com.gh.gamecenter.game.data.GameSubjectData import com.google.gson.annotations.SerializedName @@ -20,6 +19,8 @@ data class GameEntity( var nameSuffix: String = "", var brief: String? = null, + var canReserve: Boolean = false, + private var tag: ArrayList? = null, private var apk: ArrayList? = null, @SerializedName("apk_normal") diff --git a/app/src/main/res/drawable-xhdpi/ic_reserve.png b/app/src/main/res/drawable-xhdpi/ic_reserve.png new file mode 100644 index 0000000000000000000000000000000000000000..66413df52f2f357ec5731eb807bee207cfe4e796 GIT binary patch literal 8160 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/button_reserve.xml b/app/src/main/res/drawable/button_reserve.xml new file mode 100644 index 0000000000..83524570c3 --- /dev/null +++ b/app/src/main/res/drawable/button_reserve.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/round_grey_stroke.xml b/app/src/main/res/drawable/round_grey_stroke.xml new file mode 100644 index 0000000000..6715dacb8b --- /dev/null +++ b/app/src/main/res/drawable/round_grey_stroke.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_reserve_game.xml b/app/src/main/res/layout/dialog_reserve_game.xml new file mode 100644 index 0000000000..c3a8dff29c --- /dev/null +++ b/app/src/main/res/layout/dialog_reserve_game.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 8dcdfe6121..9298799a35 100644 --- a/build.gradle +++ b/build.gradle @@ -3,14 +3,16 @@ apply from: 'dependencies.gradle' buildscript { + // 升级至 1.3.30+ 会找不到 @Parcelize 注解 ext.kotlin_version = '1.3.10' + repositories { google() jcenter() maven { url "https://maven.google.com" } maven { url "https://dl.bintray.com/thelasterstar/maven/" } //weiboSDK -// maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } } + dependencies { classpath "com.android.tools.build:gradle:3.4.1" @@ -32,7 +34,6 @@ allprojects { google() jcenter() maven { url "https://dl.bintray.com/thelasterstar/maven/" }//weiboSDK -// maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' } } } @@ -68,7 +69,6 @@ subprojects { } } - } } } \ No newline at end of file