mireo 1.2.2

This commit is contained in:
yuyl 2025-06-17 13:43:32 +08:00
parent d3a94a3bad
commit 02ffc22f4e
21 changed files with 397 additions and 118 deletions

View File

@ -1,13 +1,13 @@
{ {
"project_info": { "project_info": {
"project_number": "905575925094", "project_number": "471869384808",
"project_id": "mireotv", "project_id": "mireotv-a591b",
"storage_bucket": "mireotv.firebasestorage.app" "storage_bucket": "mireotv-a591b.firebasestorage.app"
}, },
"client": [ "client": [
{ {
"client_info": { "client_info": {
"mobilesdk_app_id": "1:905575925094:android:01c39ac6692cb6bda974a7", "mobilesdk_app_id": "1:471869384808:android:4d94f4dabe74aa7d0333dd",
"android_client_info": { "android_client_info": {
"package_name": "com.localee.mireo.shortapp" "package_name": "com.localee.mireo.shortapp"
} }
@ -15,7 +15,7 @@
"oauth_client": [], "oauth_client": [],
"api_key": [ "api_key": [
{ {
"current_key": "AIzaSyBAC_RDCSdtba_yMQ0oXjKTstaMe6WzHmc" "current_key": "AIzaSyD3C1frcUVwdIGHbiWsuwlyJFRhi4huF8Y"
} }
], ],
"services": { "services": {

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools">
>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
@ -23,8 +22,7 @@
android:theme="@style/Theme.Example" android:theme="@style/Theme.Example"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:ignore="AllowBackup,LockedOrientationActivity" tools:ignore="AllowBackup,LockedOrientationActivity"
tools:replace="android:allowBackup,android:supportsRtl" tools:replace="android:allowBackup,android:supportsRtl">
>
<meta-data <meta-data
android:name="ScopedStorage" android:name="ScopedStorage"
@ -35,6 +33,7 @@
<meta-data <meta-data
android:name="com.facebook.sdk.ClientToken" android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token" /> android:value="@string/facebook_client_token" />
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider" android:authorities="${applicationId}.provider"
@ -46,48 +45,47 @@
android:resource="@xml/tu_seekbar" /> android:resource="@xml/tu_seekbar" />
</provider> </provider>
<activity <activity
android:name="com.localee.mireo.admins.OUnlockWarningActivity" android:name="com.localee.mireo.admins.OUnlockWarningActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.admins.CNBFragmentSystemActivity" android:name="com.localee.mireo.admins.CNBFragmentSystemActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.admins.YPulseColorsActivity" android:name="com.localee.mireo.admins.YPulseColorsActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.admins.EIPLineRecommendActivity" android:name="com.localee.mireo.admins.EIPLineRecommendActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.admins.EModuleCollectionActivity" android:name="com.localee.mireo.admins.EModuleCollectionActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.admins.XZShortActivity" android:name="com.localee.mireo.admins.XZShortActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.admins.BSGButtonMavenActivity" android:name="com.localee.mireo.admins.BSGButtonMavenActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name="com.localee.mireo.drama.probableAligning.savedIdctdsp.HEDDramaActivity" android:name="com.localee.mireo.drama.probableAligning.savedIdctdsp.HEDDramaActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/Theme.Splash" android:theme="@style/Theme.Splash">
>
<!-- <intent-filter>--> <!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />--> <!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <action android:name="android.intent.action.VIEW" />--> <!-- <action android:name="android.intent.action.VIEW" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />--> <!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>--> <!-- </intent-filter>-->
</activity> </activity>
@ -175,8 +173,7 @@
<activity <activity
android:name="com.localee.mireo.app.ui.activity.VideoPlayActivity" android:name="com.localee.mireo.app.ui.activity.VideoPlayActivity"
android:launchMode="singleTask" android:launchMode="singleTask" />
/>
<activity <activity
android:name="com.localee.mireo.app.ui.activity.SearchActivity" android:name="com.localee.mireo.app.ui.activity.SearchActivity"

View File

@ -64,5 +64,6 @@ class PaySettingsBean(
val auto_sub: String, val auto_sub: String,
var vip_type: String, var vip_type: String,
var vip_type_key: String, var vip_type_key: String,
var corner_marker: String,
) )
} }

View File

@ -52,6 +52,7 @@ import com.localee.mireo.app.http.api.DeeplinkFbApi
import com.localee.mireo.app.http.api.DoLoginApi import com.localee.mireo.app.http.api.DoLoginApi
import com.localee.mireo.app.http.api.EnterTheAppApi import com.localee.mireo.app.http.api.EnterTheAppApi
import com.localee.mireo.app.http.api.FirebaseTokenApi import com.localee.mireo.app.http.api.FirebaseTokenApi
import com.localee.mireo.app.http.api.GooglePaidApi
import com.localee.mireo.app.http.api.LeaveAppApi import com.localee.mireo.app.http.api.LeaveAppApi
import com.localee.mireo.app.http.api.MessageSendReportApi import com.localee.mireo.app.http.api.MessageSendReportApi
import com.localee.mireo.app.http.api.OnLineApi import com.localee.mireo.app.http.api.OnLineApi
@ -61,6 +62,8 @@ import com.localee.mireo.app.http.api.W2aApi
import com.localee.mireo.app.http.bean.HomeDataHistoryBean import com.localee.mireo.app.http.bean.HomeDataHistoryBean
import com.localee.mireo.app.http.bean.IncidentBean import com.localee.mireo.app.http.bean.IncidentBean
import com.localee.mireo.app.http.bean.LoginBean import com.localee.mireo.app.http.bean.LoginBean
import com.localee.mireo.app.http.bean.PayBean
import com.localee.mireo.app.http.bean.PayResBean
import com.localee.mireo.app.http.bean.TranslatesBean import com.localee.mireo.app.http.bean.TranslatesBean
import com.localee.mireo.app.http.model.HttpData import com.localee.mireo.app.http.model.HttpData
import com.localee.mireo.app.other.Logger import com.localee.mireo.app.other.Logger
@ -81,9 +84,14 @@ import com.localee.mireo.app.utils.NotificationUtils
import com.localee.mireo.app.utils.TranslatesUtils import com.localee.mireo.app.utils.TranslatesUtils
import com.localee.mireo.app.utils.shouldShowNotification import com.localee.mireo.app.utils.shouldShowNotification
import com.localee.mireo.app.utils.singleClick import com.localee.mireo.app.utils.singleClick
import com.localee.mireo.app.utils.toMapViaGson
import com.localee.mireo.shortapp.R import com.localee.mireo.shortapp.R
import com.lxj.xpopup.XPopup import com.lxj.xpopup.XPopup
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
@ -142,6 +150,7 @@ class HomeActivity : AppActivity(), NavigationAdapter.OnNavigationListener,
private var title = "" private var title = ""
private val viewModel: SharedViewModel by viewModels() private val viewModel: SharedViewModel by viewModels()
private val scope = CoroutineScope(Dispatchers.Main)
override fun getLayoutId(): Int { override fun getLayoutId(): Int {
return R.layout.home_activity return R.layout.home_activity
@ -359,6 +368,21 @@ class HomeActivity : AppActivity(), NavigationAdapter.OnNavigationListener,
.toString() .toString()
) )
} }
//处理失败订单
llMain?.postDelayed({
if (MsMMKVUtils.getOrder().isNotEmpty()) {
val string = MsMMKVUtils.getOrder()
scope.launch {
flow {
for (item in string) {
emit(item)
}
}.onEach { item ->
restorePaid(item)
}.debounce(1000).collect {}
}
}
}, 3000)
} }
override fun onNewIntent(intent: Intent?) { override fun onNewIntent(intent: Intent?) {
@ -457,6 +481,26 @@ class HomeActivity : AppActivity(), NavigationAdapter.OnNavigationListener,
}) })
} }
fun restorePaid(data: PayBean) {
EasyHttp.post(this)
.api(GooglePaidApi())
.body(getPublicRequest(data.toMapViaGson()))
.request(object : HttpCallbackProxy<HttpData<PayResBean>>(this) {
override fun onHttpStart(api: IRequestApi) {
}
override fun onHttpSuccess(result: HttpData<PayResBean>) {
result.getData()?.let {
it.order_code?.let { it1 -> MsMMKVUtils.removeOrderString(it1) }
}
}
})
}
fun getActionPush() { fun getActionPush() {
val sMap: MutableMap<String, String?> = LinkedHashMap() val sMap: MutableMap<String, String?> = LinkedHashMap()
// StringMap = getSortMap(StringMap); // StringMap = getSortMap(StringMap);
@ -726,6 +770,7 @@ class HomeActivity : AppActivity(), NavigationAdapter.OnNavigationListener,
) )
needSave = true needSave = true
w2aSelfAttribution(clipContent) w2aSelfAttribution(clipContent)
MsMMKVUtils.getMMKV().putString(MsConstants.Constants_DDL_Url, "")
} }
} }
} }

