veloria two 6.16 commit
This commit is contained in:
parent
85994237a8
commit
41c7432edb
@ -14,8 +14,8 @@ android {
|
|||||||
applicationId = "com.veloria.now.shortapp"
|
applicationId = "com.veloria.now.shortapp"
|
||||||
minSdk = 24
|
minSdk = 24
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 3
|
versionCode = 4
|
||||||
versionName = "1.0.2"
|
versionName = "1.0.3"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
@ -22,4 +22,8 @@ object TranslationHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun replaces(string: String, new1: String, new2: String): String {
|
||||||
|
val replace = string.replace("##", new1)
|
||||||
|
return replace.replace("#1#", new2)
|
||||||
|
}
|
||||||
}
|
}
|
@ -13,7 +13,6 @@ 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
|
||||||
@ -36,12 +35,13 @@ import com.veloria.now.shortapp.civil.YFHome
|
|||||||
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.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 +52,7 @@ 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 vipAdapter: VeStoreVipAdapter? = null
|
private var bannerAdapter: VeBannerVipPayAdapter? = 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
|
||||||
@ -68,6 +68,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
|
|
||||||
private var isBuy = false
|
private var isBuy = false
|
||||||
private var purchaseData: Purchase? = null
|
private var purchaseData: Purchase? = null
|
||||||
|
private var parcelable: XAboutBean.Episode? = null
|
||||||
|
|
||||||
interface OnDataPassOnClick {
|
interface OnDataPassOnClick {
|
||||||
fun onDataPassOnClick(data: VePaySettingsBean.CoinsBean?)
|
fun onDataPassOnClick(data: VePaySettingsBean.CoinsBean?)
|
||||||
@ -82,7 +83,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
val inflater = requireActivity().layoutInflater
|
val inflater = requireActivity().layoutInflater
|
||||||
val view = inflater.inflate(R.layout.layout_ve_player_buy_dialog, null)
|
val view = inflater.inflate(R.layout.layout_ve_player_buy_dialog, null)
|
||||||
binding = LayoutVePlayerBuyDialogBinding.bind(view)
|
binding = LayoutVePlayerBuyDialogBinding.bind(view)
|
||||||
val parcelable =
|
parcelable =
|
||||||
arguments?.getParcelable<XAboutBean.Episode>(JActivityAdapter.BUY_EPISODE)
|
arguments?.getParcelable<XAboutBean.Episode>(JActivityAdapter.BUY_EPISODE)
|
||||||
short_play_id = parcelable?.short_play_id
|
short_play_id = parcelable?.short_play_id
|
||||||
promise_view_ad = parcelable?.promise_view_ad
|
promise_view_ad = parcelable?.promise_view_ad
|
||||||
@ -137,44 +138,16 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
vipAdapter = VeStoreVipAdapter()
|
|
||||||
binding?.recyclerVip?.layoutManager =
|
|
||||||
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
|
||||||
binding?.recyclerVip?.adapter = vipAdapter
|
|
||||||
showLoading()
|
showLoading()
|
||||||
viewModel.getPaySettingsV3(0, 0)
|
viewModel.getPaySettingsV3(0, 0)
|
||||||
|
|
||||||
vipAdapter?.setOnItemClickListener { adapter, view, position ->
|
|
||||||
if (typeOnClick == 0) {
|
|
||||||
coinAdapter?.currentPosition = -1
|
|
||||||
coinAdapter?.notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
typeOnClick = 1
|
|
||||||
vipAdapter?.currentPosition = position
|
|
||||||
vipAdapter?.notifyDataSetChanged()
|
|
||||||
|
|
||||||
vipData = vipAdapter!!.getItem(position) as VePaySettingsBean.VipBean
|
|
||||||
|
|
||||||
if (parcelable != null) {
|
|
||||||
short_play_id?.let {
|
|
||||||
VeCreatePayOrderReqBean(
|
|
||||||
vipData?.id.toString(),
|
|
||||||
"google",
|
|
||||||
it,
|
|
||||||
parcelable.short_play_video_id
|
|
||||||
)
|
|
||||||
}?.let {
|
|
||||||
viewModel.setCreatePayOrder(
|
|
||||||
it
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
if (typeOnClick == 1) {
|
if (typeOnClick == 1) {
|
||||||
vipAdapter?.currentPosition = -1
|
if (bannerAdapter?.currentPosition!! >= 0) {
|
||||||
vipAdapter?.notifyDataSetChanged()
|
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
|
||||||
|
}
|
||||||
|
bannerAdapter?.oldPosition = -1
|
||||||
|
bannerAdapter?.currentPosition = -1
|
||||||
}
|
}
|
||||||
typeOnClick = 0
|
typeOnClick = 0
|
||||||
coinAdapter?.currentPosition = position
|
coinAdapter?.currentPosition = position
|
||||||
@ -189,7 +162,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
coinsData?.id.toString(),
|
coinsData?.id.toString(),
|
||||||
"google",
|
"google",
|
||||||
it,
|
it,
|
||||||
parcelable.short_play_video_id
|
parcelable!!.short_play_video_id
|
||||||
)
|
)
|
||||||
}?.let {
|
}?.let {
|
||||||
viewModel.setCreatePayOrder(
|
viewModel.setCreatePayOrder(
|
||||||
@ -216,12 +189,93 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
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 =
|
||||||
|
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
||||||
|
showLoading()
|
||||||
|
if (parcelable != null) {
|
||||||
|
short_play_id?.let {
|
||||||
|
VeCreatePayOrderReqBean(
|
||||||
|
vipData?.id.toString(),
|
||||||
|
"google",
|
||||||
|
it,
|
||||||
|
parcelable!!.short_play_video_id
|
||||||
|
)
|
||||||
|
}?.let {
|
||||||
|
viewModel.setCreatePayOrder(
|
||||||
|
it
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
coinAdapter?.submitList(it.data.list_coins)
|
||||||
vipAdapter?.submitList(it.data.list_sub_vip)
|
if (it.data.list_sub_vip.isNotEmpty()) {
|
||||||
|
binding?.tvBuyHint?.visibility = View.VISIBLE
|
||||||
|
binding?.bannerVip?.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()
|
||||||
|
}
|
||||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||||
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
||||||
}
|
}
|
||||||
@ -266,9 +320,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
} else {
|
} else {
|
||||||
toast(getString(R.string.shapeSelected))
|
toast(getString(R.string.shapeSelected))
|
||||||
}
|
}
|
||||||
hideLoading()
|
|
||||||
}
|
}
|
||||||
|
hideLoading()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -389,8 +442,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
|||||||
} ?: vip
|
} ?: vip
|
||||||
}
|
}
|
||||||
|
|
||||||
vipAdapter?.recyclerView?.postDelayed({
|
binding?.root?.postDelayed({
|
||||||
vipAdapter?.submitList(updatedVipList)
|
bannerAdapter?.setDatas(updatedVipList)
|
||||||
hideLoading()
|
hideLoading()
|
||||||
}, 500)
|
}, 500)
|
||||||
} else {
|
} else {
|
||||||
|
@ -571,7 +571,7 @@ class MQVAutoWidthActivity :
|
|||||||
if (marqueeo < 162.0f) {
|
if (marqueeo < 162.0f) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showLoading()
|
||||||
viewModel.getVideoPlayDetails(shortPlayId, 0, activityId, revolution)
|
viewModel.getVideoPlayDetails(shortPlayId, 0, activityId, revolution)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -624,7 +624,6 @@ class MQVAutoWidthActivity :
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
showLoading()
|
|
||||||
var appendK: MutableMap<String, Float> = mutableMapOf<String, Float>()
|
var appendK: MutableMap<String, Float> = mutableMapOf<String, Float>()
|
||||||
appendK.put("decklink", 519.0f)
|
appendK.put("decklink", 519.0f)
|
||||||
appendK.put("flattened", 285.0f)
|
appendK.put("flattened", 285.0f)
|
||||||
@ -1904,10 +1903,11 @@ class MQVAutoWidthActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
viewModel.detailsRecommendLiveData.observe(this) {
|
viewModel.detailsRecommendLiveData.observe(this) {
|
||||||
|
hideLoading()
|
||||||
it?.data?.let {
|
it?.data?.let {
|
||||||
setDetailsRecommendation(it)
|
setDetailsRecommendation(it)
|
||||||
} ?: finish()
|
} ?: finish()
|
||||||
hideLoading()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.userInfo.observe(this) {
|
viewModel.userInfo.observe(this) {
|
||||||
|
@ -845,6 +845,7 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
|||||||
)
|
)
|
||||||
needSave = true
|
needSave = true
|
||||||
w2aSelfAttribution(clipContent)
|
w2aSelfAttribution(clipContent)
|
||||||
|
RYAction.getMMKV().putString(JActivityAdapter.HOME_DDL_URL, "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -976,7 +977,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
|||||||
// setDeeplinkFbApi(facebook_id)
|
// setDeeplinkFbApi(facebook_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
singleOnClick {
|
||||||
data?.let { viewModel.setW2aSelfAttribution(it) }
|
data?.let { viewModel.setW2aSelfAttribution(it) }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -30,11 +30,13 @@ 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.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>() {
|
||||||
@ -44,11 +46,11 @@ 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 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 payBeanReq: VePayBean? = null
|
private var payBeanReq: VePayBean? = null
|
||||||
|
|
||||||
private var billingClientData: BillingClient? = null
|
private var billingClientData: BillingClient? = null
|
||||||
@ -123,28 +125,16 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
vipAdapter = VeStoreVipAdapter()
|
|
||||||
binding.recyclerVip.layoutManager =
|
|
||||||
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
|
|
||||||
binding.recyclerVip.adapter = vipAdapter
|
|
||||||
|
|
||||||
viewModel.getPaySettingsV3(0, 0)
|
viewModel.getPaySettingsV3(0, 0)
|
||||||
|
|
||||||
vipAdapter?.setOnItemClickListener { adapter, view, position ->
|
|
||||||
if (typeOnClick == 0) {
|
|
||||||
coinAdapter?.currentPosition = -1
|
|
||||||
coinAdapter?.notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
typeOnClick = 1
|
|
||||||
vipAdapter?.currentPosition = position
|
|
||||||
vipAdapter?.notifyDataSetChanged()
|
|
||||||
|
|
||||||
setOnPayNowClick()
|
|
||||||
}
|
|
||||||
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
coinAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||||
if (typeOnClick == 1) {
|
if (typeOnClick == 1) {
|
||||||
vipAdapter?.currentPosition = -1
|
if (bannerAdapter?.currentPosition!! >= 0) {
|
||||||
vipAdapter?.notifyDataSetChanged()
|
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
|
||||||
|
}
|
||||||
|
bannerAdapter?.oldPosition = -1
|
||||||
|
bannerAdapter?.currentPosition = -1
|
||||||
}
|
}
|
||||||
typeOnClick = 0
|
typeOnClick = 0
|
||||||
coinAdapter?.currentPosition = position
|
coinAdapter?.currentPosition = position
|
||||||
@ -156,6 +146,61 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
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 {
|
||||||
if (!isConnect) {
|
if (!isConnect) {
|
||||||
@ -170,7 +215,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
coinAdapter!!.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
coinAdapter!!.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||||
} else {
|
} else {
|
||||||
vipData =
|
vipData =
|
||||||
vipAdapter!!.getItem(vipAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
bannerAdapter?.getData(bannerAdapter!!.currentPosition) as VePaySettingsBean.VipBean
|
||||||
}
|
}
|
||||||
showLoading()
|
showLoading()
|
||||||
viewModel.setCreatePayOrder(
|
viewModel.setCreatePayOrder(
|
||||||
@ -187,8 +232,25 @@ 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_coins.isNotEmpty() && it.data.list_sub_vip.isNotEmpty()){
|
||||||
|
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)
|
coinAdapter?.submitList(it.data.list_coins)
|
||||||
vipAdapter?.submitList(it.data.list_sub_vip)
|
|
||||||
|
|
||||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||||
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
||||||
@ -356,8 +418,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
|||||||
} ?: vip
|
} ?: vip
|
||||||
}
|
}
|
||||||
|
|
||||||
vipAdapter?.recyclerView?.postDelayed({
|
binding.root.postDelayed({
|
||||||
vipAdapter?.submitList(updatedVipList)
|
bannerAdapter?.setDatas(updatedVipList)
|
||||||
hideLoading()
|
hideLoading()
|
||||||
}, 500)
|
}, 500)
|
||||||
} else {
|
} else {
|
||||||
|
@ -0,0 +1,119 @@
|
|||||||
|
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.RelativeLayout
|
||||||
|
import androidx.appcompat.widget.AppCompatImageView
|
||||||
|
import androidx.appcompat.widget.AppCompatTextView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.veloria.now.shortapp.R
|
||||||
|
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||||
|
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||||
|
import com.youth.banner.adapter.BannerAdapter
|
||||||
|
|
||||||
|
class VeBannerVipPayAdapter(items: List<VePaySettingsBean.VipBean?>?) :
|
||||||
|
BannerAdapter<VePaySettingsBean.VipBean, VeBannerVipPayAdapter.BannerViewHolder>(
|
||||||
|
items
|
||||||
|
) {
|
||||||
|
|
||||||
|
var oldPosition = -1
|
||||||
|
var currentPosition = -1
|
||||||
|
|
||||||
|
override fun onCreateHolder(parent: ViewGroup, viewType: Int): BannerViewHolder {
|
||||||
|
val view: View = LayoutInflater.from(parent.context)
|
||||||
|
.inflate(R.layout.item_ve_store_vip, parent, false)
|
||||||
|
view.layoutParams = ViewGroup.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
|
ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
|
)
|
||||||
|
return BannerViewHolder(view)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBindView(
|
||||||
|
holder: BannerViewHolder?,
|
||||||
|
item: VePaySettingsBean.VipBean?,
|
||||||
|
position: Int,
|
||||||
|
size: Int
|
||||||
|
) {
|
||||||
|
if (null != item) {
|
||||||
|
val tvDay =
|
||||||
|
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_day)
|
||||||
|
val tvMoney =
|
||||||
|
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_money)
|
||||||
|
val tvMoneyDay =
|
||||||
|
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_money_day)
|
||||||
|
val tvExtra =
|
||||||
|
holder?.view?.findViewById<AppCompatTextView>(R.id.tv_extra)
|
||||||
|
val tvSelect =
|
||||||
|
holder?.view?.findViewById<AppCompatImageView>(R.id.tv_select)
|
||||||
|
val rlLayout =
|
||||||
|
holder?.view?.findViewById<RelativeLayout>(R.id.rl_layout)
|
||||||
|
|
||||||
|
tvDay?.text = item.brief
|
||||||
|
tvMoney?.text = item.price_google
|
||||||
|
tvMoneyDay?.text = "/".plus(item.vip_type_key)
|
||||||
|
if ((item.send_coins ?: 0) > 0) {
|
||||||
|
tvExtra?.text =
|
||||||
|
"+".plus(
|
||||||
|
TranslationHelper.getTranslation()
|
||||||
|
?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra")
|
||||||
|
.plus(" ").plus(item.send_coins)
|
||||||
|
tvExtra?.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
tvExtra?.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPosition == position) {
|
||||||
|
tvSelect?.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
tvSelect?.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
when (item.vip_type_key) {
|
||||||
|
"week" -> {
|
||||||
|
rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_1)
|
||||||
|
tvDay?.setTextColor(Color.parseColor("#64A3A7"))
|
||||||
|
tvMoney?.setTextColor(Color.parseColor("#64A3A7"))
|
||||||
|
tvMoneyDay?.setTextColor(Color.parseColor("#64A3A7"))
|
||||||
|
tvExtra?.setTextColor(Color.parseColor("#416767"))
|
||||||
|
tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_1)
|
||||||
|
}
|
||||||
|
|
||||||
|
"month" -> {
|
||||||
|
rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_2)
|
||||||
|
tvDay?.setTextColor(Color.parseColor("#9C7565"))
|
||||||
|
tvMoney?.setTextColor(Color.parseColor("#9C7565"))
|
||||||
|
tvMoneyDay?.setTextColor(Color.parseColor("#9C7565"))
|
||||||
|
tvExtra?.setTextColor(Color.parseColor("#573D31"))
|
||||||
|
tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_2)
|
||||||
|
}
|
||||||
|
|
||||||
|
"quarter" -> {
|
||||||
|
rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_3)
|
||||||
|
tvDay?.setTextColor(Color.parseColor("#647DA7"))
|
||||||
|
tvMoney?.setTextColor(Color.parseColor("#647DA7"))
|
||||||
|
tvMoneyDay?.setTextColor(Color.parseColor("#647DA7"))
|
||||||
|
tvExtra?.setTextColor(Color.parseColor("#303962"))
|
||||||
|
tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_3)
|
||||||
|
}
|
||||||
|
|
||||||
|
"year" -> {
|
||||||
|
rlLayout?.setBackgroundResource(R.mipmap.iv_store_vip_bg_4)
|
||||||
|
tvDay?.setTextColor(Color.parseColor("#9C6586"))
|
||||||
|
tvMoney?.setTextColor(Color.parseColor("#9C6586"))
|
||||||
|
tvMoneyDay?.setTextColor(Color.parseColor("#9C6586"))
|
||||||
|
tvExtra?.setTextColor(Color.parseColor("#674162"))
|
||||||
|
tvExtra?.setBackgroundResource(R.drawable.bg_store_vip_4)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class BannerViewHolder(var view: View) : RecyclerView.ViewHolder(
|
||||||
|
view
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
@ -60,6 +60,7 @@
|
|||||||
android:id="@+id/ll_tab"
|
android:id="@+id/ll_tab"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dp_45"
|
android:layout_height="@dimen/dp_45"
|
||||||
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
@ -92,6 +93,7 @@
|
|||||||
android:id="@+id/fl_tab"
|
android:id="@+id/fl_tab"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="visible"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/ll_tab">
|
app:layout_constraintTop_toBottomOf="@+id/ll_tab">
|
||||||
|
|
||||||
@ -100,7 +102,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:paddingHorizontal="@dimen/dp_10"
|
android:paddingHorizontal="@dimen/dp_10"
|
||||||
android:paddingVertical="@dimen/dp_15"
|
android:paddingTop="@dimen/dp_15"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -154,7 +156,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:paddingHorizontal="@dimen/dp_10"
|
android:paddingHorizontal="@dimen/dp_10"
|
||||||
android:paddingVertical="@dimen/dp_15"
|
android:paddingTop="@dimen/dp_15"
|
||||||
android:visibility="visible">
|
android:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -240,15 +242,16 @@
|
|||||||
app:layout_constraintStart_toEndOf="@+id/tv_vip_content2"
|
app:layout_constraintStart_toEndOf="@+id/tv_vip_content2"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
|
app:layout_constraintTop_toBottomOf="@+id/tv_vip_text" />
|
||||||
|
|
||||||
|
<com.youth.banner.Banner
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
android:id="@+id/banner_vip"
|
||||||
android:id="@+id/recycler_vip"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_135"
|
||||||
android:layout_marginTop="@dimen/dp_12"
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
|
app:banner_auto_loop="false"
|
||||||
|
app:banner_infinite_loop="false"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1" />
|
app:layout_constraintTop_toBottomOf="@+id/tv_vip_content1"
|
||||||
|
/>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
@ -260,6 +263,7 @@
|
|||||||
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_15"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:lineSpacingExtra="@dimen/dp_2"
|
android:lineSpacingExtra="@dimen/dp_2"
|
||||||
android:text="@string/ve_store_tips"
|
android:text="@string/ve_store_tips"
|
||||||
android:textColor="@color/white50"
|
android:textColor="@color/white50"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?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="@dimen/dp_330"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginEnd="@dimen/dp_12"
|
android:id="@+id/rl_layout"
|
||||||
android:background="@mipmap/iv_store_vip_bg_1">
|
android:background="@mipmap/iv_store_vip_bg_1">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -46,16 +46,17 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<com.youth.banner.Banner
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
android:id="@+id/banner_vip"
|
||||||
android:id="@+id/recycler_vip"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/dp_135"
|
||||||
android:layout_marginStart="@dimen/dp_15"
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
android:layout_marginTop="@dimen/dp_15"
|
android:visibility="gone"
|
||||||
|
app:banner_auto_loop="false"
|
||||||
|
app:banner_infinite_loop="false"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text" />
|
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text"
|
||||||
|
/>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tv_buy_hint"
|
android:id="@+id/tv_buy_hint"
|
||||||
@ -64,6 +65,7 @@
|
|||||||
android:layout_marginHorizontal="@dimen/dp_15"
|
android:layout_marginHorizontal="@dimen/dp_15"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:background="@drawable/bg_player_buy_hint"
|
android:background="@drawable/bg_player_buy_hint"
|
||||||
|
android:visibility="gone"
|
||||||
android:lineSpacingExtra="@dimen/dp_5"
|
android:lineSpacingExtra="@dimen/dp_5"
|
||||||
android:paddingHorizontal="@dimen/dp_15"
|
android:paddingHorizontal="@dimen/dp_15"
|
||||||
android:paddingVertical="@dimen/dp_10"
|
android:paddingVertical="@dimen/dp_10"
|
||||||
@ -71,7 +73,7 @@
|
|||||||
android:textColor="@color/white80"
|
android:textColor="@color/white80"
|
||||||
android:textSize="@dimen/sp_12"
|
android:textSize="@dimen/sp_12"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/recycler_vip" />
|
app:layout_constraintTop_toBottomOf="@+id/banner_vip" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recycler_coin"
|
android:id="@+id/recycler_coin"
|
||||||
|
@ -42,7 +42,13 @@
|
|||||||
<string name="feedback_history">Feedback History</string>
|
<string name="feedback_history">Feedback History</string>
|
||||||
<string name="feedback_detail">Feedback Detail</string>
|
<string name="feedback_detail">Feedback Detail</string>
|
||||||
<string name="unlimited_access_to_all_series_for_1">· Unlimited access to all series for 1 week (No Ads).\n· The donate coins will expire in 8 days.\n· Auto renew, cancel anytime.</string>
|
<string name="unlimited_access_to_all_series_for_1">· Unlimited access to all series for 1 week (No Ads).\n· The donate coins will expire in 8 days.\n· Auto renew, cancel anytime.</string>
|
||||||
<string name="unlimited_access_to_all_series_for_1_br"><![CDATA[· Unlimited access to all series for 1 week (No Ads).<br>· The donate coins will expire in 8 days.<br>· Auto renew, cancel anytime.]]></string>
|
<string name="unlimited_access_to_all_series_for_1_br">
|
||||||
|
<![CDATA[
|
||||||
|
· Unlimited access to all series for <font color="#05CEA0">1 ##</font> (No Ads).<br>
|
||||||
|
· The donate coins will expire in <font color="#05CEA0">#1# days</font>.<br>
|
||||||
|
· Auto renew, cancel anytime.
|
||||||
|
]]>
|
||||||
|
</string>
|
||||||
<string name="your_coins">Your Coins:</string>
|
<string name="your_coins">Your Coins:</string>
|
||||||
<string name="language">Language</string>
|
<string name="language">Language</string>
|
||||||
<string name="welcome_to_veloria">Welcome to Veloria</string>
|
<string name="welcome_to_veloria">Welcome to Veloria</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user