veloria two 6.18 commit
@ -14,8 +14,8 @@ android {
|
|||||||
applicationId = "com.veloria.now.shortapp"
|
applicationId = "com.veloria.now.shortapp"
|
||||||
minSdk = 24
|
minSdk = 24
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 4
|
versionCode = 5
|
||||||
versionName = "1.0.3"
|
versionName = "1.0.4"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
@ -1653,8 +1653,11 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val maxSize = appearanceBase.size - (appearanceBase.size % 3)
|
||||||
|
|
||||||
homeDramaAdapter?.submitList(appearanceBase)
|
val dramaArrayList = appearanceBase.take(maxSize)
|
||||||
|
|
||||||
|
homeDramaAdapter?.submitList(dramaArrayList)
|
||||||
} else {
|
} else {
|
||||||
var loginm: String = "downmix"
|
var loginm: String = "downmix"
|
||||||
while (loginm.length > 104) {
|
while (loginm.length > 104) {
|
||||||
|
@ -13,6 +13,7 @@ import android.view.WindowManager
|
|||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.android.billingclient.api.AcknowledgePurchaseParams
|
import com.android.billingclient.api.AcknowledgePurchaseParams
|
||||||
import com.android.billingclient.api.BillingClient
|
import com.android.billingclient.api.BillingClient
|
||||||
@ -32,16 +33,17 @@ import com.veloria.now.shortapp.civil.JActivityAdapter
|
|||||||
import com.veloria.now.shortapp.civil.RYAction
|
import com.veloria.now.shortapp.civil.RYAction
|
||||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||||
import com.veloria.now.shortapp.civil.YFHome
|
import com.veloria.now.shortapp.civil.YFHome
|
||||||
|
import com.veloria.now.shortapp.civil.singleOnClick
|
||||||
import com.veloria.now.shortapp.civil.toast
|
import com.veloria.now.shortapp.civil.toast
|
||||||
import com.veloria.now.shortapp.databinding.LayoutVePlayerBuyDialogBinding
|
import com.veloria.now.shortapp.databinding.LayoutVePlayerBuyDialogBinding
|
||||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
|
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
|
||||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter
|
|
||||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
|
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
|
||||||
|
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter
|
||||||
|
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
|
||||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||||
import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
||||||
import com.youth.banner.listener.OnPageChangeListener
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
|
|
||||||
@ -52,7 +54,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] }
|
private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] }
|
||||||
|
|
||||||
private var coinAdapter: VeStoreCoinAdapter? = null
|
private var coinAdapter: VeStoreCoinAdapter? = null
|
||||||
private var bannerAdapter: VeBannerVipPayAdapter? = null
|
private var coinBigAdapter: VeStoreCoinBigAdapter? = null
|
||||||
|
private var vipAdapter: VeStoreVipAdapter? = null
|
||||||
private var promise_view_ad: Int? = -1
|
private var promise_view_ad: Int? = -1
|
||||||
private var connectNum = 0
|
private var connectNum = 0
|
||||||
private var short_play_id: Int? = 0
|
private var short_play_id: Int? = 0
|
||||||
@ -65,6 +68,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
private var order_code = ""
|
private var order_code = ""
|
||||||
private var vipData: VePaySettingsBean.VipBean? = null
|
private var vipData: VePaySettingsBean.VipBean? = null
|
||||||
private var coinsData: VePaySettingsBean.CoinsBean? = null
|
private var coinsData: VePaySettingsBean.CoinsBean? = null
|
||||||
|
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
|
||||||
|
|
||||||
private var isBuy = false
|
private var isBuy = false
|
||||||
private var purchaseData: Purchase? = null
|
private var purchaseData: Purchase? = null
|
||||||
@ -90,27 +94,17 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
|
|
||||||
if (TranslationHelper.getTranslation() != null) {
|
if (TranslationHelper.getTranslation() != null) {
|
||||||
binding?.tvCoinsText?.text = TranslationHelper.getTranslation()?.veloria_your_coins
|
binding?.tvCoinsText?.text = TranslationHelper.getTranslation()?.veloria_your_coins
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
binding?.tvTips?.text = Html.fromHtml(
|
binding?.tvTips?.text = Html.fromHtml(
|
||||||
TranslationHelper.getTranslation()?.veloria_store_tips
|
TranslationHelper.getTranslation()?.veloria_store_tips
|
||||||
?: getString(R.string.ve_store_tips_br),
|
?: getString(R.string.ve_store_tips_br),
|
||||||
Html.FROM_HTML_MODE_COMPACT
|
Html.FROM_HTML_MODE_COMPACT
|
||||||
)
|
)
|
||||||
binding?.tvBuyHint?.text = Html.fromHtml(
|
|
||||||
TranslationHelper.getTranslation()?.veloria_unlimited_access_to
|
|
||||||
?: getString(R.string.unlimited_access_to_all_series_for_1_br),
|
|
||||||
Html.FROM_HTML_MODE_COMPACT
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
binding?.tvTips?.text = Html.fromHtml(
|
binding?.tvTips?.text = Html.fromHtml(
|
||||||
TranslationHelper.getTranslation()?.veloria_store_tips
|
TranslationHelper.getTranslation()?.veloria_store_tips
|
||||||
?: getString(R.string.ve_store_tips_br)
|
?: getString(R.string.ve_store_tips_br)
|
||||||
)
|
)
|
||||||
binding?.tvBuyHint?.text = Html.fromHtml(
|
|
||||||
TranslationHelper.getTranslation()?.veloria_unlimited_access_to
|
|
||||||
?: getString(R.string.unlimited_access_to_all_series_for_1_br)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -122,6 +116,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vipAdapter = VeStoreVipAdapter()
|
||||||
|
binding?.recyclerVip?.layoutManager = LinearLayoutManager(requireContext())
|
||||||
|
binding?.recyclerVip?.adapter = vipAdapter
|
||||||
|
|
||||||
coinAdapter = VeStoreCoinAdapter()
|
coinAdapter = VeStoreCoinAdapter()
|
||||||
binding?.recyclerCoin?.layoutManager = GridLayoutManager(requireContext(), 3)
|
binding?.recyclerCoin?.layoutManager = GridLayoutManager(requireContext(), 3)
|
||||||
binding?.recyclerCoin?.adapter = coinAdapter
|
binding?.recyclerCoin?.adapter = coinAdapter
|
||||||
@ -138,38 +136,64 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
coinBigAdapter = VeStoreCoinBigAdapter()
|
||||||
|
binding?.recyclerCoinBig?.layoutManager = GridLayoutManager(requireContext(), 2)
|
||||||
|
binding?.recyclerCoinBig?.adapter = coinBigAdapter
|
||||||
|
binding?.recyclerCoinBig?.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||||
|
override fun getItemOffsets(
|
||||||
|
outRect: Rect,
|
||||||
|
view: View,
|
||||||
|
parent: RecyclerView,
|
||||||
|
state: RecyclerView.State
|
||||||
|
) {
|
||||||
|
outRect.left = resources.getDimension(R.dimen.dp_5).toInt()
|
||||||
|
outRect.right = resources.getDimension(R.dimen.dp_5).toInt()
|
||||||
|
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
showLoading()
|
showLoading()
|
||||||
viewModel.getPaySettingsV3(0, 0)
|
viewModel.getPaySettingsV3(0, 0)
|
||||||
|
|
||||||
|
vipAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
|
if (typeOnClick != 1) {
|
||||||
|
coinAdapter?.currentPosition = -1
|
||||||
|
coinAdapter?.notifyDataSetChanged()
|
||||||
|
coinBigAdapter?.currentPosition = -1
|
||||||
|
coinBigAdapter?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
typeOnClick = 1
|
||||||
|
vipAdapter?.currentPosition = position
|
||||||
|
vipAdapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
|
setOnPayNowClick()
|
||||||
|
}
|
||||||
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
if (typeOnClick == 1) {
|
if (typeOnClick != 0) {
|
||||||
if (bannerAdapter?.currentPosition!! >= 0) {
|
vipAdapter?.currentPosition = -1
|
||||||
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
|
vipAdapter?.notifyDataSetChanged()
|
||||||
}
|
coinBigAdapter?.currentPosition = -1
|
||||||
bannerAdapter?.oldPosition = -1
|
coinBigAdapter?.notifyDataSetChanged()
|
||||||
bannerAdapter?.currentPosition = -1
|
|
||||||
}
|
}
|
||||||
typeOnClick = 0
|
typeOnClick = 0
|
||||||
coinAdapter?.currentPosition = position
|
coinAdapter?.currentPosition = position
|
||||||
coinAdapter?.notifyDataSetChanged()
|
coinAdapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
coinsData =
|
setOnPayNowClick()
|
||||||
coinAdapter!!.getItem(position) as VePaySettingsBean.CoinsBean
|
}
|
||||||
|
coinBigAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
if (parcelable != null) {
|
if (typeOnClick != 2) {
|
||||||
short_play_id?.let {
|
vipAdapter?.currentPosition = -1
|
||||||
VeCreatePayOrderReqBean(
|
vipAdapter?.notifyDataSetChanged()
|
||||||
coinsData?.id.toString(),
|
coinAdapter?.currentPosition = -1
|
||||||
"google",
|
coinAdapter?.notifyDataSetChanged()
|
||||||
it,
|
|
||||||
parcelable!!.short_play_video_id
|
|
||||||
)
|
|
||||||
}?.let {
|
|
||||||
viewModel.setCreatePayOrder(
|
|
||||||
it
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
typeOnClick = 2
|
||||||
|
coinBigAdapter?.currentPosition = position
|
||||||
|
coinBigAdapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
|
setOnPayNowClick()
|
||||||
}
|
}
|
||||||
|
|
||||||
observeData()
|
observeData()
|
||||||
@ -184,34 +208,44 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
window?.setGravity(Gravity.BOTTOM)
|
window?.setGravity(Gravity.BOTTOM)
|
||||||
val layoutParams = window?.attributes
|
val layoutParams = window?.attributes
|
||||||
layoutParams?.width = WindowManager.LayoutParams.MATCH_PARENT
|
layoutParams?.width = WindowManager.LayoutParams.MATCH_PARENT
|
||||||
layoutParams?.height = resources.getDimensionPixelSize(R.dimen.dp_600)
|
layoutParams?.height = (requireActivity().resources.displayMetrics.heightPixels - requireActivity().resources.getDimension(R.dimen.dp_90)).toInt()
|
||||||
window?.attributes = layoutParams
|
window?.attributes = layoutParams
|
||||||
return dialog
|
return dialog
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setBannerListener() {
|
|
||||||
binding?.bannerVip?.setOnBannerListener { data, position ->
|
|
||||||
if (typeOnClick == 0) {
|
|
||||||
coinAdapter?.currentPosition = -1
|
|
||||||
coinAdapter?.notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
if (bannerAdapter?.currentPosition!! >= 0) {
|
|
||||||
bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!!
|
|
||||||
}
|
|
||||||
typeOnClick = 1
|
|
||||||
bannerAdapter?.currentPosition = position
|
|
||||||
bannerAdapter?.notifyItemChanged(position)
|
|
||||||
if (bannerAdapter?.oldPosition!! >= 0) {
|
|
||||||
bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!)
|
|
||||||
}
|
|
||||||
|
|
||||||
vipData =
|
fun setOnPayNowClick() {
|
||||||
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
singleOnClick {
|
||||||
|
if (!isConnect) {
|
||||||
|
if (TranslationHelper.getTranslation() != null) {
|
||||||
|
} else {
|
||||||
|
toast(getString(R.string.ve_google_pay_error))
|
||||||
|
}
|
||||||
|
return@singleOnClick
|
||||||
|
}
|
||||||
|
if (typeOnClick == 0) {
|
||||||
|
coinsData =
|
||||||
|
coinAdapter?.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||||
|
} else if (typeOnClick == 1) {
|
||||||
|
vipData =
|
||||||
|
vipAdapter?.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
||||||
|
} else {
|
||||||
|
coinsBigData =
|
||||||
|
coinBigAdapter?.getItem(coinBigAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||||
|
}
|
||||||
showLoading()
|
showLoading()
|
||||||
|
var idStr = ""
|
||||||
|
if (typeOnClick == 0) {
|
||||||
|
idStr = coinsData?.id.toString()
|
||||||
|
} else if (typeOnClick == 1) {
|
||||||
|
idStr = vipData?.id.toString()
|
||||||
|
} else {
|
||||||
|
idStr = coinsBigData?.id.toString()
|
||||||
|
}
|
||||||
if (parcelable != null) {
|
if (parcelable != null) {
|
||||||
short_play_id?.let {
|
short_play_id?.let {
|
||||||
VeCreatePayOrderReqBean(
|
VeCreatePayOrderReqBean(
|
||||||
vipData?.id.toString(),
|
idStr,
|
||||||
"google",
|
"google",
|
||||||
it,
|
it,
|
||||||
parcelable!!.short_play_video_id
|
parcelable!!.short_play_video_id
|
||||||
@ -222,62 +256,48 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
binding?.bannerVip?.addOnPageChangeListener(object : OnPageChangeListener {
|
|
||||||
override fun onPageScrolled(
|
|
||||||
position: Int,
|
|
||||||
positionOffset: Float,
|
|
||||||
positionOffsetPixels: Int
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageSelected(position: Int) {
|
|
||||||
val data = bannerAdapter?.getData(position)
|
|
||||||
data?.let { setVipContentText(it) }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageScrollStateChanged(state: Int) {
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
val itemData = bannerAdapter?.getData(0)
|
|
||||||
itemData?.let { setVipContentText(it) }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setVipContentText(data: VePaySettingsBean.VipBean) {
|
|
||||||
val vipContent1 = TranslationHelper.replaces(
|
|
||||||
getString(R.string.unlimited_access_to_all_series_for_1_br),
|
|
||||||
data?.vip_type_key.toString(),
|
|
||||||
data.send_coin_ttl.toString()
|
|
||||||
)
|
|
||||||
binding?.tvBuyHint?.text =
|
|
||||||
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun observeData() {
|
fun observeData() {
|
||||||
viewModel.PaySettingsV3.observe(this) {
|
viewModel.PaySettingsV3.observe(this) {
|
||||||
if (it?.data != null) {
|
if (it?.data != null) {
|
||||||
coinAdapter?.submitList(it.data.list_coins)
|
|
||||||
if (it.data.list_sub_vip.isNotEmpty()) {
|
if (it.data.list_sub_vip.isNotEmpty()) {
|
||||||
binding?.tvBuyHint?.visibility = View.VISIBLE
|
vipAdapter?.submitList(it.data.list_sub_vip)
|
||||||
binding?.bannerVip?.visibility = View.VISIBLE
|
binding?.recyclerVip?.visibility = View.VISIBLE
|
||||||
bannerAdapter =
|
|
||||||
VeBannerVipPayAdapter(it.data.list_sub_vip)
|
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||||
binding?.bannerVip?.setBannerGalleryEffect(
|
|
||||||
resources.getDimension(R.dimen.dp_5).toInt(),
|
} else {
|
||||||
resources.getDimension(R.dimen.dp_5).toInt()
|
binding?.recyclerVip?.visibility = View.GONE
|
||||||
)
|
}
|
||||||
binding?.bannerVip?.setAdapter(bannerAdapter)
|
if (it.data.list_coins.isNotEmpty()) {
|
||||||
setBannerListener()
|
val small = it.data.list_coins.filter { coins -> coins.size == "small" }
|
||||||
|
val big = it.data.list_coins.filter { coins -> coins.size == "big" }
|
||||||
|
if (small.isNotEmpty()) {
|
||||||
|
coinAdapter?.submitList(small)
|
||||||
|
binding?.recyclerCoin?.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding?.recyclerCoin?.visibility = View.GONE
|
||||||
|
}
|
||||||
|
if (big.isNotEmpty()) {
|
||||||
|
coinBigAdapter?.submitList(big)
|
||||||
|
binding?.recyclerCoinBig?.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding?.recyclerCoinBig?.visibility = View.GONE
|
||||||
|
}
|
||||||
|
if (small?.isNotEmpty() == true) {
|
||||||
|
small?.let { it1 -> queryInAppCoinsProductDetails(it1, "small") }
|
||||||
|
}
|
||||||
|
if (big?.isNotEmpty() == true) {
|
||||||
|
big?.let { it1 -> queryInAppCoinsProductDetails(it1, "big") }
|
||||||
|
}
|
||||||
|
binding?.tvCoinTitle?.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding?.recyclerCoin?.visibility = View.GONE
|
||||||
|
binding?.recyclerCoinBig?.visibility = View.GONE
|
||||||
|
binding?.tvCoinTitle?.visibility = View.GONE
|
||||||
}
|
}
|
||||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
|
||||||
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
binding?.root?.postDelayed({
|
binding?.root?.postDelayed({
|
||||||
@ -290,8 +310,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
order_code = it.data.order_code.toString()
|
order_code = it.data.order_code.toString()
|
||||||
if (typeOnClick == 0) {
|
if (typeOnClick == 0) {
|
||||||
coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
|
coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||||
} else {
|
} else if (typeOnClick == 1) {
|
||||||
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||||
|
} else {
|
||||||
|
coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (TranslationHelper.getTranslation() != null) {
|
if (TranslationHelper.getTranslation() != null) {
|
||||||
@ -333,10 +355,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
BillingClient.BillingResponseCode.OK -> {
|
BillingClient.BillingResponseCode.OK -> {
|
||||||
for (purchase in purchases!!) {
|
for (purchase in purchases!!) {
|
||||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
||||||
if (typeOnClick == 0) {
|
if (typeOnClick == 1) {
|
||||||
consumePurchase(purchase)
|
|
||||||
} else {
|
|
||||||
consumePurchaseSub(purchase)
|
consumePurchaseSub(purchase)
|
||||||
|
} else {
|
||||||
|
consumePurchase(purchase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -443,7 +465,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding?.root?.postDelayed({
|
binding?.root?.postDelayed({
|
||||||
bannerAdapter?.setDatas(updatedVipList)
|
vipAdapter?.submitList(updatedVipList)
|
||||||
hideLoading()
|
hideLoading()
|
||||||
}, 500)
|
}, 500)
|
||||||
} else {
|
} else {
|
||||||
@ -473,7 +495,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun queryInAppCoinsProductDetails(
|
private fun queryInAppCoinsProductDetails(
|
||||||
coinsList: List<VePaySettingsBean.CoinsBean>
|
coinsList: List<VePaySettingsBean.CoinsBean>,
|
||||||
|
type: String
|
||||||
) {
|
) {
|
||||||
val productDetailsResponseListener =
|
val productDetailsResponseListener =
|
||||||
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
||||||
@ -492,7 +515,11 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
coinAdapter?.recyclerView?.postDelayed({
|
coinAdapter?.recyclerView?.postDelayed({
|
||||||
coinAdapter?.submitList(updatedCoinsList)
|
if (type == "small") {
|
||||||
|
coinAdapter?.submitList(updatedCoinsList)
|
||||||
|
} else {
|
||||||
|
coinBigAdapter?.submitList(updatedCoinsList)
|
||||||
|
}
|
||||||
}, 500)
|
}, 500)
|
||||||
} else {
|
} else {
|
||||||
hideLoading()
|
hideLoading()
|
||||||
@ -533,10 +560,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val productType: String = if (typeOnClick == 0) {
|
val productType: String = if (typeOnClick == 1) {
|
||||||
BillingClient.ProductType.INAPP
|
|
||||||
} else {
|
|
||||||
BillingClient.ProductType.SUBS
|
BillingClient.ProductType.SUBS
|
||||||
|
} else {
|
||||||
|
BillingClient.ProductType.INAPP
|
||||||
}
|
}
|
||||||
|
|
||||||
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
||||||
@ -597,12 +624,12 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
ConsumeResponseListener { billingResult, purchaseToken ->
|
ConsumeResponseListener { billingResult, purchaseToken ->
|
||||||
val vePayBean = VePayBean(
|
val vePayBean = VePayBean(
|
||||||
order_code,
|
order_code,
|
||||||
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(),
|
if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(),
|
||||||
YFHome.getPackageName(),
|
YFHome.getPackageName(),
|
||||||
if (typeOnClick == 0) coinsData?.android_template_id.toString() else vipData?.android_template_id.toString(),
|
if (typeOnClick == 0) coinsData?.android_template_id.toString() else coinsBigData?.android_template_id.toString(),
|
||||||
purchaseToken,
|
purchaseToken,
|
||||||
purchaseData?.orderId.toString(),
|
purchaseData?.orderId.toString(),
|
||||||
if (typeOnClick == 0) coinsData?.price.toString() else vipData?.price.toString()
|
if (typeOnClick == 0) coinsData?.price.toString() else coinsBigData?.price.toString()
|
||||||
)
|
)
|
||||||
payBeanReq = vePayBean
|
payBeanReq = vePayBean
|
||||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||||
@ -642,7 +669,6 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
billingClientData?.endConnection()
|
billingClientData?.endConnection()
|
||||||
billingClientData = null
|
billingClientData = null
|
||||||
System.gc()
|
System.gc()
|
||||||
System.gc()
|
|
||||||
EventBus.getDefault()
|
EventBus.getDefault()
|
||||||
.post(JActivityAdapter.VIDEO_PAY_REFRESH_DISMISS)
|
.post(JActivityAdapter.VIDEO_PAY_REFRESH_DISMISS)
|
||||||
super.onDismiss(dialog)
|
super.onDismiss(dialog)
|
||||||
|
@ -30,13 +30,12 @@ import com.veloria.now.shortapp.civil.toast
|
|||||||
import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding
|
import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding
|
||||||
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
|
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeStoreViewModel
|
||||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerVipPayAdapter
|
|
||||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
|
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
|
||||||
|
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinBigAdapter
|
||||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
|
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
|
||||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||||
import com.youth.banner.listener.OnPageChangeListener
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() {
|
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() {
|
||||||
@ -46,11 +45,15 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
override fun getViewBinding() = ActivityVeStoreBinding.inflate(layoutInflater)
|
override fun getViewBinding() = ActivityVeStoreBinding.inflate(layoutInflater)
|
||||||
|
|
||||||
private var coinAdapter: VeStoreCoinAdapter? = null
|
private var coinAdapter: VeStoreCoinAdapter? = null
|
||||||
|
private var coinBigAdapter: VeStoreCoinBigAdapter? = null
|
||||||
|
private var vipAdapter: VeStoreVipAdapter? = null
|
||||||
private var typeOnClick = 0
|
private var typeOnClick = 0
|
||||||
private var isConnect = false
|
private var isConnect = false
|
||||||
private var vipData: VePaySettingsBean.VipBean? = null
|
private var vipData: VePaySettingsBean.VipBean? = null
|
||||||
private var coinsData: VePaySettingsBean.CoinsBean? = null
|
private var coinsData: VePaySettingsBean.CoinsBean? = null
|
||||||
private var bannerAdapter: VeBannerVipPayAdapter? = null
|
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
|
||||||
|
|
||||||
|
// private var bannerAdapter: VeBannerVipPayAdapter? = null
|
||||||
private var payBeanReq: VePayBean? = null
|
private var payBeanReq: VePayBean? = null
|
||||||
|
|
||||||
private var billingClientData: BillingClient? = null
|
private var billingClientData: BillingClient? = null
|
||||||
@ -63,17 +66,6 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
override fun initView() {
|
override fun initView() {
|
||||||
|
|
||||||
if (TranslationHelper.getTranslation() != null) {
|
if (TranslationHelper.getTranslation() != null) {
|
||||||
binding.tvTitle1.text = TranslationHelper.getTranslation()?.veloria_limited_time_offer
|
|
||||||
binding.tvTitle2.text = TranslationHelper.getTranslation()?.veloria_recharge_unlock_more
|
|
||||||
binding.tvTab2.text = TranslationHelper.getTranslation()?.veloria_coins
|
|
||||||
binding.tvVipText.text = TranslationHelper.getTranslation()?.veloria_membership_benefits
|
|
||||||
binding.tvVipContent1.text = TranslationHelper.getTranslation()?.veloria_store_no_ads
|
|
||||||
binding.tvVipContent2.text =
|
|
||||||
TranslationHelper.getTranslation()?.veloria_store_donate_coins
|
|
||||||
binding.tvVipContent3.text =
|
|
||||||
TranslationHelper.getTranslation()?.veloria_store_auto_renew
|
|
||||||
binding.tvMoreCoin.text = TranslationHelper.getTranslation()?.veloria_get_more_coins
|
|
||||||
binding.tvCoinText.text = TranslationHelper.getTranslation()?.veloria_your_coins
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
binding.tvTips.text = Html.fromHtml(
|
binding.tvTips.text = Html.fromHtml(
|
||||||
TranslationHelper.getTranslation()?.veloria_store_tips
|
TranslationHelper.getTranslation()?.veloria_store_tips
|
||||||
@ -90,25 +82,15 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
|
|
||||||
showLoading()
|
showLoading()
|
||||||
|
|
||||||
binding.tvCoin.text = RYAction.getAllCoinTotal().toString()
|
|
||||||
|
|
||||||
binding.ivBack.setOnClickListener {
|
binding.ivBack.setOnClickListener {
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
binding.tvTab1.setOnClickListener {
|
|
||||||
binding.tvTab1.setBackgroundResource(R.mipmap.iv_store_tab_left)
|
|
||||||
binding.tvTab2.setBackgroundResource(R.drawable.bg_transparent)
|
|
||||||
binding.clOne.visibility = View.GONE
|
|
||||||
binding.clTwo.visibility = View.VISIBLE
|
|
||||||
}
|
|
||||||
binding.tvTab2.setOnClickListener {
|
|
||||||
binding.tvTab1.setBackgroundResource(R.drawable.bg_transparent)
|
|
||||||
binding.tvTab2.setBackgroundResource(R.mipmap.iv_store_tab_right)
|
|
||||||
binding.clOne.visibility = View.VISIBLE
|
|
||||||
binding.clTwo.visibility = View.GONE
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
vipAdapter = VeStoreVipAdapter()
|
||||||
|
binding.recyclerVip.layoutManager = LinearLayoutManager(this)
|
||||||
|
binding.recyclerVip.adapter = vipAdapter
|
||||||
|
|
||||||
coinAdapter = VeStoreCoinAdapter()
|
coinAdapter = VeStoreCoinAdapter()
|
||||||
binding.recyclerCoin.layoutManager = GridLayoutManager(this, 3)
|
binding.recyclerCoin.layoutManager = GridLayoutManager(this, 3)
|
||||||
binding.recyclerCoin.adapter = coinAdapter
|
binding.recyclerCoin.adapter = coinAdapter
|
||||||
@ -124,17 +106,44 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
|
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
coinBigAdapter = VeStoreCoinBigAdapter()
|
||||||
|
binding.recyclerCoinBig.layoutManager = GridLayoutManager(this, 2)
|
||||||
|
binding.recyclerCoinBig.adapter = coinBigAdapter
|
||||||
|
binding.recyclerCoinBig.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||||
|
override fun getItemOffsets(
|
||||||
|
outRect: Rect,
|
||||||
|
view: View,
|
||||||
|
parent: RecyclerView,
|
||||||
|
state: RecyclerView.State
|
||||||
|
) {
|
||||||
|
outRect.left = resources.getDimension(R.dimen.dp_5).toInt()
|
||||||
|
outRect.right = resources.getDimension(R.dimen.dp_5).toInt()
|
||||||
|
outRect.bottom = resources.getDimension(R.dimen.dp_10).toInt()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
viewModel.getPaySettingsV3(0, 0)
|
viewModel.getPaySettingsV3(0, 0)
|
||||||
|
|
||||||
|
vipAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
|
if (typeOnClick != 1) {
|
||||||
|
coinAdapter?.currentPosition = -1
|
||||||
|
coinAdapter?.notifyDataSetChanged()
|
||||||
|
coinBigAdapter?.currentPosition = -1
|
||||||
|
coinBigAdapter?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
typeOnClick = 1
|
||||||
|
vipAdapter?.currentPosition = position
|
||||||
|
vipAdapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
|
setOnPayNowClick()
|
||||||
|
}
|
||||||
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
if (typeOnClick == 1) {
|
if (typeOnClick != 0) {
|
||||||
if (bannerAdapter?.currentPosition!! >= 0) {
|
vipAdapter?.currentPosition = -1
|
||||||
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
|
vipAdapter?.notifyDataSetChanged()
|
||||||
}
|
coinBigAdapter?.currentPosition = -1
|
||||||
bannerAdapter?.oldPosition = -1
|
coinBigAdapter?.notifyDataSetChanged()
|
||||||
bannerAdapter?.currentPosition = -1
|
|
||||||
}
|
}
|
||||||
typeOnClick = 0
|
typeOnClick = 0
|
||||||
coinAdapter?.currentPosition = position
|
coinAdapter?.currentPosition = position
|
||||||
@ -142,64 +151,23 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
|
|
||||||
setOnPayNowClick()
|
setOnPayNowClick()
|
||||||
}
|
}
|
||||||
|
coinBigAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
|
if (typeOnClick != 2) {
|
||||||
|
vipAdapter?.currentPosition = -1
|
||||||
|
vipAdapter?.notifyDataSetChanged()
|
||||||
|
coinAdapter?.currentPosition = -1
|
||||||
|
coinAdapter?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
typeOnClick = 2
|
||||||
|
coinBigAdapter?.currentPosition = position
|
||||||
|
coinBigAdapter?.notifyDataSetChanged()
|
||||||
|
|
||||||
|
setOnPayNowClick()
|
||||||
|
}
|
||||||
|
|
||||||
initPayData()
|
initPayData()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setBannerListener() {
|
|
||||||
binding.bannerVip.setOnBannerListener { data, position ->
|
|
||||||
if (typeOnClick == 0) {
|
|
||||||
coinAdapter?.currentPosition = -1
|
|
||||||
coinAdapter?.notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
if (bannerAdapter?.currentPosition!! >= 0) {
|
|
||||||
bannerAdapter?.oldPosition = bannerAdapter?.currentPosition!!
|
|
||||||
}
|
|
||||||
typeOnClick = 1
|
|
||||||
bannerAdapter?.currentPosition = position
|
|
||||||
bannerAdapter?.notifyItemChanged(position)
|
|
||||||
if (bannerAdapter?.oldPosition!! >= 0) {
|
|
||||||
bannerAdapter?.notifyItemChanged(bannerAdapter?.oldPosition!!)
|
|
||||||
}
|
|
||||||
setOnPayNowClick()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.bannerVip.addOnPageChangeListener(object : OnPageChangeListener {
|
|
||||||
override fun onPageScrolled(
|
|
||||||
position: Int,
|
|
||||||
positionOffset: Float,
|
|
||||||
positionOffsetPixels: Int
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageSelected(position: Int) {
|
|
||||||
val data = bannerAdapter?.getData(position)
|
|
||||||
data?.let { setVipContentText(it) }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageScrollStateChanged(state: Int) {
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
val itemData = bannerAdapter?.getData(0)
|
|
||||||
itemData?.let { setVipContentText(it) }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setVipContentText(data: VePaySettingsBean.VipBean) {
|
|
||||||
val vipContent1 =
|
|
||||||
"Unlimited access to all series for <font color='#05CEA0'>1 ".plus(data?.vip_type_key)
|
|
||||||
.plus("</font> (No Ads)")
|
|
||||||
binding.tvVipContent1.text =
|
|
||||||
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
|
|
||||||
val vipContent2 =
|
|
||||||
"The donate coins will expire in <font color='#05CEA0'>".plus(data.send_coin_ttl.toString())
|
|
||||||
.plus(" days</font>")
|
|
||||||
binding.tvVipContent2.text =
|
|
||||||
Html.fromHtml(vipContent2, Html.FROM_HTML_MODE_LEGACY)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setOnPayNowClick() {
|
fun setOnPayNowClick() {
|
||||||
singleOnClick {
|
singleOnClick {
|
||||||
@ -212,15 +180,26 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
}
|
}
|
||||||
if (typeOnClick == 0) {
|
if (typeOnClick == 0) {
|
||||||
coinsData =
|
coinsData =
|
||||||
coinAdapter!!.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
coinAdapter?.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||||
} else {
|
} else if (typeOnClick == 1) {
|
||||||
vipData =
|
vipData =
|
||||||
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
vipAdapter?.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
||||||
|
} else {
|
||||||
|
coinsBigData =
|
||||||
|
coinBigAdapter?.getItem(coinBigAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||||
}
|
}
|
||||||
showLoading()
|
showLoading()
|
||||||
|
var idStr = ""
|
||||||
|
if (typeOnClick == 0) {
|
||||||
|
idStr = coinsData?.id.toString()
|
||||||
|
} else if (typeOnClick == 1) {
|
||||||
|
idStr = vipData?.id.toString()
|
||||||
|
} else {
|
||||||
|
idStr = coinsBigData?.id.toString()
|
||||||
|
}
|
||||||
viewModel.setCreatePayOrder(
|
viewModel.setCreatePayOrder(
|
||||||
VeCreatePayOrderReqBean(
|
VeCreatePayOrderReqBean(
|
||||||
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(),
|
idStr,
|
||||||
"google",
|
"google",
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
@ -232,28 +211,42 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
override fun observeData() {
|
override fun observeData() {
|
||||||
viewModel.PaySettingsV3.observe(this) {
|
viewModel.PaySettingsV3.observe(this) {
|
||||||
if (it?.data != null) {
|
if (it?.data != null) {
|
||||||
|
if (it.data.list_sub_vip.isNotEmpty()) {
|
||||||
|
vipAdapter?.submitList(it.data.list_sub_vip)
|
||||||
|
binding.recyclerVip.visibility = View.VISIBLE
|
||||||
|
|
||||||
if (it.data.list_coins.isNotEmpty() && it.data.list_sub_vip.isNotEmpty()){
|
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||||
binding.llTab.visibility = View.VISIBLE
|
|
||||||
}
|
|
||||||
if (it.data.list_sub_vip.isNotEmpty()){
|
|
||||||
binding.clTwo.visibility = View.VISIBLE
|
|
||||||
bannerAdapter =
|
|
||||||
VeBannerVipPayAdapter(it.data.list_sub_vip)
|
|
||||||
binding.bannerVip.setBannerGalleryEffect(
|
|
||||||
resources.getDimension(R.dimen.dp_5).toInt(),
|
|
||||||
resources.getDimension(R.dimen.dp_5).toInt()
|
|
||||||
)
|
|
||||||
binding.bannerVip.setAdapter(bannerAdapter)
|
|
||||||
setBannerListener()
|
|
||||||
}else {
|
|
||||||
binding.clTwo.visibility = View.GONE
|
|
||||||
binding.clOne.visibility = View.VISIBLE
|
|
||||||
}
|
|
||||||
coinAdapter?.submitList(it.data.list_coins)
|
|
||||||
|
|
||||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
} else {
|
||||||
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
binding.recyclerVip.visibility = View.GONE
|
||||||
|
}
|
||||||
|
if (it.data.list_coins.isNotEmpty()) {
|
||||||
|
val small = it.data.list_coins.filter { coins -> coins.size == "small" }
|
||||||
|
val big = it.data.list_coins.filter { coins -> coins.size == "big" }
|
||||||
|
if (small.isNotEmpty()) {
|
||||||
|
coinAdapter?.submitList(small)
|
||||||
|
binding.recyclerCoin.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding.recyclerCoin.visibility = View.GONE
|
||||||
|
}
|
||||||
|
if (big.isNotEmpty()) {
|
||||||
|
coinBigAdapter?.submitList(big)
|
||||||
|
binding.recyclerCoinBig.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding.recyclerCoinBig.visibility = View.GONE
|
||||||
|
}
|
||||||
|
if (small?.isNotEmpty() == true) {
|
||||||
|
small?.let { it1 -> queryInAppCoinsProductDetails(it1, "small") }
|
||||||
|
}
|
||||||
|
if (big?.isNotEmpty() == true) {
|
||||||
|
big?.let { it1 -> queryInAppCoinsProductDetails(it1, "big") }
|
||||||
|
}
|
||||||
|
binding.tvCoinTitle.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
binding.recyclerCoin.visibility = View.GONE
|
||||||
|
binding.recyclerCoinBig.visibility = View.GONE
|
||||||
|
binding.tvCoinTitle.visibility = View.GONE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hideLoading()
|
hideLoading()
|
||||||
@ -263,8 +256,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
order_code = it.data.order_code.toString()
|
order_code = it.data.order_code.toString()
|
||||||
if (typeOnClick == 0) {
|
if (typeOnClick == 0) {
|
||||||
coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
|
coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||||
} else {
|
} else if (typeOnClick == 1) {
|
||||||
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||||
|
} else {
|
||||||
|
coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (TranslationHelper.getTranslation() != null) {
|
if (TranslationHelper.getTranslation() != null) {
|
||||||
@ -296,7 +291,6 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
viewModel.userInfo.observe(this) {
|
viewModel.userInfo.observe(this) {
|
||||||
if (it?.data != null) {
|
if (it?.data != null) {
|
||||||
RYAction.saveUserInfoBean(it.data)
|
RYAction.saveUserInfoBean(it.data)
|
||||||
binding.tvCoin.text = RYAction.getAllCoinTotal().toString()
|
|
||||||
}
|
}
|
||||||
hideLoading()
|
hideLoading()
|
||||||
}
|
}
|
||||||
@ -309,10 +303,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
BillingClient.BillingResponseCode.OK -> {
|
BillingClient.BillingResponseCode.OK -> {
|
||||||
for (purchase in purchases!!) {
|
for (purchase in purchases!!) {
|
||||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
||||||
if (typeOnClick == 0) {
|
if (typeOnClick == 1) {
|
||||||
consumePurchase(purchase)
|
|
||||||
} else {
|
|
||||||
consumePurchaseSub(purchase)
|
consumePurchaseSub(purchase)
|
||||||
|
} else {
|
||||||
|
consumePurchase(purchase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -419,7 +413,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.root.postDelayed({
|
binding.root.postDelayed({
|
||||||
bannerAdapter?.setDatas(updatedVipList)
|
vipAdapter?.submitList(updatedVipList)
|
||||||
hideLoading()
|
hideLoading()
|
||||||
}, 500)
|
}, 500)
|
||||||
} else {
|
} else {
|
||||||
@ -449,7 +443,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun queryInAppCoinsProductDetails(
|
private fun queryInAppCoinsProductDetails(
|
||||||
coinsList: List<VePaySettingsBean.CoinsBean>
|
coinsList: List<VePaySettingsBean.CoinsBean>,
|
||||||
|
type: String
|
||||||
) {
|
) {
|
||||||
val productDetailsResponseListener =
|
val productDetailsResponseListener =
|
||||||
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
||||||
@ -468,7 +463,11 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
coinAdapter?.recyclerView?.postDelayed({
|
coinAdapter?.recyclerView?.postDelayed({
|
||||||
coinAdapter?.submitList(updatedCoinsList)
|
if (type == "small") {
|
||||||
|
coinAdapter?.submitList(updatedCoinsList)
|
||||||
|
} else {
|
||||||
|
coinBigAdapter?.submitList(updatedCoinsList)
|
||||||
|
}
|
||||||
}, 500)
|
}, 500)
|
||||||
} else {
|
} else {
|
||||||
hideLoading()
|
hideLoading()
|
||||||
@ -509,10 +508,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val productType: String = if (typeOnClick == 0) {
|
val productType: String = if (typeOnClick == 1) {
|
||||||
BillingClient.ProductType.INAPP
|
|
||||||
} else {
|
|
||||||
BillingClient.ProductType.SUBS
|
BillingClient.ProductType.SUBS
|
||||||
|
} else {
|
||||||
|
BillingClient.ProductType.INAPP
|
||||||
}
|
}
|
||||||
|
|
||||||
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
||||||
@ -591,12 +590,12 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
ConsumeResponseListener { billingResult, purchaseToken ->
|
ConsumeResponseListener { billingResult, purchaseToken ->
|
||||||
val vePayBean = VePayBean(
|
val vePayBean = VePayBean(
|
||||||
order_code,
|
order_code,
|
||||||
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(),
|
if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(),
|
||||||
YFHome.getPackageName(),
|
YFHome.getPackageName(),
|
||||||
if (typeOnClick == 0) coinsData?.android_template_id.toString() else vipData?.android_template_id.toString(),
|
if (typeOnClick == 0) coinsData?.android_template_id.toString() else coinsBigData?.android_template_id.toString(),
|
||||||
purchaseToken,
|
purchaseToken,
|
||||||
purchaseData?.orderId.toString(),
|
purchaseData?.orderId.toString(),
|
||||||
if (typeOnClick == 0) coinsData?.price.toString() else vipData?.price.toString()
|
if (typeOnClick == 0) coinsData?.price.toString() else coinsBigData?.price.toString()
|
||||||
)
|
)
|
||||||
payBeanReq = vePayBean
|
payBeanReq = vePayBean
|
||||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||||
|
@ -53,7 +53,7 @@ class VeStoreCoinAdapter :
|
|||||||
} else {
|
} else {
|
||||||
holder.binding.tvSelect.visibility = View.GONE
|
holder.binding.tvSelect.visibility = View.GONE
|
||||||
|
|
||||||
holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_bg)
|
holder.binding.root.setBackgroundResource(R.mipmap.bg_store_coin_bg)
|
||||||
}
|
}
|
||||||
val sendCoins = item?.send_coins?.toDouble()
|
val sendCoins = item?.send_coins?.toDouble()
|
||||||
if (sendCoins != null) {
|
if (sendCoins != null) {
|
||||||
|
@ -0,0 +1,74 @@
|
|||||||
|
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.chad.library.adapter4.BaseQuickAdapter
|
||||||
|
import com.veloria.now.shortapp.R
|
||||||
|
import com.veloria.now.shortapp.databinding.ItemVeStoreCoinBigBinding
|
||||||
|
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||||
|
import kotlin.math.floor
|
||||||
|
|
||||||
|
class VeStoreCoinBigAdapter :
|
||||||
|
BaseQuickAdapter<VePaySettingsBean.CoinsBean, VeStoreCoinBigAdapter.VH>() {
|
||||||
|
|
||||||
|
var currentPosition = -1
|
||||||
|
|
||||||
|
class VH(
|
||||||
|
parent: ViewGroup,
|
||||||
|
val binding: ItemVeStoreCoinBigBinding = ItemVeStoreCoinBigBinding.inflate(
|
||||||
|
LayoutInflater.from(parent.context), parent, false
|
||||||
|
),
|
||||||
|
) : RecyclerView.ViewHolder(binding.root)
|
||||||
|
|
||||||
|
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
|
||||||
|
return VH(parent)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBindViewHolder(
|
||||||
|
holder: VH,
|
||||||
|
position: Int,
|
||||||
|
item: VePaySettingsBean.CoinsBean?
|
||||||
|
) {
|
||||||
|
if (null != item) {
|
||||||
|
holder.binding.tvCoins.text = "+".plus(item.coins.toString())
|
||||||
|
holder.binding.tvPrice.text = item.price_google
|
||||||
|
if (item.send_coins > 0) {
|
||||||
|
holder.binding.tvBonus.text = "+".plus(item.send_coins).plus(" Bonus")
|
||||||
|
} else {
|
||||||
|
holder.binding.tvBonus.text = ""
|
||||||
|
}
|
||||||
|
if (item.corner_marker.isNotEmpty()) {
|
||||||
|
holder.binding.tvHot.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
holder.binding.tvHot.visibility = View.INVISIBLE
|
||||||
|
}
|
||||||
|
if (currentPosition == position) {
|
||||||
|
holder.binding.tvSelect.visibility = View.VISIBLE
|
||||||
|
holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_on)
|
||||||
|
} else {
|
||||||
|
holder.binding.tvSelect.visibility = View.GONE
|
||||||
|
holder.binding.root.setBackgroundResource(R.drawable.bg_store_coin_off)
|
||||||
|
}
|
||||||
|
val sendCoins = item?.send_coins?.toDouble()
|
||||||
|
if (sendCoins != null) {
|
||||||
|
if (sendCoins > 0) {
|
||||||
|
val coins = item?.coins?.toDouble()
|
||||||
|
val let = coins?.let { sendCoins?.div(it) }
|
||||||
|
val times = let?.times(100)
|
||||||
|
if (times != null) {
|
||||||
|
val floor = floor(times).toInt()
|
||||||
|
holder.binding.tvCorner.text = "+".plus(floor).plus("%")
|
||||||
|
holder.binding.tvCorner.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
holder.binding.tvCorner.visibility = View.INVISIBLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -37,12 +37,33 @@ class VeStoreVipAdapter :
|
|||||||
holder.binding.tvDay.text = item.brief
|
holder.binding.tvDay.text = item.brief
|
||||||
holder.binding.tvMoney.text = item.price_google
|
holder.binding.tvMoney.text = item.price_google
|
||||||
holder.binding.tvMoneyDay.text = "/".plus(item.vip_type_key)
|
holder.binding.tvMoneyDay.text = "/".plus(item.vip_type_key)
|
||||||
|
holder.binding.tvDescription.text = item.description
|
||||||
|
holder.binding.tvInfo.text = item.auto_sub
|
||||||
if ((item.send_coins ?: 0) > 0) {
|
if ((item.send_coins ?: 0) > 0) {
|
||||||
holder.binding.tvExtra.text =
|
holder.binding.tvExtra.text =
|
||||||
"+".plus(TranslationHelper.getTranslation()?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra").plus(" ").plus(item.send_coins)
|
"+".plus(
|
||||||
|
TranslationHelper.getTranslation()
|
||||||
|
?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra")
|
||||||
|
.plus(" ").plus(item.send_coins)
|
||||||
|
|
||||||
|
if (TranslationHelper.getTranslation() != null) {
|
||||||
|
holder.binding.tvExpire.text =
|
||||||
|
TranslationHelper.getTranslation()?.veloria_donate_expire?.let {
|
||||||
|
TranslationHelper.replace(
|
||||||
|
it,
|
||||||
|
item.send_coin_ttl.toString()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
holder.binding.tvExpire.text =
|
||||||
|
"The donate coins will expire in ".plus(item.send_coin_ttl.toString())
|
||||||
|
.plus(" days")
|
||||||
|
}
|
||||||
holder.binding.tvExtra.visibility = View.VISIBLE
|
holder.binding.tvExtra.visibility = View.VISIBLE
|
||||||
|
holder.binding.tvExpire.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
holder.binding.tvExtra.visibility = View.GONE
|
holder.binding.tvExtra.visibility = View.GONE
|
||||||
|
holder.binding.tvExpire.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentPosition == position) {
|
if (currentPosition == position) {
|
||||||
@ -53,40 +74,56 @@ class VeStoreVipAdapter :
|
|||||||
|
|
||||||
|
|
||||||
when (item.vip_type_key) {
|
when (item.vip_type_key) {
|
||||||
"week" -> {
|
"month" -> {
|
||||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_1)
|
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_1)
|
||||||
|
holder.binding.tvDay.setTextColor(Color.parseColor("#647DA7"))
|
||||||
|
holder.binding.tvMoney.setTextColor(Color.parseColor("#647DA7"))
|
||||||
|
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#647DA7"))
|
||||||
|
holder.binding.tvExtra.setTextColor(Color.parseColor("#214170"))
|
||||||
|
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_1)
|
||||||
|
holder.binding.tvDescription.setTextColor(Color.parseColor("#303962"))
|
||||||
|
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_1)
|
||||||
|
holder.binding.tvInfo.setTextColor(Color.parseColor("#8790B7"))
|
||||||
|
holder.binding.tvExpire.setTextColor(Color.parseColor("#8790B7"))
|
||||||
|
}
|
||||||
|
|
||||||
|
"week" -> {
|
||||||
|
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_2)
|
||||||
holder.binding.tvDay.setTextColor(Color.parseColor("#64A3A7"))
|
holder.binding.tvDay.setTextColor(Color.parseColor("#64A3A7"))
|
||||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#64A3A7"))
|
holder.binding.tvMoney.setTextColor(Color.parseColor("#64A3A7"))
|
||||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#64A3A7"))
|
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#64A3A7"))
|
||||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#416767"))
|
holder.binding.tvExtra.setTextColor(Color.parseColor("#16706A"))
|
||||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_1)
|
|
||||||
}
|
|
||||||
|
|
||||||
"month" -> {
|
|
||||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_2)
|
|
||||||
holder.binding.tvDay.setTextColor(Color.parseColor("#9C7565"))
|
|
||||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#9C7565"))
|
|
||||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C7565"))
|
|
||||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#573D31"))
|
|
||||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_2)
|
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_2)
|
||||||
|
holder.binding.tvDescription.setTextColor(Color.parseColor("#416767"))
|
||||||
|
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_2)
|
||||||
|
holder.binding.tvInfo.setTextColor(Color.parseColor("#8AAEA6"))
|
||||||
|
holder.binding.tvExpire.setTextColor(Color.parseColor("#8AAEA6"))
|
||||||
}
|
}
|
||||||
|
|
||||||
"quarter" -> {
|
"quarter" -> {
|
||||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_3)
|
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_3)
|
||||||
holder.binding.tvDay.setTextColor(Color.parseColor("#647DA7"))
|
holder.binding.tvDay.setTextColor(Color.parseColor("#7869FF"))
|
||||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#647DA7"))
|
holder.binding.tvMoney.setTextColor(Color.parseColor("#7869FF"))
|
||||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#647DA7"))
|
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#7869FF"))
|
||||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#303962"))
|
holder.binding.tvExtra.setTextColor(Color.parseColor("#510087"))
|
||||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_3)
|
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_3)
|
||||||
|
holder.binding.tvDescription.setTextColor(Color.parseColor("#5F1EB9"))
|
||||||
|
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_3)
|
||||||
|
holder.binding.tvInfo.setTextColor(Color.parseColor("#A395D9"))
|
||||||
|
holder.binding.tvExpire.setTextColor(Color.parseColor("#A395D9"))
|
||||||
}
|
}
|
||||||
|
|
||||||
"year" -> {
|
"year" -> {
|
||||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_4)
|
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_4)
|
||||||
holder.binding.tvDay.setTextColor(Color.parseColor("#9C6586"))
|
holder.binding.tvDay.setTextColor(Color.parseColor("#573D31"))
|
||||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#9C6586"))
|
holder.binding.tvMoney.setTextColor(Color.parseColor("#573D31"))
|
||||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C6586"))
|
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#573D31"))
|
||||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#674162"))
|
holder.binding.tvExtra.setTextColor(Color.parseColor("#683D00"))
|
||||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_4)
|
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_4)
|
||||||
|
holder.binding.tvDescription.setTextColor(Color.parseColor("#573D31"))
|
||||||
|
holder.binding.tvDescription.setBackgroundResource(R.drawable.bg_store_vip_text_4)
|
||||||
|
holder.binding.tvInfo.setTextColor(Color.parseColor("#AC978D"))
|
||||||
|
holder.binding.tvExpire.setTextColor(Color.parseColor("#AC978D"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ class VeTranslationBean(
|
|||||||
)
|
)
|
||||||
|
|
||||||
data class Translation(
|
data class Translation(
|
||||||
|
val veloria_donate_expire : String,
|
||||||
val veloria_not_found_string : String,
|
val veloria_not_found_string : String,
|
||||||
val veloria_not_found : String,
|
val veloria_not_found : String,
|
||||||
val veloria_episode : String,
|
val veloria_episode : String,
|
||||||
|
5
app/src/main/res/drawable/bg_coin_big_right.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="#FF9500" />
|
||||||
|
<corners android:topRightRadius="@dimen/dp_8" android:bottomLeftRadius="@dimen/dp_8" />
|
||||||
|
</shape>
|
5
app/src/main/res/drawable/bg_coin_left_big.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="#FFBE55" />
|
||||||
|
<corners android:topLeftRadius="@dimen/dp_8" android:bottomRightRadius="@dimen/dp_8" />
|
||||||
|
</shape>
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<solid android:color="#05CEA0" />
|
<solid android:color="#8005CEA0" />
|
||||||
<corners android:topRightRadius="@dimen/dp_8" android:bottomLeftRadius="@dimen/dp_8" />
|
<corners android:topRightRadius="@dimen/dp_8" android:bottomLeftRadius="@dimen/dp_8" />
|
||||||
</shape>
|
</shape>
|
5
app/src/main/res/drawable/bg_store_coin_money_bottom.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="#3D05CEA0" />
|
||||||
|
<corners android:bottomRightRadius="@dimen/dp_8" android:bottomLeftRadius="@dimen/dp_8" />
|
||||||
|
</shape>
|
11
app/src/main/res/drawable/bg_store_coin_money_bottom_big.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="#E6A87A46" android:startColor="#E6FBF2C7" android:type="linear" />
|
||||||
|
<corners android:bottomLeftRadius="@dimen/dp_8"
|
||||||
|
android:bottomRightRadius="@dimen/dp_8"
|
||||||
|
/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
9
app/src/main/res/drawable/bg_store_coin_off.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="#80A87A46" android:startColor="#80FBF2C7" android:type="linear" />
|
||||||
|
<corners android:radius="@dimen/dp_8" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
11
app/src/main/res/drawable/bg_store_coin_on.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="#80A87A46" android:startColor="#80FBF2C7" android:type="linear" />
|
||||||
|
<corners android:radius="@dimen/dp_8" />
|
||||||
|
<stroke android:width="@dimen/dp_1" android:color="#FFBE55" />
|
||||||
|
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
@ -2,8 +2,10 @@
|
|||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<gradient android:endColor="@color/transparent" android:startColor="#B2E7EA" android:type="linear" />
|
<gradient android:endColor="#7CA1D7" android:startColor="#ADCFFF" android:type="linear" />
|
||||||
<corners android:radius="@dimen/dp_6" />
|
<corners android:topLeftRadius="@dimen/dp_10"
|
||||||
|
android:bottomRightRadius="@dimen/dp_10"
|
||||||
|
/>
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
</selector>
|
</selector>
|
@ -2,8 +2,10 @@
|
|||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<gradient android:endColor="@color/transparent" android:startColor="#FFE6CE" android:type="linear" />
|
<gradient android:endColor="#7AD9D4" android:startColor="#BDFFFB" android:type="linear" />
|
||||||
<corners android:radius="@dimen/dp_6" />
|
<corners android:topLeftRadius="@dimen/dp_10"
|
||||||
|
android:bottomRightRadius="@dimen/dp_10"
|
||||||
|
/>
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
</selector>
|
</selector>
|
@ -2,8 +2,10 @@
|
|||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<gradient android:endColor="@color/transparent" android:startColor="#D6E5F9" android:type="linear" />
|
<gradient android:endColor="#975DFF" android:startColor="#DBC7FF" android:type="linear" />
|
||||||
<corners android:radius="@dimen/dp_6" />
|
<corners android:topLeftRadius="@dimen/dp_10"
|
||||||
|
android:bottomRightRadius="@dimen/dp_10"
|
||||||
|
/>
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
</selector>
|
</selector>
|
@ -2,8 +2,10 @@
|
|||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<gradient android:endColor="@color/transparent" android:startColor="#FFD8F5" android:type="linear" />
|
<gradient android:endColor="#A87A46" android:startColor="#FBF2C7" android:type="linear" />
|
||||||
<corners android:radius="@dimen/dp_6" />
|
<corners android:topLeftRadius="@dimen/dp_10"
|
||||||
|
android:bottomRightRadius="@dimen/dp_10"
|
||||||
|
/>
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
</selector>
|
</selector>
|
9
app/src/main/res/drawable/bg_store_vip_text_1.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="@color/transparent" android:startColor="#D6E5F9" android:type="linear" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
9
app/src/main/res/drawable/bg_store_vip_text_2.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="@color/transparent" android:startColor="#B2E7EA" android:type="linear" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
9
app/src/main/res/drawable/bg_store_vip_text_3.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="@color/transparent" android:startColor="#CABCFF" android:type="linear" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
9
app/src/main/res/drawable/bg_store_vip_text_4.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<gradient android:endColor="@color/transparent" android:startColor="#FFE6CE" android:type="linear" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
@ -5,286 +5,94 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@mipmap/playfair_selected_gradle">
|
android:background="@mipmap/playfair_selected_gradle">
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
android:src="@mipmap/iv_store_top"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_title_1"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="@dimen/dp_160"
|
|
||||||
android:text="Limited Time Offer"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_16"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_title_2"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
|
||||||
android:text="Recharge & Unlock More"
|
|
||||||
android:textColor="#CC05CEA0"
|
|
||||||
android:textSize="@dimen/sp_22"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_title_1" />
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginTop="@dimen/dp_20"
|
|
||||||
android:background="@drawable/bg_store_bottom"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_title_2">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
|
||||||
android:id="@+id/ll_tab"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/dp_45"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_tab_1"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@mipmap/iv_store_tab_left"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="VIP"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_15"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_tab_2"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="Coins"
|
|
||||||
android:textColor="@color/utilsUtils"
|
|
||||||
android:textSize="@dimen/sp_15" />
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/fl_tab"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:visibility="visible"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/ll_tab">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/cl_one"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:paddingHorizontal="@dimen/dp_10"
|
|
||||||
android:paddingTop="@dimen/dp_15"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_more_coin"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="@dimen/dp_5"
|
|
||||||
android:drawableStart="@mipmap/start_text"
|
|
||||||
android:drawablePadding="@dimen/dp_5"
|
|
||||||
android:text="Get More Coins"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_15"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_coin"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="@dimen/dp_5"
|
|
||||||
android:text="0"
|
|
||||||
android:textColor="@color/ve_be0069"
|
|
||||||
android:textSize="@dimen/sp_13"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_coin_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="@dimen/dp_5"
|
|
||||||
android:text="Your Coins:"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_13"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/tv_coin"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/recycler_coin"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="@dimen/dp_12"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_more_coin" />
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/cl_two"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:paddingHorizontal="@dimen/dp_10"
|
|
||||||
android:paddingTop="@dimen/dp_15"
|
|
||||||
android:visibility="visible">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_vip_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="@dimen/dp_5"
|
|
||||||
android:drawableStart="@mipmap/iv_store_vip"
|
|
||||||
android:drawablePadding="@dimen/dp_5"
|
|
||||||
android:text="Membership Benefits"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_15"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_vip_content1"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="@dimen/dp_5"
|
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
|
||||||
android:layout_marginBottom="@dimen/dp_12"
|
|
||||||
android:background="@mipmap/iv_store_benefits_bg"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:gravity="center"
|
|
||||||
android:lineSpacingExtra="@dimen/dp_2"
|
|
||||||
android:maxLines="3"
|
|
||||||
android:minLines="3"
|
|
||||||
android:paddingHorizontal="@dimen/dp_5"
|
|
||||||
android:paddingBottom="@dimen/dp_15"
|
|
||||||
android:text="Unlimited access to all series for 1 week (No Ads)"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_12"
|
|
||||||
app:drawableTopCompat="@mipmap/vertical_selected"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/tv_vip_content2"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_vip_content2"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="@dimen/dp_5"
|
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
|
||||||
android:layout_marginBottom="@dimen/dp_12"
|
|
||||||
android:background="@mipmap/iv_store_benefits_bg"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:gravity="center"
|
|
||||||
android:lineSpacingExtra="@dimen/dp_2"
|
|
||||||
android:maxLines="3"
|
|
||||||
android:minLines="3"
|
|
||||||
android:paddingHorizontal="@dimen/dp_5"
|
|
||||||
android:paddingBottom="@dimen/dp_15"
|
|
||||||
android:text="The donate coins will expire in 8 days"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_12"
|
|
||||||
app:drawableTopCompat="@mipmap/register___bbfdebaffd_coins"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/tv_vip_content3"
|
|
||||||
app:layout_constraintStart_toEndOf="@+id/tv_vip_content1"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_vip_content3"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="@dimen/dp_5"
|
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
|
||||||
android:layout_marginBottom="@dimen/dp_12"
|
|
||||||
android:background="@mipmap/iv_store_benefits_bg"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:gravity="center"
|
|
||||||
android:lineSpacingExtra="@dimen/dp_2"
|
|
||||||
android:maxLines="3"
|
|
||||||
android:minLines="3"
|
|
||||||
android:paddingHorizontal="@dimen/dp_5"
|
|
||||||
android:paddingBottom="@dimen/dp_15"
|
|
||||||
android:text="Auto renew, cancel anytime"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="@dimen/sp_12"
|
|
||||||
app:drawableTopCompat="@mipmap/styles_system"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="@+id/tv_vip_content2"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
|
|
||||||
|
|
||||||
<com.youth.banner.Banner
|
|
||||||
android:id="@+id/banner_vip"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/dp_135"
|
|
||||||
android:layout_marginTop="@dimen/dp_12"
|
|
||||||
app:banner_auto_loop="false"
|
|
||||||
app:banner_infinite_loop="false"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_tips"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="@dimen/dp_15"
|
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
|
||||||
android:lineSpacingExtra="@dimen/dp_2"
|
|
||||||
android:text="@string/ve_store_tips"
|
|
||||||
android:textColor="@color/white50"
|
|
||||||
android:textSize="@dimen/sp_12"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/fl_tab" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
</androidx.core.widget.NestedScrollView>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/iv_back"
|
android:id="@+id/iv_back"
|
||||||
android:layout_width="@dimen/dp_35"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/dp_35"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/dp_10"
|
android:layout_marginTop="@dimen/dp_35"
|
||||||
android:layout_marginTop="@dimen/dp_40"
|
android:padding="@dimen/dp_15"
|
||||||
android:padding="@dimen/dp_10"
|
android:src="@mipmap/right_dimens" />
|
||||||
android:src="@mipmap/right_dimens"
|
|
||||||
/>
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignTop="@+id/iv_back"
|
||||||
|
android:layout_alignBottom="@+id/iv_back"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="Store"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_16" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_below="@+id/iv_back">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recycler_vip"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_coin_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_15"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:text="Top Up | Indefinitely use"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_13"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/recycler_coin_big"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/recycler_vip" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recycler_coin_big"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_10"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/tv_coin_title" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recycler_coin"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_10"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/recycler_coin_big" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_tips"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_15"
|
||||||
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
|
android:layout_marginBottom="@dimen/dp_15"
|
||||||
|
android:lineSpacingExtra="@dimen/dp_2"
|
||||||
|
android:text="@string/ve_store_tips"
|
||||||
|
android:textColor="@color/white50"
|
||||||
|
android:textSize="@dimen/sp_12"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/recycler_coin" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:id="@+id/ll_item"
|
android:id="@+id/ll_item"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dp_108"
|
android:layout_height="@dimen/dp_108"
|
||||||
android:background="@drawable/bg_store_coin_bg"
|
android:background="@mipmap/bg_store_coin_bg"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical">
|
||||||
tools:background="@color/black">
|
|
||||||
|
|
||||||
<com.hjq.shape.view.ShapeTextView
|
<com.hjq.shape.view.ShapeTextView
|
||||||
android:id="@+id/tv_hot"
|
android:id="@+id/tv_hot"
|
||||||
@ -37,18 +35,17 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_coins"
|
android:id="@+id/tv_coins"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="@dimen/dp_25"
|
android:layout_marginTop="@dimen/dp_25"
|
||||||
|
android:drawableEnd="@mipmap/start_text"
|
||||||
|
android:drawablePadding="@dimen/dp_3"
|
||||||
android:fontFamily="sans-serif-medium"
|
android:fontFamily="sans-serif-medium"
|
||||||
android:text="+500"
|
android:text="+500"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:drawableEnd="@mipmap/start_text"
|
|
||||||
android:drawablePadding="@dimen/dp_3"
|
|
||||||
android:textSize="@dimen/sp_16"
|
android:textSize="@dimen/sp_16"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@ -68,16 +65,17 @@
|
|||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tv_price"
|
android:id="@+id/tv_price"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:background="@drawable/bg_store_coin_money_bottom"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:paddingVertical="@dimen/dp_5"
|
||||||
android:text=""
|
android:text=""
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="@dimen/sp_12"
|
android:textSize="@dimen/sp_12"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_bonus" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/tv_select"
|
android:id="@+id/tv_select"
|
||||||
|
93
app/src/main/res/layout/item_ve_store_coin_big.xml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?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:id="@+id/ll_item"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_108"
|
||||||
|
android:background="@drawable/bg_store_coin_off"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/tv_hot"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_2"
|
||||||
|
android:layout_marginTop="@dimen/dp_2"
|
||||||
|
android:src="@mipmap/iv_store_vip_big_hot"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<com.hjq.shape.view.ShapeTextView
|
||||||
|
android:id="@+id/tv_corner"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/bg_coin_big_right"
|
||||||
|
android:paddingHorizontal="@dimen/dp_2"
|
||||||
|
android:paddingVertical="@dimen/dp_2"
|
||||||
|
android:text=""
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_10"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_coins"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:layout_marginTop="@dimen/dp_25"
|
||||||
|
android:drawableEnd="@mipmap/start_text"
|
||||||
|
android:drawablePadding="@dimen/dp_3"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
|
android:text="+500"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_16"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_bonus"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_5"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textColor="#FFC779"
|
||||||
|
android:textSize="@dimen/sp_12"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/tv_coins" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_price"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_1"
|
||||||
|
android:background="@drawable/bg_store_coin_money_bottom_big"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingVertical="@dimen/dp_5"
|
||||||
|
android:text=""
|
||||||
|
android:textColor="#683D00"
|
||||||
|
android:textSize="@dimen/sp_12"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/tv_bonus" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/tv_select"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:background="@drawable/bg_coin_left_big"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingHorizontal="@dimen/dp_5"
|
||||||
|
android:src="@mipmap/iv_yes"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,57 +1,95 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/rl_layout"
|
android:id="@+id/rl_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_135"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_15"
|
||||||
|
android:layout_marginBottom="@dimen/dp_10"
|
||||||
android:background="@mipmap/iv_store_vip_bg_1">
|
android:background="@mipmap/iv_store_vip_bg_1">
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tv_day"
|
android:id="@+id/tv_day"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
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_32"
|
android:layout_marginTop="@dimen/dp_20"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:text="Weekly VIP"
|
android:text="Weekly VIP"
|
||||||
android:textColor="#64A3A7"
|
android:textColor="#647DA7"
|
||||||
android:textSize="@dimen/sp_16"
|
android:textSize="@dimen/sp_12" />
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tv_money"
|
android:id="@+id/tv_money"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/tv_day"
|
android:layout_below="@+id/tv_day"
|
||||||
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_5"
|
|
||||||
android:text="0"
|
android:text="0"
|
||||||
android:textColor="#64A3A7"
|
android:textColor="#647DA7"
|
||||||
android:textSize="@dimen/sp_22"
|
android:textSize="@dimen/sp_32"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tv_money_day"
|
android:id="@+id/tv_money_day"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignBottom="@+id/tv_money"
|
android:layout_alignBottom="@+id/tv_money"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginBottom="@dimen/dp_3"
|
android:layout_marginBottom="@dimen/dp_6"
|
||||||
android:layout_toEndOf="@+id/tv_money"
|
android:layout_toEndOf="@+id/tv_money"
|
||||||
android:text="/Week"
|
android:text="/Week"
|
||||||
android:textColor="#64A3A7"
|
android:textColor="#647DA7"
|
||||||
android:textSize="@dimen/sp_14" />
|
android:textSize="@dimen/sp_16" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_description"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/tv_money"
|
||||||
|
android:layout_marginStart="@dimen/dp_14"
|
||||||
|
android:background="@drawable/bg_store_vip_text_1"
|
||||||
|
android:paddingHorizontal="@dimen/dp_7"
|
||||||
|
android:paddingVertical="@dimen/dp_3"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="Unlimited access to all series for 1 week"
|
||||||
|
android:textColor="#303962"
|
||||||
|
android:textSize="@dimen/sp_10" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_info"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/tv_description"
|
||||||
|
android:layout_marginStart="@dimen/dp_14"
|
||||||
|
android:layout_marginTop="@dimen/dp_2"
|
||||||
|
android:layout_toStartOf="@+id/tv_extra"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="Auto renew, cancel anytime"
|
||||||
|
android:textColor="#8790B7"
|
||||||
|
android:textSize="@dimen/sp_10" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_expire"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/tv_info"
|
||||||
|
android:layout_marginStart="@dimen/dp_14"
|
||||||
|
android:layout_marginTop="@dimen/dp_2"
|
||||||
|
android:layout_toStartOf="@+id/tv_extra"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="The donate coins will expire in 8 days"
|
||||||
|
android:textColor="#8790B7"
|
||||||
|
android:textSize="@dimen/sp_10" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tv_extra"
|
android:id="@+id/tv_extra"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/tv_money_day"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_marginStart="@dimen/dp_15"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_marginTop="@dimen/dp_8"
|
|
||||||
android:layout_marginBottom="@dimen/dp_10"
|
|
||||||
android:background="@drawable/bg_store_vip_1"
|
android:background="@drawable/bg_store_vip_1"
|
||||||
android:drawableEnd="@mipmap/start_text"
|
android:drawableEnd="@mipmap/start_text"
|
||||||
android:drawablePadding="@dimen/dp_5"
|
android:drawablePadding="@dimen/dp_5"
|
||||||
@ -59,14 +97,14 @@
|
|||||||
android:paddingHorizontal="@dimen/dp_10"
|
android:paddingHorizontal="@dimen/dp_10"
|
||||||
android:paddingVertical="@dimen/dp_3"
|
android:paddingVertical="@dimen/dp_3"
|
||||||
android:text="+Extra 500"
|
android:text="+Extra 500"
|
||||||
android:textColor="#416767"
|
android:textColor="#214170"
|
||||||
android:textSize="@dimen/sp_12" />
|
android:textSize="@dimen/sp_12" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/tv_select"
|
android:id="@+id/tv_select"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dp_18"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:background="@drawable/bg_coin_left"
|
android:background="@drawable/bg_coin_left"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingHorizontal="@dimen/dp_8"
|
android:paddingHorizontal="@dimen/dp_8"
|
||||||
|
@ -1,104 +1,114 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@mipmap/strings_layout">
|
android:background="@mipmap/strings_layout">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_close_dialog"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
|
android:layout_marginEnd="@dimen/dp_15"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:src="@mipmap/banner_bean"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_coins_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_15"
|
||||||
|
android:layout_marginTop="@dimen/dp_20"
|
||||||
|
android:text="@string/your_coins"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_coins"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignTop="@+id/tv_coins_text"
|
||||||
|
android:layout_marginStart="@dimen/dp_5"
|
||||||
|
android:layout_toRightOf="@+id/tv_coins_text"
|
||||||
|
android:drawablePadding="@dimen/dp_2"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text=""
|
||||||
|
android:textColor="#05CEA0"
|
||||||
|
app:drawableEndCompat="@mipmap/start_text"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/tv_coins_text"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/tv_coins_text"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/tv_coins_text" />
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:layout_below="@+id/iv_close_dialog"
|
||||||
|
android:layout_marginTop="@dimen/dp_7">
|
||||||
|
|
||||||
<TextView
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/tv_coins_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="@dimen/dp_15"
|
|
||||||
android:layout_marginTop="@dimen/dp_42"
|
|
||||||
android:text="@string/your_coins"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_coins"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="@dimen/dp_5"
|
|
||||||
android:drawablePadding="@dimen/dp_2"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:text=""
|
|
||||||
android:textColor="#05CEA0"
|
|
||||||
app:drawableEndCompat="@mipmap/start_text"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/tv_coins_text"
|
|
||||||
app:layout_constraintStart_toEndOf="@+id/tv_coins_text"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/tv_coins_text" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:id="@+id/iv_close_dialog"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:layout_marginTop="@dimen/dp_15"
|
|
||||||
android:layout_marginEnd="@dimen/dp_15"
|
|
||||||
android:padding="10dp"
|
|
||||||
android:src="@mipmap/banner_bean"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<com.youth.banner.Banner
|
|
||||||
android:id="@+id/banner_vip"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dp_135"
|
android:layout_height="match_parent">
|
||||||
android:layout_marginTop="@dimen/dp_12"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:banner_auto_loop="false"
|
|
||||||
app:banner_infinite_loop="false"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/tv_buy_hint"
|
android:id="@+id/recycler_vip"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="@dimen/dp_15"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
android:background="@drawable/bg_player_buy_hint"
|
|
||||||
android:visibility="gone"
|
|
||||||
android:lineSpacingExtra="@dimen/dp_5"
|
|
||||||
android:paddingHorizontal="@dimen/dp_15"
|
|
||||||
android:paddingVertical="@dimen/dp_10"
|
|
||||||
android:text="@string/unlimited_access_to_all_series_for_1"
|
|
||||||
android:textColor="@color/white80"
|
|
||||||
android:textSize="@dimen/sp_12"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/banner_vip" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/recycler_coin"
|
android:id="@+id/tv_coin_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/dp_15"
|
android:layout_marginStart="@dimen/dp_15"
|
||||||
android:layout_marginTop="@dimen/dp_15"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
android:text="Top Up | Indefinitely use"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_buy_hint" />
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_13"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/recycler_coin_big"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/recycler_vip" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/tv_tips"
|
android:id="@+id/recycler_coin_big"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="@dimen/dp_15"
|
android:layout_marginHorizontal="@dimen/dp_10"
|
||||||
android:layout_marginTop="@dimen/dp_12"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:layout_marginBottom="@dimen/dp_15"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
android:lineSpacingExtra="@dimen/dp_2"
|
app:layout_constraintTop_toBottomOf="@+id/tv_coin_title" />
|
||||||
android:text="@string/ve_store_tips"
|
|
||||||
android:textColor="@color/white50"
|
|
||||||
android:textSize="@dimen/sp_12"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/recycler_coin" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recycler_coin"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_10"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/recycler_coin_big" />
|
||||||
|
|
||||||
</androidx.core.widget.NestedScrollView>
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/tv_tips"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_15"
|
||||||
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
|
android:layout_marginBottom="@dimen/dp_15"
|
||||||
|
android:lineSpacingExtra="@dimen/dp_2"
|
||||||
|
android:text="@string/ve_store_tips"
|
||||||
|
android:textColor="@color/white50"
|
||||||
|
android:textSize="@dimen/sp_12"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/recycler_coin" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
BIN
app/src/main/res/mipmap-xxhdpi/bg_store_coin_bg.png
Normal file
After Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 25 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_store_vip_big_hot.png
Normal file
After Width: | Height: | Size: 3.2 KiB |