mireo 1.1.2

This commit is contained in:
yuyl 2025-05-10 16:22:56 +08:00
parent 806d470aac
commit 3f53608d63
21 changed files with 278 additions and 51 deletions

View File

@ -16,6 +16,9 @@ class TranslatesBean(
)
data class Translates(
val mireo_unlock_vip: String,
val mireo_vip_splash_tip: String,
val mireo_vip_splash_title: String,
val mireo_http_token_error: String,
val mireo_http_server_out_time: String,
val mireo_http_server_error: String,

View File

@ -88,6 +88,7 @@ object MsConstants {
const val ONE_DAY_IN_MILLIS_VIP = 60 * 60 * 1000L
const val CONSTANTS_web_notification = "CONSTANTS_web_notification"
const val CONSTANTS_SEARCH_STRING = "CONSTANTS_SEARCH_STRING"
const val CONSTANTS_PREF_LAST_POPUP_TIME_VIP = "CONSTANTS_PREF_LAST_POPUP_TIME_VIP"
}

View File

@ -92,27 +92,6 @@ class LanguageSwitchActivity : AppActivity(), StatusAction {
mAdapter?.notifyDataSetChanged()
}
// tvOk?.setOnClickListener {
// singleClick {
// if (isSystem) {
// val locale = when (Locale.getDefault().language) {
// "zh" -> when (Locale.getDefault().country) {
// "HK", "TW" -> "zh_hk"
// "CN" -> "zh"
// else -> Locale.getDefault().language
// }
//
// else -> Locale.getDefault().language
// }
// langKey = locale
// getTranslatesLanguageApi(langKey)
// } else {
// if (langKey.isEmpty()) return@singleClick
// getTranslatesLanguageApi(langKey)
// }
// }
// }
}
fun setLanguage() {

View File

@ -1176,6 +1176,9 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle
override fun onHttpSuccess(result: HttpData<Any>) {
}
override fun onHttpFail(throwable: Throwable) {
}
})
}

View File

