diff --git a/app/src/main/java/com/localee/mireo/app/http/api/RevolutionsApi.kt b/app/src/main/java/com/localee/mireo/app/http/api/RevolutionsApi.kt new file mode 100644 index 0000000..082db84 --- /dev/null +++ b/app/src/main/java/com/localee/mireo/app/http/api/RevolutionsApi.kt @@ -0,0 +1,11 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + +class RevolutionsApi : IRequestApi { + + override fun getApi(): String { + return "getRevolutions" + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt b/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt index 9b23481..bfad92e 100644 --- a/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt +++ b/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt @@ -18,6 +18,8 @@ class VideoDetailsApi : IRequestApi { var activity_id: Int? = null + var revolution: String? = null + data class Bean( diff --git a/app/src/main/java/com/localee/mireo/app/http/bean/QualityBackClick.kt b/app/src/main/java/com/localee/mireo/app/http/bean/QualityBackClick.kt new file mode 100644 index 0000000..ac8984e --- /dev/null +++ b/app/src/main/java/com/localee/mireo/app/http/bean/QualityBackClick.kt @@ -0,0 +1,5 @@ +package com.localee.mireo.app.http.bean + +interface QualityBackClick { + fun qualityBackClick(quality: Int) +} \ No newline at end of file diff --git a/app/src/main/java/com/localee/mireo/app/http/bean/RevolutionBean.kt b/app/src/main/java/com/localee/mireo/app/http/bean/RevolutionBean.kt new file mode 100644 index 0000000..31e32d1 --- /dev/null +++ b/app/src/main/java/com/localee/mireo/app/http/bean/RevolutionBean.kt @@ -0,0 +1,11 @@ +package com.localee.mireo.app.http.bean + +class RevolutionBean( + val list: List +) { + data class RevolutionBeanItem( + val can_check: Boolean, + val condition: Int, + val value: Int + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/localee/mireo/app/http/bean/TranslatesBean.kt b/app/src/main/java/com/localee/mireo/app/http/bean/TranslatesBean.kt index 03a6f8e..29d4840 100644 --- a/app/src/main/java/com/localee/mireo/app/http/bean/TranslatesBean.kt +++ b/app/src/main/java/com/localee/mireo/app/http/bean/TranslatesBean.kt @@ -16,6 +16,10 @@ class TranslatesBean( ) data class Translates( + val mireo_order_record: String, + val mireo_activate_vip_content: String, + val mireo_activate_vip_title: String, + val mireo_quality: String, val mireo_unlock_vip: String, val mireo_vip_splash_tip: String, val mireo_vip_splash_title: String, diff --git a/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt b/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt index 2532a07..fb331cc 100644 --- a/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt +++ b/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt @@ -51,6 +51,8 @@ object MsConstants { const val CONSTANTS_short_play_id = "CONSTANTS_short_play_id" const val CONSTANTS_activity_id = "CONSTANTS_activity_id" const val CONSTANTS_stop_play = "CONSTANTS_stop_play" + const val CONSTANTS_pause_play = "CONSTANTS_pause_play" + const val CONSTANTS_start_play = "CONSTANTS_start_play" const val Constants_requestPermissions_photo = "Constants_requestPermissions_photo" const val CONSTANTS_auth_refresh = "CONSTANTS_auth_refresh" diff --git a/app/src/main/java/com/localee/mireo/app/other/MyFirebaseMessagingService.kt b/app/src/main/java/com/localee/mireo/app/other/MyFirebaseMessagingService.kt index d2f2060..7b59638 100644 --- a/app/src/main/java/com/localee/mireo/app/other/MyFirebaseMessagingService.kt +++ b/app/src/main/java/com/localee/mireo/app/other/MyFirebaseMessagingService.kt @@ -152,7 +152,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() { override fun onLoadFailed(errorDrawable: Drawable?) { super.onLoadFailed(errorDrawable) - + setNotification(intent, title, messageBody, null) } override fun onLoadCleared(placeholder: Drawable?) { diff --git a/app/src/main/java/com/localee/mireo/app/ui/activity/MyVipActivity.kt b/app/src/main/java/com/localee/mireo/app/ui/activity/MyVipActivity.kt index 991c600..8431f03 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/activity/MyVipActivity.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/activity/MyVipActivity.kt @@ -487,7 +487,6 @@ class MyVipActivity : AppActivity() { }) } - private fun getCustomerUser() { EasyHttp.get(this) .api(UserInfoApi()) @@ -496,6 +495,7 @@ class MyVipActivity : AppActivity() { result.getData()?.let { MsMMKVUtils.saveUserInfo(it) setUI() + finish() } } }) diff --git a/app/src/main/java/com/localee/mireo/app/ui/activity/StoreActivity.kt b/app/src/main/java/com/localee/mireo/app/ui/activity/StoreActivity.kt index b7d2a14..1a942b4 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/activity/StoreActivity.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/activity/StoreActivity.kt @@ -62,6 +62,7 @@ class StoreActivity : AppActivity() { private val tvBuy: TextView? by lazy { findViewById(R.id.tv_buy) } private val tvVipExpires: TextView? by lazy { findViewById(R.id.tv_vip_expires) } private val tvName: TextView? by lazy { findViewById(R.id.tv_name) } + private val tvCoinRecharge: TextView? by lazy { findViewById(R.id.tv_coin_recharge) } private val tvCoinsText: TextView? by lazy { findViewById(R.id.tv_coins_text) } private val tvMemberTitle: TextView? by lazy { findViewById(R.id.tv_member_title) } private val tvMembership: TextView? by lazy { findViewById(R.id.tv_membership) } @@ -97,6 +98,7 @@ class StoreActivity : AppActivity() { title?.setRightTitle(TranslatesUtils.translates()?.mireo_restore) tvName?.text = TranslatesUtils.translates()?.mireo_store_recharge_discount tvVipExpires?.text = TranslatesUtils.translates()?.mireo_store_limited + tvCoinRecharge?.text = TranslatesUtils.translates()?.mireo_coin_recharege tvCoinsText?.text = TranslatesUtils.translates()?.mireo_store_coins tvMemberTitle?.text = TranslatesUtils.translates()?.mireo_store_benefits tvMembership?.text = TranslatesUtils.translates()?.mireo_store_recharge @@ -110,7 +112,7 @@ class StoreActivity : AppActivity() { TranslatesUtils.translates()?.mireo_pay_hint ?: getString(R.string.store_tips), Html.FROM_HTML_MODE_COMPACT ) - }else{ + } else { tvHint?.text = Html.fromHtml( TranslatesUtils.translates()?.mireo_pay_hint ?: getString(R.string.store_tips) ) diff --git a/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt b/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt index 67c98a1..df8aa54 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt @@ -42,12 +42,15 @@ import com.localee.mireo.app.http.api.CreateHistoryApi import com.localee.mireo.app.http.api.DetailsRecommandApi import com.localee.mireo.app.http.api.DoBuyVideoApi import com.localee.mireo.app.http.api.ExampleRecommendDataRes +import com.localee.mireo.app.http.api.RevolutionsApi import com.localee.mireo.app.http.api.UploadHistorySecondsApi import com.localee.mireo.app.http.api.UserInfoApi import com.localee.mireo.app.http.api.UserInfoRes import com.localee.mireo.app.http.api.VideoDetailsApi import com.localee.mireo.app.http.bean.HomeDataHistoryBean import com.localee.mireo.app.http.bean.PaySettingsBean +import com.localee.mireo.app.http.bean.QualityBackClick +import com.localee.mireo.app.http.bean.RevolutionBean import com.localee.mireo.app.http.bean.UploadHistoryBean import com.localee.mireo.app.http.model.HttpData import com.localee.mireo.app.other.MsConstants @@ -58,6 +61,7 @@ import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id import com.localee.mireo.app.other.MsConstants.Constants_Episodes_Series_Data_currentPositionExample import com.localee.mireo.app.other.MsConstants.ExampleDetailCanPlay import com.localee.mireo.app.ui.adapter.RecommendBannerAdapter +import com.localee.mireo.app.ui.dialog.DialogUtils import com.localee.mireo.app.ui.fragment.RechargeDialogFragment import com.localee.mireo.app.ui.videoPaly.ExampleSeriesDialogFragment import com.localee.mireo.app.ui.videoPaly.ExampleUnFavoriteDialog @@ -100,8 +104,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle private var recommendAdapter: VideoPlayAdapter? = null private var data: ExampleRecommendDataRes.Data? = null 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 viewPagerExampleRecommend: ViewPager2? by lazy { findViewById(R.id.viewPager_example_recommend) } @@ -218,7 +221,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle fun initialization() { if (NetworkUtils.isConnected()) { - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) } else { if (TranslatesUtils.translates() != null) { @@ -235,7 +238,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle detailPlayerView()?.stop() detailPlayerView()?.release() } - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) } else { if (TranslatesUtils.translates() != null) { ToastUtils.show(TranslatesUtils.translates()?.mireo_no_network.toString()) @@ -357,7 +360,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle ) ) { if (!first) { - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) } else { first = false } @@ -385,7 +388,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle return@singleClick } currentPage = 1 - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) } } tvExampleRetry?.setOnClickListener { @@ -399,7 +402,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle return@singleClick } currentPage = 1 - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) } } } @@ -420,7 +423,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle detailPlayerView()?.stop() detailPlayerView()?.release() } - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) qualityRefresh = false } else { detailPlayerView()?.play() @@ -436,19 +439,25 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle fun getVideoDetails( shortPlayId: Int?, videoId: Int?, - activityId: Int? + activityId: Int?, + mRevolution: String? ) { EasyHttp.get(this) .api(VideoDetailsApi().apply { - activity_id = activityId; - video_id = videoId; - short_play_id = shortPlayId; + activity_id = activityId + video_id = videoId + short_play_id = shortPlayId + revolution = mRevolution }) .request(object : HttpCallbackProxy>(this) { override fun onHttpSuccess(result: HttpData) { result.getData()?.let { if (it.episodeList.isNotEmpty()) { + it.revolution?.let { it1 -> + MsMMKVUtils.getMMKV() + .putInt(CONSTANTS_quality, it1) + } shortVideo = it.shortPlayInfo cover?.visibility = View.INVISIBLE viewPagerExampleRecommend?.visibility = View.VISIBLE @@ -461,7 +470,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle createHistory( it.episodeList[0].short_play_id, it.episodeList[0].short_play_video_id - ); + ) exampleNetwork?.visibility = View.INVISIBLE exampleEmpty?.visibility = View.INVISIBLE cover?.let { it1 -> @@ -493,10 +502,6 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle } }) -// ExampleRecommendRequest.getVideoDetails(current_page, page_size, revolution) -// .observeForever { result -> -// recommendLiveData.value = result.getOrNull() -// } } fun createHistory(videoId: Int, shortPlayId: Int) { @@ -705,7 +710,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle if (CONSTANTS_quality_refresh == event) { revolution = - MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0) + MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 540) .toString() qualityRefresh = true } @@ -714,75 +719,35 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle handleCustomLogic() } if (CONSTANTS_quality == event) { - startActivity(SearchActivity::class.java) + if (episode?.is_lock == false) { + getRevolutions() + } } if (MsConstants.CONSTANTS_pay_refresh == event) { needRefresh = true getCustomerUser() } + if (MsConstants.CONSTANTS_user_refresh == event) { + revolution = "720" + MsMMKVUtils.getMMKV() + .putInt(CONSTANTS_quality, 720) + detailRefresh() + EventBus.getDefault().post(CONSTANTS_quality_refresh) + } + if (MsConstants.CONSTANTS_stop_play == event) { + recommendAdapter?.items?.get(currentPosition)?.let { + rechargeDialog(it) + } + viewLock?.postDelayed({ detailPlayerView()?.pause() }, 500) + } + if (MsConstants.CONSTANTS_pause_play == event) { + viewLock?.postDelayed({ detailPlayerView()?.pause() }, 500) + } + if (MsConstants.CONSTANTS_start_play == event) { + viewLock?.postDelayed({ detailPlayerView()?.play() }, 500) + } } - @Subscribe(threadMode = ThreadMode.MAIN) - fun onEvent(event: BaseEventBus) { -// if (MsConstants.Constants_Episodes_Series_DataExample == event.code) { -// if (recommendAdapter?.items?.get(currentPosition)?.name == event.data.name) { -// val imageView = -// detailPlayerView()?.findViewById(R.id.example_iv_collection_controller) -// val textview = -// detailPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) -// imageView?.setImageResource(if (event.data.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) -// recommendAdapter?.items?.get(currentPosition)?.collect_total = -// event.data.collect_total -// recommendAdapter?.items?.get(currentPosition)?.is_collect = -// event.data.is_collect -// textview?.text = formatNumber(event.data.collect_total) -// } -// } - } - -// override fun collection(dataRes: ExampleRecommendDataRes.Data) { -// singleClick { -// data = dataRes -// if (dataRes.is_collect) { -// val exampleUnFavoriteDialog = ExampleUnFavoriteDialog(this) -// val tvThinkAgain = -// exampleUnFavoriteDialog.findViewById(R.id.example_tv_think_again) -// val tvUnfavorite = -// exampleUnFavoriteDialog.findViewById(R.id.example_tv_unfavorite) -// val tvTitle = -// exampleUnFavoriteDialog.findViewById(R.id.example_tv_title) -// val tvContent = -// exampleUnFavoriteDialog.findViewById(R.id.example_tv_content) -// if (TranslatesUtils.translates() != null) { -// tvThinkAgain.text = TranslatesUtils.translates()?.mireo_try_again -// tvUnfavorite.text = TranslatesUtils.translates()?.mireo_unfavorite -// tvTitle.text = TranslatesUtils.translates()?.mireo_unfavorite -// tvContent.text = TranslatesUtils.translates()?.mireo_not_collect_warning -// } -// tvThinkAgain.setOnClickListener { exampleUnFavoriteDialog.dismiss() } -// tvUnfavorite.setOnClickListener { -// dataRes.video_info?.short_play_id?.let { -// dataRes.video_info.short_play_video_id.let { it1 -> -// doCancelCollect( -// it, it1 -// ) -// } -// } -// exampleUnFavoriteDialog.dismiss() -// } -// exampleUnFavoriteDialog.show() -// } else { -// dataRes.video_info?.short_play_id?.let { -// dataRes.video_info.short_play_video_id.let { it1 -> -// doCollect( -// it, it1 -// ) -// } -// } -// } -// } -// } - override fun collection(episode: VideoDetailsApi.Bean.Episode) { singleClick { if (shortVideo?.is_collect == true) { @@ -946,6 +911,36 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle }) } + fun getRevolutions() { + EasyHttp.get(this) + .api(RevolutionsApi()) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + setQuality(it) + } ?: kotlin.run { + if (TranslatesUtils.translates() != null) { + toast(TranslatesUtils.translates()?.mireo_network_error.toString()) + } else { + toast(getString(R.string.example_service_exception_please_try_again)) + } + } + } + }) + } + + private fun setQuality(revolutionRes: RevolutionBean) { + DialogUtils.showQuality(this, object : QualityBackClick { + override fun qualityBackClick(quality: Int) { + MsMMKVUtils.getMMKV() + .putInt(CONSTANTS_quality, quality) + EventBus.getDefault().post(CONSTANTS_quality_refresh) + revolution = quality.toString() + detailRefresh() + } + }, revolutionRes) + } + private fun detailRefresh() { detailPlayerView()?.pause() detailPlayerView()?.stop() @@ -955,6 +950,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle it1.short_play_id, it1.short_play_video_id, activityId, + revolution ) } } @@ -1123,7 +1119,7 @@ open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailColle if (short_play_id != null) { shortPlayId = short_play_id } - getVideoDetails(shortPlayId, 0, activityId) + getVideoDetails(shortPlayId, 0, activityId, revolution) } }, 300) viewVideoRecommend?.visibility = View.INVISIBLE diff --git a/app/src/main/java/com/localee/mireo/app/ui/dialog/ActivateVipDialog.kt b/app/src/main/java/com/localee/mireo/app/ui/dialog/ActivateVipDialog.kt new file mode 100644 index 0000000..82c5a29 --- /dev/null +++ b/app/src/main/java/com/localee/mireo/app/ui/dialog/ActivateVipDialog.kt @@ -0,0 +1,31 @@ +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 com.localee.mireo.shortapp.R + +class ActivateVipDialog (context: Context) : Dialog(context) { + + init { + init() + } + + private fun init() { + requestWindowFeature(Window.FEATURE_NO_TITLE) + setContentView(R.layout.dialog_activate_vip) + + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window?.setLayout( + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT + ) + window?.setGravity(Gravity.CENTER) + setCancelable(true) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/localee/mireo/app/ui/dialog/DialogUtils.kt b/app/src/main/java/com/localee/mireo/app/ui/dialog/DialogUtils.kt new file mode 100644 index 0000000..30862db --- /dev/null +++ b/app/src/main/java/com/localee/mireo/app/ui/dialog/DialogUtils.kt @@ -0,0 +1,174 @@ +package com.localee.mireo.app.ui.dialog + +import android.content.Context +import android.content.Intent +import android.graphics.Color +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView +import com.hjq.shape.view.ShapeTextView +import com.localee.mireo.app.http.bean.QualityBackClick +import com.localee.mireo.app.http.bean.RevolutionBean +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.utils.MsMMKVUtils +import com.localee.mireo.app.utils.TranslatesUtils +import com.localee.mireo.shortapp.R +import org.greenrobot.eventbus.EventBus + +object DialogUtils { + + fun showQuality( + context: Context, + qualityBack: QualityBackClick?, + revolutionRes: RevolutionBean? + ) { + val size = revolutionRes?.list?.size ?: 0 + val exampleQualityDialog = QualityDialog(context) + val tv_quality = + exampleQualityDialog.findViewById(R.id.tv_quality) + val tv_quality_info_480 = + exampleQualityDialog.findViewById(R.id.tv_quality_480) + val tv_quality_info_720 = + exampleQualityDialog.findViewById(R.id.tv_quality_720) + val tv_quality_info_1080 = + exampleQualityDialog.findViewById(R.id.tv_quality_1080) + val iv_login_tag = exampleQualityDialog.findViewById(R.id.iv_login_tag) + val iv_vip_tag = exampleQualityDialog.findViewById(R.id.iv_vip_tag) + val int = MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0) + if (size > 0 && null != revolutionRes?.list?.get(0)) { + val revolution = revolutionRes.list[0] + tv_quality_info_480.text = revolution.value.toString().plus("p") + if (revolution.can_check) { + if (int == revolution.value) { + tv_quality_info_480.shapeDrawableBuilder?.setStrokeSize(1) + ?.intoBackground() + tv_quality_info_480.setTextColor(Color.parseColor("#F56490")) + } else { + tv_quality_info_480.shapeDrawableBuilder?.setStrokeSize(0) + ?.intoBackground() + tv_quality_info_480.setTextColor(Color.parseColor("#FFFFFF")) + } + tv_quality_info_480.setOnClickListener { + if (int != revolution.value) { + qualityBack?.qualityBackClick(revolution.value) + exampleQualityDialog.dismiss() + } + } + } else { + tv_quality_info_480.shapeDrawableBuilder?.setStrokeSize(0) + ?.intoBackground() + tv_quality_info_480.setTextColor(Color.parseColor("#8B8B8B")) + } + } + if (size > 1 && null != revolutionRes?.list?.get(1)) { + val revolution = revolutionRes.list[1] + tv_quality_info_720.text = revolution.value.toString().plus("p") + if (revolution.can_check) { + if (int == revolution.value) { + tv_quality_info_720.shapeDrawableBuilder?.setStrokeSize(1) + ?.intoBackground() + tv_quality_info_720.setTextColor(Color.parseColor("#F56490")) + } else { + tv_quality_info_720.shapeDrawableBuilder?.setStrokeSize(0) + ?.intoBackground() + tv_quality_info_720.setTextColor(Color.parseColor("#FFFFFF")) + } + iv_login_tag.setImageResource(R.mipmap.ic_login_tag) + tv_quality_info_720.setOnClickListener { + if (int != revolution.value) { + qualityBack?.qualityBackClick(revolution.value) + exampleQualityDialog.dismiss() + } + } + } else { + tv_quality_info_720.shapeDrawableBuilder?.setStrokeSize(0) + ?.intoBackground() + tv_quality_info_720.setTextColor(Color.parseColor("#8B8B8B")) + iv_login_tag.setImageResource(R.mipmap.ic_login_tag) + tv_quality_info_720.setOnClickListener { + context.startActivity( + Intent( + context, + HomeActivity::class.java + ) + ) + EventBus.getDefault().post(MsConstants.CONSTANTS_Login) + exampleQualityDialog.dismiss() + } + } + } + + if (size > 2 && null != revolutionRes?.list?.get(2)) { + val revolution = revolutionRes.list[2] + tv_quality_info_1080.text = revolution.value.toString().plus("p") + if (revolution.can_check) { + if (int == revolution.value) { + tv_quality_info_1080.shapeDrawableBuilder?.setStrokeSize(1) + ?.intoBackground() + tv_quality_info_1080.setTextColor(Color.parseColor("#F56490")) + } else { + tv_quality_info_1080.shapeDrawableBuilder?.setStrokeSize(0) + ?.intoBackground() + tv_quality_info_1080.setTextColor(Color.parseColor("#FFFFFF")) + } + tv_quality_info_1080.setOnClickListener { + if (int != revolution.value) { + qualityBack?.qualityBackClick(revolution.value) + exampleQualityDialog.dismiss() + } + } + iv_vip_tag.setImageResource(R.mipmap.ic_vip_tag) + } else { + tv_quality_info_1080.shapeDrawableBuilder?.setStrokeSize(0) + ?.intoBackground() + iv_vip_tag.setImageResource(R.mipmap.ic_vip_tag) + tv_quality_info_1080.setTextColor(Color.parseColor("#8B8B8B")) + tv_quality_info_1080.setOnClickListener { + EventBus.getDefault() + .post(MsConstants.CONSTANTS_pause_play) + showActivate(context) + exampleQualityDialog.dismiss() + } + } + } + tv_quality?.text = + TranslatesUtils.translates()?.mireo_quality + ?: "Playback Quality" + exampleQualityDialog.show() + } + + private fun showActivate(context: Context) { + val activateVIPDialog = ActivateVipDialog(context) + val tv_title = + activateVIPDialog.findViewById(R.id.tv_title) + val tv_content = + activateVIPDialog.findViewById(R.id.tv_content) + val iv_close_vip = + activateVIPDialog.findViewById(R.id.iv_close_vip) + val tv_later = + activateVIPDialog.findViewById(R.id.tv_later) + val tv_open = + activateVIPDialog.findViewById(R.id.tv_open) + tv_title?.text = + TranslatesUtils.translates()?.mireo_activate_vip_title + ?: "Unlock HD VIP Access!" + tv_content?.text = + TranslatesUtils.translates()?.mireo_activate_vip_content + ?: "Activate vip and enjoy HD video privileges" + tv_later?.text = TranslatesUtils.translates()?.mireo_open_notification_later ?: "Later" + tv_open?.text = TranslatesUtils.translates()?.mireo_open_notification_open ?: "Open" + tv_open?.setOnClickListener { + EventBus.getDefault() + .post(MsConstants.CONSTANTS_stop_play) + activateVIPDialog.dismiss() + } + tv_later?.setOnClickListener { + EventBus.getDefault() + .post(MsConstants.CONSTANTS_start_play) + activateVIPDialog.dismiss() + } + iv_close_vip?.setOnClickListener { activateVIPDialog.dismiss() } + activateVIPDialog.show() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/localee/mireo/app/ui/dialog/QualityDialog.kt b/app/src/main/java/com/localee/mireo/app/ui/dialog/QualityDialog.kt new file mode 100644 index 0000000..5373791 --- /dev/null +++ b/app/src/main/java/com/localee/mireo/app/ui/dialog/QualityDialog.kt @@ -0,0 +1,30 @@ +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 com.localee.mireo.shortapp.R + +class QualityDialog(context: Context) : Dialog(context) { + + init { + init() + } + + private fun init() { + requestWindowFeature(Window.FEATURE_NO_TITLE) + setContentView(R.layout.dialog_quality) + + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window?.setLayout( + WindowManager.LayoutParams.MATCH_PARENT, + WindowManager.LayoutParams.WRAP_CONTENT + ) + window?.setGravity(Gravity.BOTTOM) + setCancelable(true) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt b/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt index a2cbb5c..0e56bd6 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt @@ -437,6 +437,7 @@ class ExploreFragment : TitleBarFragment(), .toString() qualityRefresh = true } + } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt b/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt index 2c9d60d..234a63a 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt @@ -77,6 +77,7 @@ class MineFragment : TitleBarFragment(), 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 val sbOrder: SettingBar? by lazy { findViewById(R.id.sb_order) } private var vipSplashDialog: VipSplashDialog? = null private var bind: DialogVipSplashBinding? = null private var isVipSplash = false @@ -109,7 +110,8 @@ class MineFragment : TitleBarFragment(), OnRefreshLoadMoreListener R.id.ll_wallet, R.id.ll_vip, R.id.ll_store, - R.id.tv_login + R.id.tv_login, + R.id.sb_order ) recyclerView?.layoutManager = @@ -149,6 +151,7 @@ class MineFragment : TitleBarFragment(), OnRefreshLoadMoreListener sbAbout?.setLeftText(TranslatesUtils.translates()?.mireo_about_us) sbFeedback?.setLeftText(TranslatesUtils.translates()?.mireo_feedback) sbLanguage?.setLeftText(TranslatesUtils.translates()?.mireo_choose_language) + sbOrder?.setLeftText(TranslatesUtils.translates()?.mireo_order_record) } if (MsMMKVUtils.isTourist()) { @@ -279,7 +282,7 @@ class MineFragment : TitleBarFragment(), OnRefreshLoadMoreListener startActivity(LanguageSwitchActivity::class.java) } - R.id.ll_wallet -> { + R.id.ll_wallet, R.id.sb_order -> { startActivity(MyWalletActivity::class.java) } @@ -343,17 +346,23 @@ class MineFragment : TitleBarFragment(), OnRefreshLoadMoreListener bind?.tvVipBenefits?.text = TranslatesUtils.translates()?.mireo_unlock_vip bind?.ivClose?.setOnClickListener { + MsMMKVUtils.getMMKV().putLong( + MsConstants.CONSTANTS_PREF_LAST_POPUP_TIME_VIP, + System.currentTimeMillis() + ) vipSplashDialog?.dismiss() isVipSplash = false + System.gc() } bind?.tvVipBenefits?.setOnClickListener { MsMMKVUtils.getMMKV().putLong( MsConstants.CONSTANTS_PREF_LAST_POPUP_TIME_VIP, System.currentTimeMillis() ) - startActivity(StoreActivity::class.java) + startActivity(MyVipActivity::class.java) vipSplashDialog?.dismiss() isVipSplash = false + System.gc() } vipSplashDialog?.show() isVipSplash = true diff --git a/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt b/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt index 1dc2404..91e9afc 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt @@ -229,21 +229,21 @@ class ExampleRecommendPlayerView(context: Context, attrs: AttributeSet?) : ivCover?.visibility = View.VISIBLE MsConstants.Exampleready = false exampleTvTitlePlayerController?.text = dataRes.name - if (TranslatesUtils.translates() != null) { - exampleTvEpisodePlayerController?.text = TranslatesUtils.replace( - TranslatesUtils.translates()?.mireo_episode_set.toString(), - dataRes.video_info.episode.toString() - ).plus(" / ").plus( - TranslatesUtils.replace( - TranslatesUtils.translates()?.mireo_complete_episode.toString(), - dataRes.episode_total.toString() - ) - ) - } else { +// if (TranslatesUtils.translates() != null) { +// exampleTvEpisodePlayerController?.text = TranslatesUtils.replace( +// TranslatesUtils.translates()?.mireo_episode_set.toString(), +// dataRes.video_info.episode.toString() +// ).plus(" / ").plus( +// TranslatesUtils.replace( +// TranslatesUtils.translates()?.mireo_complete_episode.toString(), +// dataRes.episode_total.toString() +// ) +// ) +// } else { exampleTvEpisodePlayerController?.text = "EP.".plus(dataRes.video_info.episode).plus(" / EP.") .plus(dataRes.episode_total) - } +// } exampleTvCollectionNumController?.text = dataRes.collect_total?.let { formatNumber(it) } exampleTvCollectionNumController?.setTextColor( if (dataRes.is_collect) resources.getColor( diff --git a/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt b/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt index e9fffd8..6c67a5d 100644 --- a/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt +++ b/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt @@ -54,11 +54,11 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : private var player: ExoPlayer? = builder.build() private val viewLifecycleScope = MainScope() private var isDragging = false - private var exampleSeekbarPlayerController: AppCompatSeekBar? = null + private var seekbarPlayerController: AppCompatSeekBar? = null private var exampleProgressJob: Job? = null - private var exampleIvPlayPlayerController: AppCompatImageView? = null - private var exampleIvCollectionController: AppCompatImageView? = null - private var exampleIvBackController: AppCompatImageView? = null + private var ivPlayPlayerController: AppCompatImageView? = null + private var ivCollectionController: AppCompatImageView? = null + private var ivBackController: AppCompatImageView? = null private var ivCover: AppCompatImageView? = null private var exampleTvEpisodePlayerController: ShapeTextView? = null private var ivEpisodePlayerController: AppCompatImageView? = null @@ -80,13 +80,13 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : .inflate(R.layout.example_detail_player_view, this, true) val exampleDetailPlayerViewBinding = ExampleDetailPlayerViewBinding.bind(inflate) exampleDetailPlayerViewBinding.playerView.player = player - exampleSeekbarPlayerController = + seekbarPlayerController = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_seekBar_player_controller) - exampleIvPlayPlayerController = + ivPlayPlayerController = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_play_player_controller) - exampleIvCollectionController = + ivCollectionController = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_collection_controller) - exampleIvBackController = + ivBackController = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_back_controller) ivCover = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.iv_cover_detail) tvExampleSeries = @@ -119,7 +119,7 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : } Player.STATE_READY -> { - exampleIvPlayPlayerController?.isEnabled = true + ivPlayPlayerController?.isEnabled = true if (ExampleDetailCanPlay && !ExampleLock) { if (seek && progress > 0) { player?.seekTo(progress) @@ -139,7 +139,7 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : } Player.STATE_IDLE -> { - exampleIvPlayPlayerController?.isEnabled = false + ivPlayPlayerController?.isEnabled = false } } } @@ -150,7 +150,7 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : loadingLine?.visibility = View.INVISIBLE } }) - exampleIvPlayPlayerController?.setOnClickListener { + ivPlayPlayerController?.setOnClickListener { if (!ExampleLock) { if (MsConstants.ExampleDetailPlaying) { pause() @@ -181,21 +181,21 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : private fun setProgress() { exampleProgressJob?.cancel() val duration = player!!.duration - exampleSeekbarPlayerController?.max = duration.toInt() - exampleSeekbarPlayerController?.progress = player!!.currentPosition.toInt() - exampleSeekbarPlayerController?.setOnSeekBarChangeListener(null) + seekbarPlayerController?.max = duration.toInt() + seekbarPlayerController?.progress = player!!.currentPosition.toInt() + seekbarPlayerController?.setOnSeekBarChangeListener(null) exampleProgressJob = viewLifecycleScope.launch { while (isActive) { if (!isDragging) { withContext(Dispatchers.Main) { - exampleSeekbarPlayerController?.progress = player!!.currentPosition.toInt() + seekbarPlayerController?.progress = player!!.currentPosition.toInt() } } delay(1000) } } - exampleSeekbarPlayerController?.setOnSeekBarChangeListener(object : + seekbarPlayerController?.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { if (fromUser) { @@ -222,14 +222,14 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : fun play() { player?.play() - exampleIvPlayPlayerController?.setImageResource(R.mipmap.iv_example_stop) + ivPlayPlayerController?.setImageResource(R.mipmap.iv_example_stop) MsConstants.ExampleDetailPlaying = true isDragging = false } fun pause() { player?.pause() - exampleIvPlayPlayerController?.setImageResource(R.mipmap.iv_example_play) + ivPlayPlayerController?.setImageResource(R.mipmap.iv_example_play) MsConstants.ExampleDetailPlaying = false isDragging = true } @@ -282,23 +282,23 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : seek = true ivCover?.visibility = View.VISIBLE exampleTvTitlePlayerController?.text = shortVideo.name - if (TranslatesUtils.translates() != null) { - exampleTvEpisodePlayerController?.text = TranslatesUtils.replace( - TranslatesUtils.translates()?.mireo_episode_set.toString(), - episode.episode.toString() - ).plus(" / ").plus( - TranslatesUtils.replace( - TranslatesUtils.translates()?.mireo_complete_episode.toString(), - shortVideo.episode_total.toString() - ) - ) -// tvExampleSeries?.text = TranslatesUtils.translates()?.recommand_series - } else { +// if (TranslatesUtils.translates() != null) { +// exampleTvEpisodePlayerController?.text = TranslatesUtils.replace( +// TranslatesUtils.translates()?.mireo_episode_set.toString(), +// episode.episode.toString() +// ).plus(" / ").plus( +// TranslatesUtils.replace( +// TranslatesUtils.translates()?.mireo_complete_episode.toString(), +// shortVideo.episode_total.toString() +// ) +// ) +//// tvExampleSeries?.text = TranslatesUtils.translates()?.recommand_series +// } else { exampleTvEpisodePlayerController?.text = "EP.".plus(episode.episode).plus(" / EP.") .plus(shortVideo.episode_total) // tvExampleSeries?.text = context.getString(R.string.example_series) - } +// } exampleTvDesPlayerController?.text = shortVideo.description exampleTvCollectionNumController?.text = formatNumber(shortVideo.collect_total) exampleTvCollectionNumController?.setTextColor( @@ -306,7 +306,7 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : R.color.example_color_F56490 ) else resources.getColor(R.color.white) ) - exampleIvCollectionController?.setImageResource(if (shortVideo.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) + ivCollectionController?.setImageResource(if (shortVideo.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) player?.setMediaSource(buildMediaSource(episode.video_url)) player?.prepare() exampleTvEpisodePlayerController?.setOnClickListener { @@ -316,12 +316,10 @@ class VideoPlayerView(context: Context, attrs: AttributeSet?) : } } ivEpisodePlayerController?.setOnClickListener { - if (!episode.is_lock) { - EventBus.getDefault() - .post(MsConstants.Constants_RecommendPlayerView_DramaSeriesExample) - } + EventBus.getDefault() + .post(MsConstants.CONSTANTS_quality) } - exampleIvBackController?.setOnClickListener { + ivBackController?.setOnClickListener { EventBus.getDefault() .post(MsConstants.Constants_RecommendPlayerView_CLOSEExample) } diff --git a/app/src/main/res/layout/activity_my_vip.xml b/app/src/main/res/layout/activity_my_vip.xml index af50aaa..0a3ac5f 100644 --- a/app/src/main/res/layout/activity_my_vip.xml +++ b/app/src/main/res/layout/activity_my_vip.xml @@ -182,8 +182,9 @@ android:layout_marginTop="@dimen/dp_15" android:drawableTop="@mipmap/ic_vip_no_ads" android:drawablePadding="@dimen/dp_8" - android:maxLines="2" + android:ellipsize="end" android:gravity="center_horizontal" + android:maxLines="2" android:text="Ad-FreeStreaming" android:textColor="#c4c4c4" android:textSize="@dimen/sp_12" @@ -195,10 +196,11 @@ 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:layout_marginHorizontal="@dimen/dp_8" + android:ellipsize="end" android:gravity="center_horizontal" android:maxLines="2" android:text="Exclusive Episodes" @@ -212,13 +214,14 @@ 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:ellipsize="end" android:gravity="center_horizontal" - android:text="Daily free coins" android:maxLines="2" - android:layout_marginHorizontal="@dimen/dp_8" + android:text="Daily free coins" android:textColor="#c4c4c4" android:textSize="@dimen/sp_12" app:layout_constraintEnd_toStartOf="@+id/tv_member_4" @@ -229,13 +232,14 @@ 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:drawableTop="@mipmap/ic_vip_only_coupons" android:drawablePadding="@dimen/dp_8" + android:ellipsize="end" android:gravity="center_horizontal" - android:text="VIP-Only Coupons" - android:layout_marginHorizontal="@dimen/dp_8" android:maxLines="2" + android:text="VIP-Only Coupons" android:textColor="#c4c4c4" android:textSize="@dimen/sp_12" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/activity_store.xml b/app/src/main/res/layout/activity_store.xml index d1237c9..5edda8f 100644 --- a/app/src/main/res/layout/activity_store.xml +++ b/app/src/main/res/layout/activity_store.xml @@ -120,15 +120,28 @@ app:layout_constraintTop_toTopOf="@+id/iv_right_coin" /> + + - + app:layout_constraintTop_toBottomOf="@+id/tv_coin_recharge" /> + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_quality.xml b/app/src/main/res/layout/dialog_quality.xml new file mode 100644 index 0000000..3ab0c5a --- /dev/null +++ b/app/src/main/res/layout/dialog_quality.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_vip_splash.xml b/app/src/main/res/layout/dialog_vip_splash.xml index 3e7c8a7..7fa582b 100644 --- a/app/src/main/res/layout/dialog_vip_splash.xml +++ b/app/src/main/res/layout/dialog_vip_splash.xml @@ -25,6 +25,7 @@ android:text="Go Premium Elevate Your Binge!" android:textColor="#712B2B" android:maxLines="2" + android:ellipsize="end" android:textSize="@dimen/sp_17" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -53,6 +54,7 @@ android:drawablePadding="@dimen/dp_2" android:gravity="center_horizontal" android:maxLines="2" + android:ellipsize="end" android:text="Ad-FreeStreaming" android:textColor="#712B2B" android:textSize="@dimen/sp_11" @@ -70,6 +72,7 @@ android:drawablePadding="@dimen/dp_2" android:gravity="center_horizontal" android:maxLines="2" + android:ellipsize="end" android:text="Exclusive Episodes" android:textColor="#712B2B" android:textSize="@dimen/sp_11" @@ -87,6 +90,7 @@ android:drawablePadding="@dimen/dp_2" android:gravity="center_horizontal" android:maxLines="2" + android:ellipsize="end" android:text="Daily free coins" android:textColor="#712B2B" android:textSize="@dimen/sp_11" @@ -105,6 +109,7 @@ android:drawablePadding="@dimen/dp_2" android:gravity="center_horizontal" android:maxLines="2" + android:ellipsize="end" android:text="VIP-Only Coupons" android:textColor="#712B2B" android:textSize="@dimen/sp_11" diff --git a/app/src/main/res/layout/example_dialog_series.xml b/app/src/main/res/layout/example_dialog_series.xml index 252885c..2060de2 100644 --- a/app/src/main/res/layout/example_dialog_series.xml +++ b/app/src/main/res/layout/example_dialog_series.xml @@ -4,6 +4,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + - + app:cardCornerRadius="8dp" + app:cardElevation="0dp"> + + + + @@ -43,7 +53,7 @@ android:layout_below="@+id/tv_name" android:layout_marginLeft="14dp" android:layout_marginTop="11dp" - android:layout_toEndOf="@+id/iv_img" + android:layout_toEndOf="@+id/cardview" android:text="Total 80 Episodes" android:textColor="#9D9D9D" android:textSize="@dimen/sp_12" /> @@ -55,7 +65,7 @@ android:layout_below="@+id/tv_total" android:layout_marginStart="@dimen/dp_14" android:layout_marginTop="@dimen/dp_15" - android:layout_toRightOf="@+id/iv_img" + android:layout_toRightOf="@+id/cardview" android:paddingHorizontal="@dimen/dp_9" android:paddingVertical="@dimen/dp_3" android:text="sweet favor" @@ -87,7 +97,7 @@ android:id="@+id/tv_content_dialog_series" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_below="@+id/iv_img" + android:layout_below="@+id/cardview" android:layout_marginHorizontal="@dimen/dp_17" android:layout_marginTop="@dimen/sp_10" android:lineSpacingExtra="@dimen/dp_2" diff --git a/app/src/main/res/layout/home_navigation_item.xml b/app/src/main/res/layout/home_navigation_item.xml index a8fcb37..d68dc24 100644 --- a/app/src/main/res/layout/home_navigation_item.xml +++ b/app/src/main/res/layout/home_navigation_item.xml @@ -20,7 +20,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_2" - android:textSize="@dimen/sp_12" + android:textSize="@dimen/sp_11" android:singleLine="true" app:shape_textColor="#888888" app:shape_textSelectedColor="#F56490" diff --git a/app/src/main/res/layout/item_home_critically.xml b/app/src/main/res/layout/item_home_critically.xml index dd7c37d..0ded230 100644 --- a/app/src/main/res/layout/item_home_critically.xml +++ b/app/src/main/res/layout/item_home_critically.xml @@ -53,6 +53,7 @@ android:lineSpacingExtra="@dimen/dp_2" android:minLines="2" android:maxLines="2" + android:ellipsize="end" android:text="" android:textColor="@color/white" android:textSize="@dimen/sp_12" /> @@ -104,6 +105,7 @@ android:layout_toRightOf="@+id/iv_card" android:lineSpacingExtra="@dimen/dp_2" android:maxLines="2" + android:ellipsize="end" android:text="On her wedding day, Lydia Murphy catches her fiance, Justin, cheati..." android:textColor="#78D2D2D2" android:textSize="@dimen/sp_10" /> diff --git a/app/src/main/res/layout/item_home_short.xml b/app/src/main/res/layout/item_home_short.xml index 83f39b2..1942ee6 100644 --- a/app/src/main/res/layout/item_home_short.xml +++ b/app/src/main/res/layout/item_home_short.xml @@ -54,6 +54,7 @@ android:layout_marginBottom="@dimen/dp_8" android:lineSpacingExtra="@dimen/dp_2" android:maxLines="2" + android:ellipsize="end" android:text="He paid for salvation in blood—but the debt was never meant to be..." android:textColor="@color/mireo_color_d2d2d2" android:textSize="@dimen/sp_10" diff --git a/app/src/main/res/layout/item_list_tab.xml b/app/src/main/res/layout/item_list_tab.xml index 995061e..0983e7d 100644 --- a/app/src/main/res/layout/item_list_tab.xml +++ b/app/src/main/res/layout/item_list_tab.xml @@ -78,6 +78,7 @@ android:layout_marginBottom="@dimen/dp_4" android:lineSpacingExtra="@dimen/dp_2" android:maxLines="2" + android:ellipsize="end" android:text="Salvation Mispaid" android:textColor="@color/white" android:textSize="@dimen/sp_13" diff --git a/app/src/main/res/layout/item_search_girl.xml b/app/src/main/res/layout/item_search_girl.xml index 00b3f18..0b4dd89 100644 --- a/app/src/main/res/layout/item_search_girl.xml +++ b/app/src/main/res/layout/item_search_girl.xml @@ -32,6 +32,7 @@ android:layout_marginBottom="@dimen/dp_4" android:lineSpacingExtra="@dimen/dp_2" android:maxLines="2" + android:ellipsize="end" android:text="Salvation Mispaid" android:textColor="@color/white" android:textSize="@dimen/sp_13" diff --git a/app/src/main/res/layout/item_search_hot.xml b/app/src/main/res/layout/item_search_hot.xml index c57d77b..5855cac 100644 --- a/app/src/main/res/layout/item_search_hot.xml +++ b/app/src/main/res/layout/item_search_hot.xml @@ -33,6 +33,7 @@ android:layout_marginEnd="@dimen/dp_9" android:layout_toRightOf="@+id/iv_card" android:maxLines="2" + android:ellipsize="end" android:text="Caged Marriage" android:textColor="@color/white" android:textSize="@dimen/sp_13" /> @@ -47,6 +48,7 @@ android:layout_marginEnd="@dimen/dp_9" android:layout_toRightOf="@+id/iv_card" android:maxLines="2" + android:ellipsize="end" android:text="Caged Marriage" android:textColor="@color/example_color_9d9d9d" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/mine_fragment.xml b/app/src/main/res/layout/mine_fragment.xml index 976769f..6f6f8cc 100644 --- a/app/src/main/res/layout/mine_fragment.xml +++ b/app/src/main/res/layout/mine_fragment.xml @@ -248,6 +248,35 @@ app:layout_constraintTop_toBottomOf="@+id/sb_play_list" /> + + + + + app:layout_constraintTop_toBottomOf="@+id/sb_language" /> - diff --git a/app/src/main/res/layout/tab_item_design.xml b/app/src/main/res/layout/tab_item_design.xml index fbf6102..68b3446 100644 --- a/app/src/main/res/layout/tab_item_design.xml +++ b/app/src/main/res/layout/tab_item_design.xml @@ -14,6 +14,7 @@ android:layout_centerHorizontal="true" android:gravity="center" android:maxLines="2" + android:ellipsize="end" android:paddingVertical="@dimen/dp_12" android:textSize="@dimen/sp_15" app:shape_textColor="@color/white" diff --git a/app/src/main/res/layout/tips_dialog.xml b/app/src/main/res/layout/tips_dialog.xml index d8d8203..73ec64b 100644 --- a/app/src/main/res/layout/tips_dialog.xml +++ b/app/src/main/res/layout/tips_dialog.xml @@ -34,6 +34,7 @@ android:layout_marginTop="@dimen/dp_5" android:layout_marginBottom="@dimen/dp_10" android:maxLines="3" + android:ellipsize="end" android:textColor="@color/white" android:textSize="@dimen/sp_14" tools:text="提示语" /> diff --git a/app/src/main/res/mipmap-xxhdpi/ic_login_tag.webp b/app/src/main/res/mipmap-xxhdpi/ic_login_tag.webp new file mode 100644 index 0000000..6723673 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_login_tag.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_vip_tag.webp b/app/src/main/res/mipmap-xxhdpi/ic_vip_tag.webp new file mode 100644 index 0000000..5a8454e Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_vip_tag.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_activate_vip.webp b/app/src/main/res/mipmap-xxhdpi/iv_activate_vip.webp new file mode 100644 index 0000000..43de049 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/iv_activate_vip.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/iv_me_order.webp b/app/src/main/res/mipmap-xxhdpi/iv_me_order.webp new file mode 100644 index 0000000..43892d5 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/iv_me_order.webp differ diff --git a/common.gradle b/common.gradle index 59a1a9b..03f880b 100644 --- a/common.gradle +++ b/common.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdk 24 targetSdk 34 - versionName '1.1.2' - versionCode 10 + versionName '1.2.0' + versionCode 12 } compileOptions {