View File

@ -138,7 +138,7 @@ class MyVipActivity : AppActivity() {
} }
return@singleClick return@singleClick
} }
showDialog() // showDialog()
vipData = mAdapter!!.getItem(mAdapter!!.currentPosition) as PaySettingsBean.Vip vipData = mAdapter!!.getItem(mAdapter!!.currentPosition) as PaySettingsBean.Vip
getCreateOrder( getCreateOrder(
CreateOrderReqBean( CreateOrderReqBean(
@ -302,11 +302,10 @@ class MyVipActivity : AppActivity() {
purchase.orderId.toString(), purchase.orderId.toString(),
vipData?.price.toString() vipData?.price.toString()
) )
payReq = examplePayReq
if (it.responseCode == BillingClient.BillingResponseCode.OK) { if (it.responseCode == BillingClient.BillingResponseCode.OK) {
lifecycleScope.launch { lifecycleScope.launch {
googlePaid(examplePayReq) googlePaid(examplePayReq)
payReq = examplePayReq
MsMMKVUtils.saveOrder(examplePayReq)
} }
} else { } else {
MsMMKVUtils.saveOrder(examplePayReq) MsMMKVUtils.saveOrder(examplePayReq)
@ -431,8 +430,6 @@ class MyVipActivity : AppActivity() {
.api(CreateOrderApi()) .api(CreateOrderApi())
.body(getPublicRequest(data.toMapViaGson())) .body(getPublicRequest(data.toMapViaGson()))
.request(object : HttpCallbackProxy<HttpData<CreateOrderApi.Bean>>(this) { .request(object : HttpCallbackProxy<HttpData<CreateOrderApi.Bean>>(this) {
override fun onHttpStart(api: IRequestApi) {
}
override fun onHttpSuccess(result: HttpData<CreateOrderApi.Bean>) { override fun onHttpSuccess(result: HttpData<CreateOrderApi.Bean>) {
result.getData()?.let { result.getData()?.let {
@ -449,9 +446,6 @@ class MyVipActivity : AppActivity() {
} }
override fun onHttpFail(throwable: Throwable) {
super.onHttpFail(throwable)
}
}) })
} }
@ -476,6 +470,7 @@ class MyVipActivity : AppActivity() {
getCustomerUser() getCustomerUser()
} ?: run { } ?: run {
payReq?.let { it1 -> MsMMKVUtils.saveOrder(it1) }
if (TranslatesUtils.translates() != null) { if (TranslatesUtils.translates() != null) {
toast(TranslatesUtils.translates()?.mireo_network_error.toString()) toast(TranslatesUtils.translates()?.mireo_network_error.toString())
} else { } else {

View File

@ -171,7 +171,7 @@ class StoreActivity : AppActivity() {
} }
} }
.onEach { item -> .onEach { item ->
googlePaid(item) restorePaid(item)
} }
.debounce(500) .debounce(500)
.collect {} .collect {}
@ -214,7 +214,6 @@ class StoreActivity : AppActivity() {
} }
return@singleClick return@singleClick
} }
showDialog()
if (type == 0) { if (type == 0) {
coinsData = coinsData =
mCoinAdapter!!.getItem(mCoinAdapter!!.currentPosition) as PaySettingsBean.Coins mCoinAdapter!!.getItem(mCoinAdapter!!.currentPosition) as PaySettingsBean.Coins
@ -339,11 +338,10 @@ class StoreActivity : AppActivity() {
purchase.orderId.toString(), purchase.orderId.toString(),
vipData?.price.toString() vipData?.price.toString()
) )
payReq = examplePayReq
if (it.responseCode == BillingClient.BillingResponseCode.OK) { if (it.responseCode == BillingClient.BillingResponseCode.OK) {
lifecycleScope.launch { lifecycleScope.launch {
googlePaid(examplePayReq) googlePaid(examplePayReq)
payReq = examplePayReq
MsMMKVUtils.saveOrder(examplePayReq)
} }
} else { } else {
MsMMKVUtils.saveOrder(examplePayReq) MsMMKVUtils.saveOrder(examplePayReq)
@ -537,8 +535,6 @@ class StoreActivity : AppActivity() {
.api(CreateOrderApi()) .api(CreateOrderApi())
.body(getPublicRequest(data.toMapViaGson())) .body(getPublicRequest(data.toMapViaGson()))
.request(object : HttpCallbackProxy<HttpData<CreateOrderApi.Bean>>(this) { .request(object : HttpCallbackProxy<HttpData<CreateOrderApi.Bean>>(this) {
override fun onHttpStart(api: IRequestApi) {
}
override fun onHttpSuccess(result: HttpData<CreateOrderApi.Bean>) { override fun onHttpSuccess(result: HttpData<CreateOrderApi.Bean>) {
result.getData()?.let { result.getData()?.let {
@ -559,12 +555,6 @@ class StoreActivity : AppActivity() {
} }
override fun onHttpFail(throwable: Throwable) {
super.onHttpFail(throwable)
}
override fun onHttpEnd(api: IRequestApi) {
}
}) })
} }
@ -583,16 +573,43 @@ class StoreActivity : AppActivity() {
} else { } else {
toast(getString(R.string.google_pay_success)) toast(getString(R.string.google_pay_success))
} }
if (null != payReq) {
MsMMKVUtils.removeOrder(payReq)
}
if (it.is_backhaul == 1) {
// LogEventUtils.logEvent(
// ExampleAppConstants.LogEvent_af_app_recharge,
// it.data.money.toDouble(), "USD", "", order_code
// )
}
getCustomerUser() getCustomerUser()
isBuy = true
} ?: run {
payReq?.let { it1 -> MsMMKVUtils.saveOrder(it1) }
if (TranslatesUtils.translates() != null) {
toast(TranslatesUtils.translates()?.mireo_network_error.toString())
} else {
toast(getString(R.string.example_service_exception_please_try_again))
}
hideDialog()
}
}
})
}
fun restorePaid(data: PayBean) {
EasyHttp.post(this)
.api(GooglePaidApi())
.body(getPublicRequest(data.toMapViaGson()))
.request(object : HttpCallbackProxy<HttpData<PayResBean>>(this) {
override fun onHttpStart(api: IRequestApi) {
}
override fun onHttpSuccess(result: HttpData<PayResBean>) {
result.getData()?.let {
it.order_code?.let { it1 -> MsMMKVUtils.removeOrderString(it1) }
if (MsMMKVUtils.getOrder().size == 0) {
if (TranslatesUtils.translates() != null) {
toast(TranslatesUtils.translates()?.mireo_g_pay_success.toString())
} else {
toast(getString(R.string.google_pay_success))
}
getCustomerUser()
isBuy = true
}
} ?: run { } ?: run {
if (TranslatesUtils.translates() != null) { if (TranslatesUtils.translates() != null) {
@ -636,11 +653,10 @@ class StoreActivity : AppActivity() {
purchaseData?.orderId.toString(), purchaseData?.orderId.toString(),
if (type == 0) coinsData?.price.toString() else vipData?.price.toString() if (type == 0) coinsData?.price.toString() else vipData?.price.toString()
) )
payReq = examplePayReq
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
lifecycleScope.launch { lifecycleScope.launch {
googlePaid(examplePayReq) googlePaid(examplePayReq)
payReq = examplePayReq
MsMMKVUtils.saveOrder(examplePayReq)
} }
} else { } else {
MsMMKVUtils.saveOrder(examplePayReq) MsMMKVUtils.saveOrder(examplePayReq)

View File

@ -902,9 +902,9 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle
revolution = "1080" revolution = "1080"
MsMMKVUtils.getMMKV() MsMMKVUtils.getMMKV()
.putInt(CONSTANTS_quality, 1080) .putInt(CONSTANTS_quality, 1080)
detailRefresh()
EventBus.getDefault().post(CONSTANTS_quality_refresh) EventBus.getDefault().post(CONSTANTS_quality_refresh)
} }
detailRefresh()
} }
} }
} }
@ -1009,6 +1009,10 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle
setDetailsRecommendation(it) setDetailsRecommendation(it)
} ?: finish() } ?: finish()
} }
override fun onHttpFail(throwable: Throwable) {
finish()
}
}) })
} }