@ -37,7 +37,7 @@ class HomeCriticallyAdapter :
holder.binding.tvDescription.text = item.description
holder.binding.tvScore.text = item.all_coins
holder.binding.tvGood.text = item.watch_total?.let { formatNumber(it) }
if (item.category?.isNotEmpty() == true) {
if (item.category?.isNotEmpty() == true && item.category[0].isNotEmpty()) {
holder.binding.tvFavor.visibility = View.VISIBLE
holder.binding.tvFavor.text = item.category[0]
} else {

View File

@ -0,0 +1,37 @@
package com.localee.mireo.app.ui.dialog
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.Gravity
import android.view.LayoutInflater
import android.view.Window
import android.view.WindowManager
import com.localee.mireo.shortapp.databinding.DialogVipSplashBinding
class VipSplashDialog (context: Context) : Dialog(context) {
private lateinit var binding: DialogVipSplashBinding
init {
init()
}
private fun init() {
requestWindowFeature(Window.FEATURE_NO_TITLE)
binding = DialogVipSplashBinding.inflate(LayoutInflater.from(context))
setContentView(binding.root)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window?.setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
window?.setGravity(Gravity.CENTER)
setCancelable(false)
}
fun getBinding(): DialogVipSplashBinding {
return binding
}
}

View File

@ -35,13 +35,16 @@ import com.localee.mireo.app.ui.activity.SettingActivity
import com.localee.mireo.app.ui.activity.StoreActivity
import com.localee.mireo.app.ui.activity.VideoPlayActivity
import com.localee.mireo.app.ui.adapter.MeHistoryAdapter
import com.localee.mireo.app.ui.dialog.VipSplashDialog
import com.localee.mireo.app.ui.videoPaly.ExampleUnFavoriteDialog
import com.localee.mireo.app.utils.MsMMKVUtils
import com.localee.mireo.app.utils.TranslatesUtils
import com.localee.mireo.app.utils.shouldShowVIP
import com.localee.mireo.app.utils.singleClick
import com.localee.mireo.app.utils.transToString
import com.localee.mireo.app.widget.layout.SettingBar
import com.localee.mireo.shortapp.R
import com.localee.mireo.shortapp.databinding.DialogVipSplashBinding
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
@ -74,6 +77,9 @@ class MineFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListener
private val sbAbout: SettingBar? by lazy { findViewById(R.id.sb_about) }
private val sbFeedback: SettingBar? by lazy { findViewById(R.id.sb_feedback) }
private val sbLanguage: SettingBar? by lazy { findViewById(R.id.sb_language) }
private var vipSplashDialog: VipSplashDialog? = null
private var bind: DialogVipSplashBinding? = null
private var isVipSplash = false
private var mAdapter: MeHistoryAdapter? = null
@ -218,7 +224,6 @@ class MineFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListener
}
}
}
private var isDataLoaded = false
@ -229,6 +234,11 @@ class MineFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListener
// isDataLoaded = true
// }
getMyHistory(1, 20)
rlStatusRefresh?.postDelayed({
if (shouldShowVIP() && !MsMMKVUtils.isVip() && !isVipSplash) {
showVip()
}
}, 1000)
}
override fun onClick(view: View) {
@ -321,6 +331,35 @@ class MineFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListener
exampleUnFavoriteDialog.show()
}
private fun showVip() {
vipSplashDialog = VipSplashDialog(requireContext())
bind = vipSplashDialog?.getBinding()
bind?.tvTitle?.text = TranslatesUtils.translates()?.mireo_vip_splash_title
bind?.tvTip?.text = TranslatesUtils.translates()?.mireo_vip_splash_tip
bind?.tvMember1?.text = TranslatesUtils.translates()?.mireo_store_ad_free
bind?.tvMember2?.text = TranslatesUtils.translates()?.mireo_store_exclusive
bind?.tvMember3?.text = TranslatesUtils.translates()?.mireo_store_free_coins
bind?.tvMember4?.text = TranslatesUtils.translates()?.mireo_store_only
bind?.tvVipBenefits?.text = TranslatesUtils.translates()?.mireo_unlock_vip
bind?.ivClose?.setOnClickListener {
vipSplashDialog?.dismiss()
isVipSplash = false
}
bind?.tvVipBenefits?.setOnClickListener {
MsMMKVUtils.getMMKV().putLong(
MsConstants.CONSTANTS_PREF_LAST_POPUP_TIME_VIP,
System.currentTimeMillis()
)
startActivity(StoreActivity::class.java)
vipSplashDialog?.dismiss()
isVipSplash = false
}
vipSplashDialog?.show()
isVipSplash = true
}
private fun getCustomerUser() {
EasyHttp.get(this)
.api(UserInfoApi().apply {

View File

@ -4,6 +4,8 @@ import android.annotation.SuppressLint
import android.content.Context
import android.os.Build
import com.localee.mireo.app.other.MsConstants
import com.localee.mireo.app.other.MsConstants.CONSTANTS_PREF_LAST_POPUP_TIME_VIP
import com.localee.mireo.app.other.MsConstants.ONE_DAY_IN_MILLIS_VIP
import java.text.SimpleDateFormat
import java.time.Instant
import java.time.LocalDateTime
@ -127,14 +129,14 @@ fun shouldShowNotification(): Boolean {
return currentTime - lastPopupTime > MsConstants.ONE_DAY_IN_MILLIS
}
//
//fun shouldShowVIP(): Boolean {
// val lastPopupTime =
// ExampleMMKVUtils.getMMKV().getLong(CONSTANTS_PREF_LAST_POPUP_TIME_VIP, 0)
// val currentTime = System.currentTimeMillis()
//
// return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS_VIP
//}
fun shouldShowVIP(): Boolean {
val lastPopupTime =
MsMMKVUtils.getMMKV().getLong(CONSTANTS_PREF_LAST_POPUP_TIME_VIP, 0)
val currentTime = System.currentTimeMillis()
return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS_VIP
}
fun getUserAgent(): String {
return System.getProperty("http.agent") ?: ""

View File

@ -178,12 +178,13 @@
android:id="@+id/tv_member_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_no_ads"
android:drawablePadding="@dimen/dp_8"
android:maxLines="2"
android:gravity="center_horizontal"
android:text="Ad-Free\nStreaming"
android:text="Ad-FreeStreaming"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
app:layout_constraintEnd_toStartOf="@+id/tv_member_2"
@ -197,8 +198,10 @@
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_free"
android:drawablePadding="@dimen/dp_8"
android:layout_marginHorizontal="@dimen/dp_8"
android:gravity="center_horizontal"
android:text="Exclusive\nEpisodes"
android:maxLines="2"
android:text="Exclusive Episodes"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
app:layout_constraintEnd_toStartOf="@+id/tv_member_3"
@ -213,7 +216,9 @@
android:drawableTop="@mipmap/ic_vip_exclusive"
android:drawablePadding="@dimen/dp_8"
android:gravity="center_horizontal"
android:text="Daily free\ncoins"
android:text="Daily free coins"
android:maxLines="2"
android:layout_marginHorizontal="@dimen/dp_8"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
app:layout_constraintEnd_toStartOf="@+id/tv_member_4"
@ -225,11 +230,12 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_10"
android:drawableTop="@mipmap/ic_vip_only_coupons"
android:drawablePadding="@dimen/dp_8"
android:gravity="center_horizontal"
android:text="VIP-Only\nCoupons"
android:text="VIP-Only Coupons"
android:layout_marginHorizontal="@dimen/dp_8"
android:maxLines="2"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -29,9 +29,9 @@
app:layout_constraintTop_toTopOf="parent"
app:leftIcon="@mipmap/iv_example_back"
app:lineVisible="false"
app:title="Store"
app:rightTitle="restore"
app:rightTitleColor="@color/white"
app:title="Store"
app:titleColor="@color/white" />
<androidx.core.widget.NestedScrollView
@ -149,11 +149,12 @@
android:id="@+id/tv_member_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_no_ads"
android:drawablePadding="@dimen/dp_8"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="Ad-Free Streaming"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
@ -165,10 +166,12 @@
android:id="@+id/tv_member_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_free"
android:drawablePadding="@dimen/dp_8"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="Exclusive Episodes"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
@ -180,10 +183,12 @@
android:id="@+id/tv_member_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_exclusive"
android:drawablePadding="@dimen/dp_8"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="Daily free coins"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"
@ -195,11 +200,12 @@
android:id="@+id/tv_member_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_10"
android:drawableTop="@mipmap/ic_vip_only_coupons"
android:drawablePadding="@dimen/dp_8"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="VIP-Only Coupons"
android:textColor="#c4c4c4"
android:textSize="@dimen/sp_12"

View File

@ -85,7 +85,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_coin"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_95"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_11"
app:layout_constraintStart_toStartOf="parent"
@ -110,7 +110,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_118"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_15"
app:layout_constraintStart_toStartOf="parent"

View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp_315"
android:layout_height="wrap_content"
android:background="@mipmap/ic_vip_splash_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_title"
android:layout_width="@dimen/dp_170"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_50"
android:fontFamily="sans-serif-medium"
android:text="Go Premium Elevate Your Binge!"
android:textColor="#712B2B"
android:maxLines="2"
android:textSize="@dimen/sp_17"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_5"
android:text="Unlock 1000+ exclusive dramas"
android:textColor="#AB7B7B"
android:textSize="@dimen/sp_12"
android:singleLine="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
<TextView
android:id="@+id/tv_member_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_8"
android:drawableTop="@mipmap/ic_vip_no_ads_2"
android:drawablePadding="@dimen/dp_2"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="Ad-FreeStreaming"
android:textColor="#712B2B"
android:textSize="@dimen/sp_11"
app:layout_constraintEnd_toStartOf="@+id/tv_member_2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_tip" />
<TextView
android:id="@+id/tv_member_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_free_2"
android:drawablePadding="@dimen/dp_2"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="Exclusive Episodes"
android:textColor="#712B2B"
android:textSize="@dimen/sp_11"
app:layout_constraintEnd_toStartOf="@+id/tv_member_3"
app:layout_constraintStart_toEndOf="@+id/tv_member_1"
app:layout_constraintTop_toBottomOf="@+id/tv_tip" />
<TextView
android:id="@+id/tv_member_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:drawableTop="@mipmap/ic_vip_exclusive_2"
android:drawablePadding="@dimen/dp_2"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="Daily free coins"
android:textColor="#712B2B"
android:textSize="@dimen/sp_11"
app:layout_constraintEnd_toStartOf="@+id/tv_member_4"
app:layout_constraintStart_toEndOf="@+id/tv_member_2"
app:layout_constraintTop_toBottomOf="@+id/tv_tip" />
<TextView
android:id="@+id/tv_member_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_20"
android:drawableTop="@mipmap/ic_vip_only_coupons_2"
android:drawablePadding="@dimen/dp_2"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="VIP-Only Coupons"
android:textColor="#712B2B"
android:textSize="@dimen/sp_11"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_member_3"
app:layout_constraintTop_toBottomOf="@+id/tv_tip" />
<com.hjq.shape.view.ShapeTextView
android:id="@+id/tv_vip_benefits"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:layout_marginStart="@dimen/dp_13"
android:layout_marginTop="@dimen/dp_24"
android:layout_marginEnd="@dimen/dp_25"
android:layout_marginBottom="@dimen/dp_28"
android:gravity="center"
android:text="Unlock VIP Benefits"
android:textColor="@color/white"
android:textSize="@dimen/sp_13"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_member_4"
app:shape_radius="@dimen/dp_25"
app:shape_solidGradientEndColor="#F24C92"
app:shape_solidGradientStartColor="#F8726D" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_10"
android:src="@mipmap/ic_dialog_close_while"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cl_item"
android:layout_width="@dimen/dp_310"
android:layout_height="@dimen/dp_160"
android:layout_height="@dimen/dp_165"
android:layout_marginEnd="@dimen/dp_6"
android:background="@mipmap/ic_vip_week_bg"
android:orientation="vertical">
@ -96,15 +96,18 @@
app:layout_constraintStart_toStartOf="@+id/tv_des"
app:layout_constraintTop_toBottomOf="@+id/tv_info" />
<LinearLayout
<com.hjq.shape.layout.ShapeLinearLayout
android:id="@+id/ll_extra"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_20"
android:background="@mipmap/ic_vip_extra_bg"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_5"
android:paddingHorizontal="@dimen/dp_10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
app:layout_constraintEnd_toEndOf="parent"
app:shape_radiusInBottomRight="@dimen/dp_15"
app:shape_radiusInTopLeft="@dimen/dp_15"
app:shape_solidGradientEndColor="#FFE4CC"
app:shape_solidGradientStartColor="#FFDDBF">
<TextView
android:id="@+id/tv_extra"
@ -120,7 +123,7 @@
android:layout_marginStart="@dimen/dp_2"
android:src="@mipmap/ic_login_conins" />
</LinearLayout>
</com.hjq.shape.layout.ShapeLinearLayout>
<com.hjq.shape.view.ShapeCheckBox

View File

@ -35,6 +35,7 @@
android:layout_marginStart="@dimen/sp_12"
android:layout_marginTop="@dimen/dp_12"
android:text="Visitor"
android:singleLine="true"
android:textColor="#E5BCA7"
android:textSize="@dimen/sp_15"
android:visibility="visible"
@ -71,6 +72,7 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_29"
android:layout_marginEnd="@dimen/dp_19"
android:layout_marginBottom="@dimen/dp_15"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_21"
android:text="Log in"
@ -78,7 +80,6 @@
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@+id/iv_portrait"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_portrait"
app:shape_radius="@dimen/dp_15"
app:shape_strokeColor="@color/mireo_color_d2d2d2"
app:shape_strokeSize="@dimen/dp_1" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -7,8 +7,8 @@ android {
defaultConfig {
minSdk 24
targetSdk 34
versionName '1.1.1'
versionCode 9
versionName '1.1.2'
versionCode 10
}
compileOptions {