View File

@ -33,6 +33,13 @@ class MyVipBuyAdapter : BaseQuickAdapter<PaySettingsBean.Vip, MyVipBuyAdapter.VH
holder.binding.tvMoney.text = item.price_google holder.binding.tvMoney.text = item.price_google
holder.binding.tvDes.text = item.description holder.binding.tvDes.text = item.description
holder.binding.tvInfo.text = item.auto_sub holder.binding.tvInfo.text = item.auto_sub
if (item.corner_marker.isNotEmpty()) {
holder.binding.tvHot.text = item.corner_marker
holder.binding.tvHot.visibility = View.VISIBLE
} else {
holder.binding.tvHot.visibility = View.INVISIBLE
}
if ((item?.send_coins ?: 0) > 0) { if ((item?.send_coins ?: 0) > 0) {
holder.binding.tvExtra.text = holder.binding.tvExtra.text =
"+ ".plus(TranslatesUtils.translates()?.mireo_extra).plus(" ") "+ ".plus(TranslatesUtils.translates()?.mireo_extra).plus(" ")

View File

@ -3,6 +3,8 @@ package com.localee.mireo.app.ui.dialog
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Build
import android.text.Html
import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView import androidx.appcompat.widget.AppCompatTextView
import com.hjq.shape.view.ShapeTextView import com.hjq.shape.view.ShapeTextView
@ -171,4 +173,27 @@ object DialogUtils {
activateVIPDialog.show() activateVIPDialog.show()
} }
fun showStoreHint(context: Context) {
val storeHintDialog = StoreHintDialog(context)
val tv_content =
storeHintDialog.findViewById<AppCompatTextView>(R.id.tv_content)
val iv_close =
storeHintDialog.findViewById<AppCompatImageView>(R.id.iv_close)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tv_content?.text = Html.fromHtml(
TranslatesUtils.translates()?.mireo_pay_hint
?: context.getString(R.string.store_tips),
Html.FROM_HTML_MODE_COMPACT
)
} else {
tv_content?.text = Html.fromHtml(
TranslatesUtils.translates()?.mireo_pay_hint
?: context.getString(R.string.store_tips)
)
}
iv_close?.setOnClickListener { storeHintDialog.dismiss() }
storeHintDialog.show()
}
} }

View File

@ -0,0 +1,32 @@
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.Window
import android.view.WindowManager
import android.widget.TextView
import com.localee.mireo.shortapp.R
class StoreHintDialog(context: Context) : Dialog(context) {
init {
init()
}
private fun init() {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_store_hint)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window?.setLayout(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
window?.setGravity(Gravity.CENTER)
setCancelable(true)
}
}

View File

@ -59,7 +59,7 @@ class ExploreFragment : TitleBarFragment<HomeActivity>(),
private var exampleRecommendAdapter: ExampleRecommendAdapter? = null private var exampleRecommendAdapter: ExampleRecommendAdapter? = null
private var data: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data? = null private var data: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data? = null
private var revolution = private var revolution =
MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0).toString() MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 540).toString()
private val srRecommend: SmartRefreshLayout? by lazy { findViewById(R.id.sr_recommend) } private val srRecommend: SmartRefreshLayout? by lazy { findViewById(R.id.sr_recommend) }
@ -85,10 +85,8 @@ class ExploreFragment : TitleBarFragment<HomeActivity>(),
) )
activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
// exampleTvNoNetwork?.text =
// TranslatesUtils.translates()?.mireo_no_network
tvExampleRetry?.text = TranslatesUtils.translates()?.mireo_retry tvExampleRetry?.text = TranslatesUtils.translates()?.mireo_retry
// exampleTvEmpty?.text = TranslatesUtils.translates()?.s_no_content
} }
override fun initData() { override fun initData() {

View File

@ -27,6 +27,7 @@ import com.localee.mireo.app.http.api.UserInfoRes
import com.localee.mireo.app.http.bean.RecommendBean import com.localee.mireo.app.http.bean.RecommendBean
import com.localee.mireo.app.http.model.HttpData import com.localee.mireo.app.http.model.HttpData
import com.localee.mireo.app.other.MsConstants import com.localee.mireo.app.other.MsConstants
import com.localee.mireo.app.other.MsConstants.CONSTANTS_quality
import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id
import com.localee.mireo.app.ui.activity.HomeActivity import com.localee.mireo.app.ui.activity.HomeActivity
import com.localee.mireo.app.ui.activity.SearchActivity import com.localee.mireo.app.ui.activity.SearchActivity
@ -473,7 +474,11 @@ class HomeFragment : TitleBarFragment<HomeActivity>(), HomeBannerAdapter.HomeBan
result.getData()?.let { result.getData()?.let {
MsMMKVUtils.saveUserInfo(it) MsMMKVUtils.saveUserInfo(it)
var revolution =
MsMMKVUtils.getMMKV().getInt(CONSTANTS_quality, 540).toString()
if (revolution == "1080" && !MsMMKVUtils.isVip()) {
EventBus.getDefault().post(MsConstants.CONSTANTS_quality_refresh)
}
} }
} }
}) })
@ -539,7 +544,7 @@ class HomeFragment : TitleBarFragment<HomeActivity>(), HomeBannerAdapter.HomeBan
if (position == 0) { if (position == 0) {
getHomeVideoListApi(0, pageIndex, 15) getHomeVideoListApi(0, pageIndex, 15)
} else { } else {
category?.get(position)?.id?.let { getHomeVideoListApi(it, 1, 15) } category?.get(position - 1)?.id?.let { getHomeVideoListApi(it, 1, 15) }
} }
return true return true
} }
@ -557,7 +562,7 @@ class HomeFragment : TitleBarFragment<HomeActivity>(), HomeBannerAdapter.HomeBan
if (tabPosition == 0) { if (tabPosition == 0) {
getHomeVideoListApi(0, pageIndex, 15) getHomeVideoListApi(0, pageIndex, 15)
} else { } else {
category?.get(tabPosition)?.id?.let { getHomeVideoListApi(it, pageIndex, 15) } category?.get(tabPosition - 1)?.id?.let { getHomeVideoListApi(it, pageIndex, 15) }
} }
} }
} }

View File

@ -15,7 +15,6 @@ import com.hjq.http.EasyHttp
import com.hjq.http.config.IRequestApi import com.hjq.http.config.IRequestApi
import com.hjq.http.listener.HttpCallbackProxy import com.hjq.http.listener.HttpCallbackProxy
import com.hjq.shape.layout.ShapeLinearLayout import com.hjq.shape.layout.ShapeLinearLayout
import com.localee.mireo.shortapp.R
import com.localee.mireo.app.action.StatusAction import com.localee.mireo.app.action.StatusAction
import com.localee.mireo.app.app.TitleBarFragment import com.localee.mireo.app.app.TitleBarFragment
import com.localee.mireo.app.http.api.MyCollectionsApi import com.localee.mireo.app.http.api.MyCollectionsApi
@ -32,6 +31,7 @@ import com.localee.mireo.app.utils.TranslatesUtils
import com.localee.mireo.app.utils.singleClick import com.localee.mireo.app.utils.singleClick
import com.localee.mireo.app.widget.StatusLayout import com.localee.mireo.app.widget.StatusLayout
import com.localee.mireo.app.widget.StatusLayout.OnRetryListener import com.localee.mireo.app.widget.StatusLayout.OnRetryListener
import com.localee.mireo.shortapp.R
import com.scwang.smart.refresh.layout.SmartRefreshLayout import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
@ -76,9 +76,14 @@ class ListTabFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListe
mAdapter = tabName?.let { LostTabAdapter(it) } mAdapter = tabName?.let { LostTabAdapter(it) }
if (TranslatesUtils.translates() != null){ if (TranslatesUtils.translates() != null) {
tvDelete?.text = tvDelete?.text =
TranslatesUtils.translates()?.mireo_list_delete?.let { TranslatesUtils.replace(it,"0") } TranslatesUtils.translates()?.mireo_list_delete?.let {
TranslatesUtils.replace(
it,
"0"
)
}
} }
val layoutManager = GridLayoutManager(context, 3) val layoutManager = GridLayoutManager(context, 3)
@ -133,10 +138,15 @@ class ListTabFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListe
context?.resources?.getColor(R.color.example_color_d9d9d9) context?.resources?.getColor(R.color.example_color_d9d9d9)
?.let { tvDelete?.setTextColor(it) } ?.let { tvDelete?.setTextColor(it) }
if (TranslatesUtils.translates() != null){ if (TranslatesUtils.translates() != null) {
tvDelete?.text = tvDelete?.text =
TranslatesUtils.translates()?.mireo_list_delete?.let { TranslatesUtils.replace(it,"0") } TranslatesUtils.translates()?.mireo_list_delete?.let {
}else{ TranslatesUtils.replace(
it,
"0"
)
}
} else {
tvDelete?.text = "Delete (0)" tvDelete?.text = "Delete (0)"
} }
ivDelete?.setImageResource(R.mipmap.ic_list_detele_n) ivDelete?.setImageResource(R.mipmap.ic_list_detele_n)
@ -145,10 +155,15 @@ class ListTabFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListe
?.intoBackground(); ?.intoBackground();
context?.resources?.getColor(R.color.example_color_F56490) context?.resources?.getColor(R.color.example_color_F56490)
?.let { tvDelete?.setTextColor(it) } ?.let { tvDelete?.setTextColor(it) }
if (TranslatesUtils.translates() != null){ if (TranslatesUtils.translates() != null) {
tvDelete?.text = tvDelete?.text =
TranslatesUtils.translates()?.mireo_list_delete?.let { TranslatesUtils.replace(it, detailList.size.toString()) } TranslatesUtils.translates()?.mireo_list_delete?.let {
}else{ TranslatesUtils.replace(
it,
detailList.size.toString()
)
}
} else {
tvDelete?.text = "Delete (" + detailList.size + ")" tvDelete?.text = "Delete (" + detailList.size + ")"
} }
ivDelete?.setImageResource(R.mipmap.ic_list_detele_y) ivDelete?.setImageResource(R.mipmap.ic_list_detele_y)
@ -213,30 +228,36 @@ class ListTabFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListe
fun setCancel() { fun setCancel() {
rlStatusRefresh?.setEnableRefresh(true) rlStatusRefresh?.setEnableRefresh(true)
val allData: List<HistoryBean.Data>? = mAdapter?.items llDelete?.visibility = View.GONE
for (i in allData?.indices!!) { llDelete?.shapeDrawableBuilder?.setStrokeColor(0xFF9D9D9D.toInt())
?.intoBackground();
val allData = mAdapter?.items
if (allData.isNullOrEmpty()) return
for (i in allData.indices) {
allData[i].is_check = false allData[i].is_check = false
} }
detailList.clear() detailList.clear()
mAdapter?.selectEdit = false mAdapter?.selectEdit = false
mAdapter?.notifyDataSetChanged() mAdapter?.notifyDataSetChanged()
llDelete?.visibility = View.GONE
llDelete?.shapeDrawableBuilder?.setStrokeColor(0xFF9D9D9D.toInt())
?.intoBackground();
context?.resources?.getColor(R.color.example_color_d9d9d9) context?.resources?.getColor(R.color.example_color_d9d9d9)
?.let { tvDelete?.setTextColor(it) } ?.let { tvDelete?.setTextColor(it) }
if (TranslatesUtils.translates() != null){ if (TranslatesUtils.translates() != null) {
tvDelete?.text = tvDelete?.text =
TranslatesUtils.translates()?.mireo_list_delete?.let { TranslatesUtils.replace(it, "0") } TranslatesUtils.translates()?.mireo_list_delete?.let {
}else{ TranslatesUtils.replace(
it,
"0"
)
}
} else {
tvDelete?.text = "Delete (0)" tvDelete?.text = "Delete (0)"
} }
ivDelete?.setImageResource(R.mipmap.ic_list_detele_n) ivDelete?.setImageResource(R.mipmap.ic_list_detele_n)
} }
fun setAllSelect(isSelect: Boolean) { fun setAllSelect(isSelect: Boolean) {
val allData: List<HistoryBean.Data>? = mAdapter?.items val allData = mAdapter?.items
if (allData.isNullOrEmpty()) return
if (isSelect) { if (isSelect) {
detailList.clear() detailList.clear()
for (i in allData?.indices!!) { for (i in allData?.indices!!) {
@ -254,10 +275,15 @@ class ListTabFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListe
?.intoBackground(); ?.intoBackground();
context?.resources?.getColor(R.color.example_color_d9d9d9) context?.resources?.getColor(R.color.example_color_d9d9d9)
?.let { tvDelete?.setTextColor(it) } ?.let { tvDelete?.setTextColor(it) }
if (TranslatesUtils.translates() != null){ if (TranslatesUtils.translates() != null) {
tvDelete?.text = tvDelete?.text =
TranslatesUtils.translates()?.mireo_list_delete?.let { TranslatesUtils.replace(it, "0") } TranslatesUtils.translates()?.mireo_list_delete?.let {
}else{ TranslatesUtils.replace(
it,
"0"
)
}
} else {
tvDelete?.text = "Delete (0)" tvDelete?.text = "Delete (0)"
} }
ivDelete?.setImageResource(R.mipmap.ic_list_detele_n) ivDelete?.setImageResource(R.mipmap.ic_list_detele_n)
@ -266,10 +292,15 @@ class ListTabFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListe
?.intoBackground(); ?.intoBackground();
context?.resources?.getColor(R.color.example_color_F56490) context?.resources?.getColor(R.color.example_color_F56490)
?.let { tvDelete?.setTextColor(it) } ?.let { tvDelete?.setTextColor(it) }
if (TranslatesUtils.translates() != null){ if (TranslatesUtils.translates() != null) {
tvDelete?.text = tvDelete?.text =
TranslatesUtils.translates()?.mireo_list_delete?.let { TranslatesUtils.replace(it, detailList.size.toString()) } TranslatesUtils.translates()?.mireo_list_delete?.let {
}else{ TranslatesUtils.replace(
it,
detailList.size.toString()
)
}
} else {
tvDelete?.text = "Delete (" + detailList.size + ")" tvDelete?.text = "Delete (" + detailList.size + ")"
} }
ivDelete?.setImageResource(R.mipmap.ic_list_detele_y) ivDelete?.setImageResource(R.mipmap.ic_list_detele_y)

View File

@ -473,11 +473,10 @@ class RechargeDialogFragment : BottomSheetDialogFragment(), OnHttpListener<Any>
purchaseData?.orderId.toString(), purchaseData?.orderId.toString(),
coinsData?.price.toString() coinsData?.price.toString()
) )
payReq = PayBean
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
lifecycleScope.launch { lifecycleScope.launch {
googlePaid(PayBean) googlePaid(PayBean)
MsMMKVUtils.saveOrder(PayBean)
payReq = PayBean
} }
} else { } else {
MsMMKVUtils.saveOrder(PayBean) MsMMKVUtils.saveOrder(PayBean)
@ -512,7 +511,6 @@ class RechargeDialogFragment : BottomSheetDialogFragment(), OnHttpListener<Any>
if (it.responseCode == BillingClient.BillingResponseCode.OK) { if (it.responseCode == BillingClient.BillingResponseCode.OK) {
lifecycleScope.launch { lifecycleScope.launch {
googlePaid(PayBean) googlePaid(PayBean)
MsMMKVUtils.saveOrder(PayBean)
payReq = PayBean payReq = PayBean
} }
} else { } else {
@ -605,6 +603,7 @@ class RechargeDialogFragment : BottomSheetDialogFragment(), OnHttpListener<Any>
isPay = true isPay = true
dismiss() dismiss()
} ?: run { } ?: run {
payReq?.let { it1 -> MsMMKVUtils.saveOrder(it1) }
if (TranslatesUtils.translates() != null) { if (TranslatesUtils.translates() != null) {
ToastUtils.show(TranslatesUtils.translates()?.mireo_network_error.toString()) ToastUtils.show(TranslatesUtils.translates()?.mireo_network_error.toString())
} else { } else {

View File

@ -18,6 +18,7 @@ import android.webkit.WebResourceRequest
import android.webkit.WebSettings import android.webkit.WebSettings
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import android.widget.ImageView
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView import androidx.appcompat.widget.AppCompatTextView
@ -29,8 +30,6 @@ import com.hjq.http.EasyHttp
import com.hjq.http.config.IRequestApi import com.hjq.http.config.IRequestApi
import com.hjq.http.listener.HttpCallbackProxy import com.hjq.http.listener.HttpCallbackProxy
import com.localee.mireo.app.action.StatusAction import com.localee.mireo.app.action.StatusAction
import com.localee.mireo.app.widget.view.SimpleRatingBar
import com.localee.mireo.shortapp.R
import com.localee.mireo.app.app.TitleBarFragment import com.localee.mireo.app.app.TitleBarFragment
import com.localee.mireo.app.http.api.FirebaseTokenApi import com.localee.mireo.app.http.api.FirebaseTokenApi
import com.localee.mireo.app.http.api.OpenNotifyApi import com.localee.mireo.app.http.api.OpenNotifyApi
@ -38,6 +37,7 @@ import com.localee.mireo.app.http.model.HttpData
import com.localee.mireo.app.other.AppConfig import com.localee.mireo.app.other.AppConfig
import com.localee.mireo.app.other.MsConstants import com.localee.mireo.app.other.MsConstants
import com.localee.mireo.app.ui.activity.HomeActivity import com.localee.mireo.app.ui.activity.HomeActivity
import com.localee.mireo.app.ui.dialog.DialogUtils
import com.localee.mireo.app.ui.dialog.GooglePlayRatingDialog import com.localee.mireo.app.ui.dialog.GooglePlayRatingDialog
import com.localee.mireo.app.utils.DHStringUtils.getPublicRequest import com.localee.mireo.app.utils.DHStringUtils.getPublicRequest
import com.localee.mireo.app.utils.JsBridge import com.localee.mireo.app.utils.JsBridge
@ -47,6 +47,8 @@ import com.localee.mireo.app.utils.TranslatesUtils
import com.localee.mireo.app.utils.singleClick import com.localee.mireo.app.utils.singleClick
import com.localee.mireo.app.widget.StatusLayout import com.localee.mireo.app.widget.StatusLayout
import com.localee.mireo.app.widget.StatusLayout.OnRetryListener import com.localee.mireo.app.widget.StatusLayout.OnRetryListener
import com.localee.mireo.app.widget.view.SimpleRatingBar
import com.localee.mireo.shortapp.R
import com.scwang.smart.refresh.layout.SmartRefreshLayout import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
@ -55,8 +57,9 @@ import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
class RewardFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListener ,StatusAction{ class RewardFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListener, StatusAction {
private val ivLeft: ImageView? by lazy { findViewById(R.id.iv_left) }
private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_status_hint) } private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_status_hint) }
private val rlStatusRefresh: SmartRefreshLayout? by lazy { findViewById(R.id.rl_status_refresh) } private val rlStatusRefresh: SmartRefreshLayout? by lazy { findViewById(R.id.rl_status_refresh) }
private val web: WebView? by lazy { findViewById(R.id.web) } private val web: WebView? by lazy { findViewById(R.id.web) }
@ -77,9 +80,17 @@ class RewardFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListen
rlStatusRefresh?.setOnRefreshLoadMoreListener(this) rlStatusRefresh?.setOnRefreshLoadMoreListener(this)
rlStatusRefresh?.setEnableLoadMore(false) rlStatusRefresh?.setEnableLoadMore(false)
web?.setBackgroundColor(Color.TRANSPARENT) web?.setBackgroundColor(Color.TRANSPARENT)
ivLeft?.setOnClickListener {
singleClick {
DialogUtils.showStoreHint(requireContext())
}
}
} }
override fun initData() { override fun initData() {
setWebView() setWebView()
} }
@ -95,14 +106,16 @@ class RewardFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListen
fun loadingData() { fun loadingData() {
showDialog() showDialog()
if (NetworkUtils.isConnected()) { if (NetworkUtils.isConnected()) {
web?.visibility = View.VISIBLE
showComplete() showComplete()
loadPageUrl(MsConstants.REWARD_URL_RES) loadPageUrl(MsConstants.REWARD_URL_RES)
} else { } else {
web?.visibility = View.GONE
showErrorStatus() showErrorStatus()
} }
} }
fun showErrorStatus(){ fun showErrorStatus() {
showError(object : OnRetryListener { showError(object : OnRetryListener {
override fun onRetry(layout: StatusLayout) { override fun onRetry(layout: StatusLayout) {
singleClick { singleClick {
@ -347,10 +360,6 @@ class RewardFragment : TitleBarFragment<HomeActivity>(), OnRefreshLoadMoreListen
} }
override fun isStatusBarEnabled(): Boolean {
return !super.isStatusBarEnabled()
}
override fun onRefresh(refreshLayout: RefreshLayout) { override fun onRefresh(refreshLayout: RefreshLayout) {
loadPageUrl(MsConstants.REWARD_URL_RES) loadPageUrl(MsConstants.REWARD_URL_RES)
} }

View File

@ -3,6 +3,8 @@ package com.localee.mireo.app.utils
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import com.google.common.reflect.TypeToken
import com.google.gson.Gson
import com.localee.mireo.app.other.MsConstants 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.CONSTANTS_PREF_LAST_POPUP_TIME_VIP
import com.localee.mireo.app.other.MsConstants.ONE_DAY_IN_MILLIS_VIP import com.localee.mireo.app.other.MsConstants.ONE_DAY_IN_MILLIS_VIP
@ -25,7 +27,7 @@ fun <T> Any.standAsUnChecked(): T {
} }
var lastClickTime = 0L var lastClickTime = 0L
fun singleClick(during: Long = 500L, callBack: () -> Unit) { fun singleClick(during: Long = 750L, callBack: () -> Unit) {
val now = Date().time val now = Date().time
if (now - lastClickTime > during) { if (now - lastClickTime > during) {
callBack() callBack()
@ -171,3 +173,7 @@ fun dpToPx(dp: Int, context: Context): Int {
return (dp * context.resources.displayMetrics.density).toInt() return (dp * context.resources.displayMetrics.density).toInt()
} }
fun Any.toMapViaGson(): MutableMap<String, String?> {
val json = Gson().toJson(this)
return Gson().fromJson(json, object : TypeToken<MutableMap<String, String?>>() {}.type)
}

View File

@ -83,6 +83,13 @@ object MsMMKVUtils {
) )
} }
fun removeOrderString(order: String) {
val updatedList = getOrder().filterNot { it.order_code == order }
getMMKV().putString(
MsConstants.CONSTANTS_examplePayReq,
Gson().toJson(updatedList)
)
}
fun getOrder(): MutableList<PayBean> { fun getOrder(): MutableList<PayBean> {
try { try {

View File

@ -0,0 +1,70 @@
<?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">
<com.hjq.shape.layout.ShapeFrameLayout
android:layout_width="@dimen/dp_304"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/cl"
app:layout_constraintEnd_toEndOf="@id/cl"
app:layout_constraintStart_toStartOf="@id/cl"
app:layout_constraintTop_toTopOf="@id/cl"
app:shape_radius="@dimen/dp_16"
app:shape_solidColor="#50d9d9d9" />
<net.center.blurview.ShapeBlurView
android:layout_width="@dimen/dp_304"
android:layout_height="0dp"
app:blur_border_color="#d9d9d9"
app:blur_corner_radius="16dp"
app:blur_mode="rectangle"
app:blur_radius="10dp"
app:layout_constraintBottom_toBottomOf="@id/cl"
app:layout_constraintEnd_toEndOf="@id/cl"
app:layout_constraintStart_toStartOf="@id/cl"
app:layout_constraintTop_toTopOf="@id/cl" />
<com.hjq.shape.layout.ShapeConstraintLayout
android:id="@+id/cl"
android:layout_width="@dimen/dp_304"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shape_radius="@dimen/dp_16"
app:shape_solidColor="#95d9d9d9">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="@dimen/dp_350"
>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:text="@string/store_tips"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/example_iv_icon" />
</androidx.core.widget.NestedScrollView>
</com.hjq.shape.layout.ShapeConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginTop="36dp"
android:src="@mipmap/ic_dialog_close"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/cl" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,23 +1,39 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.scwang.smart.refresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_status_refresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/example_color_121418"> android:background="@color/example_color_121418"
android:orientation="vertical">
<com.localee.mireo.app.widget.StatusLayout <ImageView
android:id="@+id/hl_status_hint" android:id="@+id/iv_left"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_45"
android:layout_gravity="end"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_10"
android:paddingHorizontal="@dimen/dp_15"
android:src="@mipmap/ic_list_more" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/rl_status_refresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<WebView <com.localee.mireo.app.widget.StatusLayout
android:id="@+id/web" android:id="@+id/hl_status_hint"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:layout_marginTop="@dimen/dp_30" />
</com.localee.mireo.app.widget.StatusLayout> <WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.localee.mireo.app.widget.StatusLayout>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</com.scwang.smart.refresh.layout.SmartRefreshLayout> </LinearLayout>

View File

@ -8,6 +8,22 @@
android:background="@mipmap/ic_vip_week_bg" android:background="@mipmap/ic_vip_week_bg"
android:orientation="vertical"> android:orientation="vertical">
<com.hjq.shape.view.ShapeTextView
android:id="@+id/tv_hot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_11"
android:paddingHorizontal="@dimen/dp_10"
android:paddingVertical="@dimen/dp_2"
android:text=""
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shape_radiusInBottomEnd="@dimen/dp_15"
app:shape_radiusInTopLeft="@dimen/dp_15"
app:shape_solidColor="@color/example_color_F56490" />
<TextView <TextView
android:id="@+id/tv_day" android:id="@+id/tv_day"
@ -15,7 +31,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginStart="@dimen/dp_14" android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_30" android:layout_marginTop="@dimen/dp_32"
android:fontFamily="sans-serif-medium" android:fontFamily="sans-serif-medium"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="Weekly" android:text="Weekly"
@ -30,7 +46,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginStart="@dimen/dp_14" android:layout_marginStart="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_7" android:layout_marginTop="@dimen/dp_6"
android:text="0" android:text="0"
android:textColor="#FFB69A" android:textColor="#FFB69A"
android:textSize="@dimen/sp_19" android:textSize="@dimen/sp_19"

View File

@ -7,8 +7,8 @@ android {
defaultConfig { defaultConfig {
minSdk 24 minSdk 24
targetSdk 34 targetSdk 34
versionName '1.2.0' versionName '1.2.2'
versionCode 12 versionCode 14
} }
compileOptions { compileOptions {