veloria three 6.25 commit
@ -17,8 +17,8 @@ android {
|
||||
applicationId = "com.veloria.now.shortapp"
|
||||
minSdk = 24
|
||||
targetSdk = 34
|
||||
versionCode = 5
|
||||
versionName = "1.0.4"
|
||||
versionCode = 8
|
||||
versionName = "1.0.6"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@ -105,7 +105,7 @@ dependencies {
|
||||
// banner
|
||||
implementation(libs.banner)
|
||||
implementation(libs.glide)
|
||||
implementation("com.github.zhpanvip:bannerviewpager:3.5.12")
|
||||
implementation(libs.bannerviewpager)
|
||||
|
||||
//utils
|
||||
implementation(libs.greenrobot.eventbus)
|
||||
|
5
app/proguard-rules.pro
vendored
@ -317,4 +317,7 @@
|
||||
#unity
|
||||
-keep class com.google.android.gms.ads.** {public *;}
|
||||
-keep class com.google.android.gms.appset.** { *; }
|
||||
-keep class com.google.android.gms.tasks.** { *; }
|
||||
-keep class com.google.android.gms.tasks.** { *; }
|
||||
|
||||
-keep class androidx.recyclerview.widget.**{*;}
|
||||
-keep class androidx.viewpager2.widget.**{*;}
|
@ -93,6 +93,7 @@ object JActivityAdapter {
|
||||
const val HOME_USER_REFRESH = "HOME_USER_REFRESH"
|
||||
const val HOME_REFRESH_ME = "HOME_REFRESH_ME"
|
||||
const val HOME_LOGIN = "HOME_LOGIN"
|
||||
const val REWARD_LOGIN = "REWARD_LOGIN"
|
||||
const val HOME_LEAVE_APP = "HOME_LEAVE_APP"
|
||||
const val HOME_ON_LINE = "HOME_ON_LINE"
|
||||
const val HOME_DDL_URL = "HOME_DDL_URL"
|
||||
@ -110,10 +111,14 @@ object JActivityAdapter {
|
||||
const val ACCOUNT_DIALOG_TIME_VIP_SPLASH = "ACCOUNT_DIALOG_TIME_VIP_SPLASH"
|
||||
const val ONE_DAY_IN_MILLIS_VIP = 60 * 60 * 1000L
|
||||
|
||||
const val ACCOUNT_VERSION_CONTROL_TIME =
|
||||
"ACCOUNT_VERSION_CONTROL_TIME"
|
||||
const val ACCOUNT_DIALOG_TIME_NOTIFICATIONS =
|
||||
"ACCOUNT_DIALOG_TIME_NOTIFICATIONS"
|
||||
const val ONE_DAY_IN_MILLIS_DAY = 24 * 60 * 60 * 1000L
|
||||
|
||||
const val ACCOUNT_FIREBASE_TOKEN_REFRESH = "ACCOUNT_FIREBASE_TOKEN_REFRESH"
|
||||
|
||||
const val ACCOUNT_WEB_NOTIFICATION = "ACCOUNT_WEB_NOTIFICATION"
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter.ONE_DAY_IN_MILLIS_DAY
|
||||
import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import java.text.SimpleDateFormat
|
||||
import java.time.Duration
|
||||
@ -636,4 +637,11 @@ fun setShowNotifications(): Boolean {
|
||||
val currentTime = System.currentTimeMillis()
|
||||
|
||||
return currentTime - lastTime > JActivityAdapter.ONE_DAY_IN_MILLIS_DAY
|
||||
}
|
||||
|
||||
fun shouldVersionControl(): Boolean {
|
||||
val lastPopupTime = RYAction.getMMKV().getLong(JActivityAdapter.ACCOUNT_VERSION_CONTROL_TIME, 0)
|
||||
val currentTime = System.currentTimeMillis()
|
||||
|
||||
return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS_DAY
|
||||
}
|
@ -474,7 +474,7 @@ object RYAction {
|
||||
|
||||
fun saveOrder(payReq: VePayBean) {
|
||||
val list = getOrder()
|
||||
if (!list.contains(payReq)) {
|
||||
if (!list.contains(payReq) && payReq.order_code.isNotEmpty()) {
|
||||
list.add(payReq)
|
||||
}
|
||||
val toJson = Gson().toJson(list)
|
||||
|
@ -11,23 +11,6 @@ object VeNotificationHelper {
|
||||
|
||||
const val VE_NOTIFICATION_REQUEST_CODE: Int = 4001
|
||||
|
||||
fun setNotification(context: Activity) {
|
||||
val intent = Intent()
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
||||
intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
|
||||
intent.data =
|
||||
Uri.fromParts("package", YFHome.getPackageName(), null)
|
||||
context.startActivityForResult(intent, VE_NOTIFICATION_REQUEST_CODE)
|
||||
} else {
|
||||
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
|
||||
intent.putExtra(
|
||||
"android.provider.extra.APP_PACKAGE",
|
||||
YFHome.getPackageName()
|
||||
)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
fun isNotification(context: Context): Boolean {
|
||||
val manager =
|
||||
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||
@ -38,4 +21,21 @@ object VeNotificationHelper {
|
||||
}
|
||||
}
|
||||
|
||||
fun setNotification(context: Activity) {
|
||||
val intent = Intent()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
|
||||
intent.putExtra(
|
||||
"android.provider.extra.APP_PACKAGE",
|
||||
YFHome.getPackageName()
|
||||
)
|
||||
context.startActivityForResult(intent, VE_NOTIFICATION_REQUEST_CODE)
|
||||
} else {
|
||||
intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
|
||||
intent.data =
|
||||
Uri.fromParts("package", YFHome.getPackageName(), null)
|
||||
context.startActivityForResult(intent, VE_NOTIFICATION_REQUEST_CODE)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -30,6 +30,7 @@ import com.veloria.now.shortapp.texturedAsink.VeTranslationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
|
||||
import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
||||
import retrofit2.Call
|
||||
import retrofit2.http.Body
|
||||
@ -112,7 +113,6 @@ interface BIFBase {
|
||||
@GET("customer/info")
|
||||
fun getUserInfo(): Call<TStore<KFAFavoritesInterceptorBean>>
|
||||
|
||||
|
||||
@POST("uploadHistorySeconds")
|
||||
fun getUploadHistorySeconds(
|
||||
@Body uploadVideoHistoryBean: PURLockBean
|
||||
@ -254,4 +254,7 @@ interface BIFBase {
|
||||
@Field("title") title: String
|
||||
): Call<TStore<Any>>
|
||||
|
||||
@GET("customer/versionControl")
|
||||
fun getVersionControl(): Call<TStore<VersionControlBean>>
|
||||
|
||||
}
|
@ -8,12 +8,20 @@ import com.veloria.now.shortapp.newsletter.TStore
|
||||
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
|
||||
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
|
||||
import com.veloria.now.shortapp.texturedAsink.LanguageBean
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.SManifestBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCustomerBuyRecordsBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCustomerOrderBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeNoticeNumBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayResBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeRewardCoinsBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeTranslationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
|
||||
|
||||
|
||||
class ANotifications {
|
||||
@ -95,4 +103,60 @@ class ANotifications {
|
||||
mainService.getData().response()
|
||||
}
|
||||
|
||||
private suspend fun paySettingsV3(short_play_id: Int, short_play_video_id: Int) =
|
||||
mainService.getPaySettingsV3(short_play_id, short_play_video_id).response()
|
||||
|
||||
fun getPaySettingsV3(
|
||||
short_play_id: Int, short_play_video_id: Int
|
||||
): LiveData<Result<TStore<VePaySettingsBean>>> = handleData {
|
||||
paySettingsV3(short_play_id, short_play_video_id)
|
||||
}
|
||||
|
||||
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean): LiveData<Result<TStore<VeUploadNotificationDataBean>>> =
|
||||
handleData {
|
||||
mainService.setUploadNoticeStatus(veUploadNotificationBean)
|
||||
.response()
|
||||
}
|
||||
|
||||
private suspend fun firebaseToken(fcm_token: String) =
|
||||
mainService.setFirebaseToken(fcm_token).response()
|
||||
|
||||
fun setFirebaseToken(fcm_token: String): LiveData<Result<TStore<Any>>> = handleData {
|
||||
firebaseToken(fcm_token)
|
||||
}
|
||||
|
||||
fun setOpenNotify(): LiveData<Result<TStore<Any>>> =
|
||||
handleData {
|
||||
mainService.setOpenNotify().response()
|
||||
}
|
||||
|
||||
private suspend fun createPayOrder(createOrderReq: VeCreatePayOrderReqBean) =
|
||||
mainService.setCreatePayOrder(createOrderReq).response()
|
||||
|
||||
fun setCreatePayOrder(createOrderReq: VeCreatePayOrderReqBean): LiveData<Result<TStore<VeCreatePayOrderBean>>> =
|
||||
handleData {
|
||||
createPayOrder(createOrderReq)
|
||||
}
|
||||
|
||||
private suspend fun googlePaid(vePayBean: VePayBean?) =
|
||||
mainService.setGooglePaid(vePayBean).response()
|
||||
|
||||
fun setGooglePaid(vePayBean: VePayBean?): LiveData<Result<TStore<VePayResBean>>> =
|
||||
handleData {
|
||||
googlePaid(vePayBean)
|
||||
}
|
||||
|
||||
private suspend fun setLogin(loginDataBean: LoginDataBean) =
|
||||
mainService.setLogin(loginDataBean).response()
|
||||
|
||||
fun setDoLogin(loginDataBean: LoginDataBean): LiveData<Result<TStore<DoLoginBean>>> =
|
||||
handleData {
|
||||
setLogin(loginDataBean)
|
||||
}
|
||||
|
||||
fun setLeaveApp(
|
||||
): LiveData<Result<TStore<Any>>> =
|
||||
handleData {
|
||||
mainService.setLeaveApp().response()
|
||||
}
|
||||
}
|
@ -19,6 +19,7 @@ import com.veloria.now.shortapp.texturedAsink.VePayResBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
|
||||
|
||||
|
||||
class NMQRepositoryFfmpeg {
|
||||
@ -194,4 +195,9 @@ class NMQRepositoryFfmpeg {
|
||||
googlePaid(vePayBean)
|
||||
}
|
||||
|
||||
fun getVersionControl(
|
||||
): LiveData<Result<TStore<VersionControlBean>>> =
|
||||
handleData {
|
||||
mainService.getVersionControl().response()
|
||||
}
|
||||
}
|
@ -8,7 +8,9 @@ import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
||||
import com.veloria.now.shortapp.highbits.QGift
|
||||
import com.veloria.now.shortapp.highbits.QGift.handleData
|
||||
import com.veloria.now.shortapp.highbits.QGift.response
|
||||
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
|
||||
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||
@ -166,4 +168,17 @@ private var loginAdaptStr: String = "dlta"
|
||||
.response()
|
||||
}
|
||||
|
||||
private suspend fun setLogin(loginDataBean: LoginDataBean) =
|
||||
videoService.setLogin(loginDataBean).response()
|
||||
|
||||
fun setDoLogin(loginDataBean: LoginDataBean): LiveData<Result<TStore<DoLoginBean>>> =
|
||||
handleData {
|
||||
setLogin(loginDataBean)
|
||||
}
|
||||
|
||||
fun setLeaveApp(
|
||||
): LiveData<Result<TStore<Any>>> =
|
||||
handleData {
|
||||
videoService.setLeaveApp().response()
|
||||
}
|
||||
}
|
@ -35,12 +35,12 @@ class VeRewardJsBridge(private val context: Context) {
|
||||
val rootJson = parser.parse(string) as JsonObject
|
||||
when (rootJson.get("type").asString) {
|
||||
"login" -> {
|
||||
EventBus.getDefault().post(JActivityAdapter.HOME_LOGIN)
|
||||
EventBus.getDefault().post(JActivityAdapter.REWARD_LOGIN)
|
||||
}
|
||||
|
||||
// "open_notify" -> {
|
||||
// EventBus.getDefault().post(MsConstants.CONSTANTS_web_notification)
|
||||
// }
|
||||
"open_notify" -> {
|
||||
EventBus.getDefault().post(JActivityAdapter.ACCOUNT_WEB_NOTIFICATION)
|
||||
}
|
||||
|
||||
"watch_video" -> {
|
||||
val fromJson = Gson().fromJson(string, WatchVideoJsonBean::class.java)
|
||||
|
@ -73,6 +73,18 @@ class BannerPlayerView(context: Context, attrs: AttributeSet?) :
|
||||
|
||||
}
|
||||
|
||||
fun play() {
|
||||
if (player != null){
|
||||
player?.play()
|
||||
}
|
||||
}
|
||||
|
||||
fun pause() {
|
||||
if (player != null){
|
||||
player?.pause()
|
||||
}
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
if (player != null){
|
||||
player?.stop()
|
||||
|
@ -580,8 +580,7 @@ class PUtilsView(context: Context, attrs: AttributeSet?) :
|
||||
|
||||
|
||||
|
||||
tvSeriesPlayer?.text =
|
||||
"EP.".plus(dataRes.video_info.episode)
|
||||
|
||||
var fragment4t: Long = 8643L
|
||||
if (fragment4t < 77L) {
|
||||
}
|
||||
@ -593,10 +592,14 @@ class PUtilsView(context: Context, attrs: AttributeSet?) :
|
||||
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
|
||||
dataRes.episode_total.toString()
|
||||
)
|
||||
tvSeriesPlayer?.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),dataRes.video_info.episode.toString())
|
||||
|
||||
|
||||
} else {
|
||||
tvSeriesPlayerAll?.text =
|
||||
"All ".plus(dataRes.episode_total).plus(" Episodes")
|
||||
|
||||
tvSeriesPlayer?.text =
|
||||
"EP.".plus(dataRes.video_info.episode)
|
||||
}
|
||||
var stringD: String = "blocksize"
|
||||
while (stringD.length > 148) {
|
||||
|
@ -1175,8 +1175,7 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
|
||||
}
|
||||
|
||||
|
||||
tvCollectionNumController?.text =
|
||||
"EP.".plus(episode.episode)
|
||||
|
||||
var y_widthv: Float = 508.0f
|
||||
if (y_widthv == 30.0f) {
|
||||
}
|
||||
@ -1190,9 +1189,12 @@ class TOYPlayfairAutoView(context: Context, attrs: AttributeSet?) :
|
||||
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
|
||||
shortVideo.episode_total.toString()
|
||||
)
|
||||
tvCollectionNumController?.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),episode.episode.toString())
|
||||
} else {
|
||||
ivEpisodePlayerController?.text =
|
||||
"All ".plus(shortVideo.episode_total).plus(" Episodes")
|
||||
tvCollectionNumController?.text =
|
||||
"EP.".plus(episode.episode)
|
||||
}
|
||||
var splashB: MutableMap<String, Float> = mutableMapOf<String, Float>()
|
||||
splashB.put("dividor", 509.0f)
|
||||
|
@ -325,6 +325,8 @@ class GColorsFragment : JItemServiceFragment<VpnInterceptorBinding, PWidthClient
|
||||
|
||||
|
||||
isQualityRefresh = true
|
||||
|
||||
restoreRightKeyboardFirstProfileActivity()
|
||||
}
|
||||
}
|
||||
|
||||
@ -371,6 +373,17 @@ class GColorsFragment : JItemServiceFragment<VpnInterceptorBinding, PWidthClient
|
||||
|
||||
showComplete()
|
||||
binding.viewPagerRecommend.visibility = View.VISIBLE
|
||||
// if (revolution == "1080" && !RYAction.isVipTo()) {
|
||||
// if (RYAction.isTouristTo()){
|
||||
// RYAction.getMMKV()
|
||||
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
|
||||
// }else {
|
||||
// RYAction.getMMKV()
|
||||
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
|
||||
// }
|
||||
// revolution = RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
|
||||
// }
|
||||
|
||||
viewModel.getExploreRecommends(currentPage, revolution)
|
||||
} else {
|
||||
var listv: MutableMap<String, String> = mutableMapOf<String, String>()
|
||||
|
@ -18,6 +18,7 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout
|
||||
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter.VIDEO_SHORT_PLAY_ID
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
@ -544,7 +545,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
}
|
||||
|
||||
|
||||
binding.constraint.visibility = View.GONE
|
||||
binding.clRoot.visibility = View.GONE
|
||||
var bolda: Int = 5532
|
||||
if (bolda == 91) {
|
||||
}
|
||||
@ -586,6 +587,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
})
|
||||
return
|
||||
}
|
||||
showComplete()
|
||||
EventBus.getDefault().register(this)
|
||||
var bbfdebaffdk: Boolean = true
|
||||
if (!bbfdebaffdk) {
|
||||
@ -594,7 +596,6 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
binding.textHome.text =
|
||||
TranslationHelper.getTranslation()?.veloria_addictive_short_await
|
||||
binding.tvMenuBinge.text = TranslationHelper.getTranslation()?.veloria_worthy_picks
|
||||
binding.tvMenuDrama.text = TranslationHelper.getTranslation()?.veloria_drama_champions
|
||||
binding.tvMenuCategories.text =
|
||||
TranslationHelper.getTranslation()?.veloria_select_categories
|
||||
@ -608,7 +609,6 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
|
||||
} else {
|
||||
binding.textHome.text = getString(R.string.home_addictive_shorts_await)
|
||||
binding.tvMenuBinge.text = getString(R.string.binge_worthy_picks)
|
||||
binding.tvMenuDrama.text = getString(R.string.drama_champions)
|
||||
binding.tvMenuCategories.text = getString(R.string.select_categories)
|
||||
binding.tvMenuCategories1.text = getString(R.string.select_categories)
|
||||
@ -627,7 +627,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
println(message6)
|
||||
|
||||
|
||||
binding.constraint.visibility = View.VISIBLE
|
||||
binding.clRoot.visibility = View.VISIBLE
|
||||
var viewsL: Long = 2629L
|
||||
while (viewsL > 95L) {
|
||||
break
|
||||
@ -1242,6 +1242,17 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
viewModel.userInfo.observe(this){
|
||||
if (it?.data != null) {
|
||||
RYAction.saveUserInfoBean(it.data)
|
||||
|
||||
if (!RYAction.isVipTo()) {
|
||||
if (RYAction.isTouristTo()){
|
||||
RYAction.getMMKV()
|
||||
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
|
||||
}else {
|
||||
RYAction.getMMKV()
|
||||
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
|
||||
}
|
||||
EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1477,7 +1488,7 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
}
|
||||
println(infoO)
|
||||
|
||||
|
||||
binding.tvMenuBinge.text = homeTotal.title
|
||||
homeBingeAdapter?.submitList(homeTotal.list)
|
||||
} else {
|
||||
var register__9: Double = 7713.0
|
||||
@ -1656,9 +1667,10 @@ class NOEditRegisterFragment : JItemServiceFragment<QfAutoBinding, VDLRenderers>
|
||||
while (helpqb >= 138) {
|
||||
break
|
||||
}
|
||||
val maxSize = appearanceBase.size - (appearanceBase.size % 3)
|
||||
val dramaList = appearanceBase.take(maxSize)
|
||||
|
||||
|
||||
homeDramaAdapter?.submitList(appearanceBase)
|
||||
homeDramaAdapter?.submitList(dramaList)
|
||||
} else {
|
||||
var loginm: String = "downmix"
|
||||
while (loginm.length > 104) {
|
||||
|
@ -7,6 +7,17 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.android.billingclient.api.AcknowledgePurchaseParams
|
||||
import com.android.billingclient.api.BillingClient
|
||||
import com.android.billingclient.api.BillingClientStateListener
|
||||
import com.android.billingclient.api.BillingFlowParams
|
||||
import com.android.billingclient.api.BillingResult
|
||||
import com.android.billingclient.api.ProductDetails
|
||||
import com.android.billingclient.api.ProductDetailsResponseListener
|
||||
import com.android.billingclient.api.Purchase
|
||||
import com.android.billingclient.api.PurchasesUpdatedListener
|
||||
import com.android.billingclient.api.QueryProductDetailsParams
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.bumptech.glide.load.resource.bitmap.CircleCrop
|
||||
@ -16,8 +27,10 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout
|
||||
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.YFHome
|
||||
import com.veloria.now.shortapp.civil.setShowVIPSlash
|
||||
import com.veloria.now.shortapp.civil.singleOnClick
|
||||
import com.veloria.now.shortapp.civil.timeToString
|
||||
@ -36,6 +49,10 @@ import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeMyWalletActivit
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeRewardsActivity
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.VeStoreActivity
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.JService
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
import kotlinx.coroutines.launch
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
@ -215,7 +232,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
}
|
||||
|
||||
setPushUI()
|
||||
|
||||
setShowVipSlashDialog()
|
||||
|
||||
}
|
||||
|
||||
@ -239,7 +256,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
|
||||
} else {
|
||||
binding.tvName.text =
|
||||
RYAction.getUserInfoBean()?.family_name.plus(RYAction.getUserInfoBean()?.giving_name)
|
||||
RYAction.getUserInfoBean()?.family_name
|
||||
|
||||
binding.tvLogin.text = TranslationHelper.getTranslation()
|
||||
?.let { TranslationHelper.getTranslation()?.veloria_log_out } ?: "Log out"
|
||||
@ -294,6 +311,7 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
binding.tvVipName.text = "Join VIP"
|
||||
binding.tvVipDes.text = getString(R.string.pagerCategoies)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -401,6 +419,17 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
|
||||
|
||||
setPushUI()
|
||||
|
||||
if (!RYAction.isVipTo()) {
|
||||
if (RYAction.isTouristTo()) {
|
||||
RYAction.getMMKV()
|
||||
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
|
||||
} else {
|
||||
RYAction.getMMKV()
|
||||
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
|
||||
}
|
||||
EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
|
||||
}
|
||||
}
|
||||
|
||||
hideLoading()
|
||||
@ -415,21 +444,63 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
LoginManager.getInstance().logOut()
|
||||
RYAction.getMMKV()
|
||||
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_LEAVE_APP)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_ENTER_THE_APP)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_USER_REFRESH)
|
||||
RYAction.getMMKV()
|
||||
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
|
||||
|
||||
// RYAction.getMMKV()
|
||||
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.CONSTANTS_QUALITY_REFRESH)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_NAVIGATE_TO_HOME)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_ON_LINE)
|
||||
|
||||
}
|
||||
}
|
||||
viewModel.PaySettingsV3.observe(this) {
|
||||
if (it?.data != null) {
|
||||
if (it.data.list_sub_vip.isNotEmpty()) {
|
||||
setVipSlashDialog(it.data.list_sub_vip)
|
||||
|
||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||
}
|
||||
}
|
||||
}
|
||||
viewModel.createPayOrderData.observe(this) {
|
||||
if (it?.data != null) {
|
||||
order_code = it.data.order_code.toString()
|
||||
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
} else {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
} else {
|
||||
toast(getString(R.string.shapeSelected))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
viewModel.googlePaidData.observe(this) {
|
||||
if (it?.data != null) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_success.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_success))
|
||||
}
|
||||
viewModel.getUserInfo()
|
||||
vipSplashDialog?.dismiss()
|
||||
} else {
|
||||
payBeanReq?.let { it1 -> RYAction.saveOrder(it1) }
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
} else {
|
||||
toast(getString(R.string.shapeSelected))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
}
|
||||
binding.tvUserAgreement.setOnClickListener {
|
||||
var fragmentsP: Long = 2747L
|
||||
if (fragmentsP == 197L) {
|
||||
@ -655,6 +726,8 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
val dialog = LogoutDialog(requireContext()).apply {
|
||||
setOnLogoutClickListener(object : LogoutDialog.LogoutOnClick {
|
||||
override fun onLogoutAction() {
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_LEAVE_APP)
|
||||
viewModel.setLogout()
|
||||
}
|
||||
})
|
||||
@ -757,21 +830,37 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
|
||||
showLoading()
|
||||
viewModel.getUserInfo()
|
||||
setShowVipSlashDialog()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private var isVipSplash = false
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
fun setShowVipSlashDialog() {
|
||||
// Fragment 可见
|
||||
binding.root.postDelayed({
|
||||
// if (!RYAction.isVipTo() && !isVipSplash) {
|
||||
if (setShowVIPSlash() && !RYAction.isVipTo() && !isVipSplash) {
|
||||
setVipSlashDialog()
|
||||
initPayData()
|
||||
viewModel.getPaySettingsV3(0, 0)
|
||||
}
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
private fun setVipSlashDialog() {
|
||||
val dialog = VipSplashDialog(requireContext()).apply {
|
||||
var vipSplashDialog: VipSplashDialog? = null
|
||||
|
||||
fun isFragmentVisible(): Boolean {
|
||||
return isAdded &&
|
||||
isResumed &&
|
||||
!isHidden &&
|
||||
view?.visibility == View.VISIBLE
|
||||
}
|
||||
|
||||
private fun setVipSlashDialog(vipBeans: List<VePaySettingsBean.VipBean>) {
|
||||
if (!isFragmentVisible()) {
|
||||
return
|
||||
}
|
||||
vipSplashDialog = VipSplashDialog(requireContext(), vipBeans).apply {
|
||||
setOnVipSplashOnClickListener(object :
|
||||
VipSplashDialog.SetVipSplashOnClick {
|
||||
override fun onVipSplash() {
|
||||
@ -781,27 +870,54 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
VeStoreActivity::class.java
|
||||
)
|
||||
)
|
||||
RYAction.getMMKV().putLong(
|
||||
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
|
||||
System.currentTimeMillis()
|
||||
)
|
||||
isVipSplash = false
|
||||
}
|
||||
|
||||
override fun onVipDismiss() {
|
||||
RYAction.getMMKV().putLong(
|
||||
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
|
||||
System.currentTimeMillis()
|
||||
override fun onVipOnAdapterBuy(vipBean: VePaySettingsBean.VipBean) {
|
||||
if (!isConnect) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_error))
|
||||
}
|
||||
return
|
||||
}
|
||||
vipData = vipBean
|
||||
showLoading()
|
||||
viewModel.setCreatePayOrder(
|
||||
VeCreatePayOrderReqBean(
|
||||
vipData?.id.toString(),
|
||||
"google",
|
||||
0,
|
||||
0
|
||||
)
|
||||
)
|
||||
isVipSplash = false
|
||||
}
|
||||
})
|
||||
}
|
||||
dialog.show()
|
||||
dialog.setVipSplashOnClick
|
||||
vipSplashDialog?.setOnDismissListener {
|
||||
RYAction.getMMKV().putLong(
|
||||
JActivityAdapter.ACCOUNT_DIALOG_TIME_VIP_SPLASH,
|
||||
System.currentTimeMillis()
|
||||
)
|
||||
isVipSplash = false
|
||||
billingClientMe?.endConnection()
|
||||
billingClientMe = null
|
||||
System.gc()
|
||||
}
|
||||
vipSplashDialog?.show()
|
||||
vipSplashDialog?.setVipSplashOnClick
|
||||
isVipSplash = true
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
payBeanReq = null
|
||||
if (billingClientMe != null) {
|
||||
billingClientMe?.endConnection()
|
||||
billingClientMe = null
|
||||
}
|
||||
System.gc()
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onEvent(event: String) {
|
||||
@ -811,4 +927,240 @@ class UColorsAvatarFragment : JItemServiceFragment<EvBodyloadHomeBinding, OMNorm
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private var billingClientMe: BillingClient? = null
|
||||
private var connectNum = 0
|
||||
private var isConnect = false
|
||||
private var vipData: VePaySettingsBean.VipBean? = null
|
||||
private var order_code = ""
|
||||
private var payBeanReq: VePayBean? = null
|
||||
|
||||
private fun initPayData() {
|
||||
val purchasesUpdatedMeListener =
|
||||
PurchasesUpdatedListener { billingResult, purchases ->
|
||||
when (billingResult.responseCode) {
|
||||
BillingClient.BillingResponseCode.OK -> {
|
||||
for (purchase in purchases!!) {
|
||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
||||
consumePurchaseSubMe(purchase)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
|
||||
queryAndConsumePurchases()
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
BillingClient.BillingResponseCode.USER_CANCELED -> {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_canceled))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_error))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
billingClientMe = BillingClient.newBuilder(requireContext())
|
||||
.setListener(purchasesUpdatedMeListener)
|
||||
.enablePendingPurchases()
|
||||
.build()
|
||||
|
||||
|
||||
val stateMeListener: BillingClientStateListener = object : BillingClientStateListener {
|
||||
override fun onBillingSetupFinished(billingResult: BillingResult) {
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
isConnect = true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBillingServiceDisconnected() {
|
||||
if (connectNum < 5) {
|
||||
connectNum++
|
||||
isConnect = false
|
||||
billingClientMe?.startConnection(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
billingClientMe?.startConnection(stateMeListener)
|
||||
}
|
||||
|
||||
private fun consumePurchaseSubMe(
|
||||
purchase: Purchase
|
||||
) {
|
||||
if (billingClientMe?.isReady == true) {
|
||||
if (!purchase.isAcknowledged) {
|
||||
val acknowledgePurchaseParams =
|
||||
AcknowledgePurchaseParams.newBuilder()
|
||||
.setPurchaseToken(purchase.purchaseToken)
|
||||
.build()
|
||||
billingClientMe?.acknowledgePurchase(
|
||||
acknowledgePurchaseParams
|
||||
) {
|
||||
val vePayBean = VePayBean(
|
||||
order_code,
|
||||
vipData?.id.toString(),
|
||||
YFHome.getPackageName(),
|
||||
vipData?.android_template_id.toString(),
|
||||
purchase.purchaseToken,
|
||||
purchase.orderId.toString(),
|
||||
vipData?.price.toString()
|
||||
)
|
||||
payBeanReq = vePayBean
|
||||
if (it.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
lifecycleScope.launch {
|
||||
viewModel.setGooglePaid(vePayBean)
|
||||
}
|
||||
} else {
|
||||
RYAction.saveOrder(vePayBean)
|
||||
lifecycleScope.launch {
|
||||
toast(it.toString())
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_error))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
} else {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_error))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
|
||||
private fun querySubVipProductDetails(listSubVip: List<VePaySettingsBean.VipBean>) {
|
||||
val productDetailsResponseListener =
|
||||
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
val priceInfo = productDetailsList.mapNotNull { productDetails ->
|
||||
productDetails.subscriptionOfferDetails?.get(0)?.pricingPhases?.pricingPhaseList?.get(
|
||||
0
|
||||
)?.let {
|
||||
productDetails.productId to (it.formattedPrice to it.priceCurrencyCode)
|
||||
}
|
||||
}.toMap()
|
||||
|
||||
// 更新VIP列表的价格和货币代码
|
||||
val updatedVipList = listSubVip.map { vip ->
|
||||
priceInfo[vip.android_template_id]?.let { (price, currency) ->
|
||||
vip.copy(price_google = price, currency_goolge = currency)
|
||||
} ?: vip
|
||||
}
|
||||
|
||||
binding.root.postDelayed({
|
||||
vipSplashDialog?.setAdapterSubmitList(updatedVipList)
|
||||
hideLoading()
|
||||
}, 500)
|
||||
} else {
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
|
||||
val productType: String = BillingClient.ProductType.SUBS
|
||||
|
||||
val inAppProductInfo = listSubVip.map {
|
||||
QueryProductDetailsParams.Product.newBuilder()
|
||||
.setProductId(it.android_template_id)
|
||||
.setProductType(productType)
|
||||
.build()
|
||||
}
|
||||
if (inAppProductInfo.isNotEmpty()) {
|
||||
val productDetailsParams = QueryProductDetailsParams.newBuilder()
|
||||
.setProductList(inAppProductInfo)
|
||||
.build()
|
||||
billingClientMe?.queryProductDetailsAsync(
|
||||
productDetailsParams,
|
||||
productDetailsResponseListener
|
||||
)
|
||||
} else {
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getProduct(productId: String) {
|
||||
val productDetailsResponseListener =
|
||||
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
||||
if (productDetailsList.isNotEmpty()) {
|
||||
setPay(productDetailsList[0])
|
||||
} else {
|
||||
lifecycleScope.launch {
|
||||
toast(billingResult.toString())
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
}
|
||||
val productType: String =
|
||||
BillingClient.ProductType.SUBS
|
||||
|
||||
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
||||
inAppProductInfo.add(
|
||||
QueryProductDetailsParams.Product.newBuilder()
|
||||
.setProductId(productId)
|
||||
.setProductType(productType)
|
||||
.build()
|
||||
)
|
||||
val productDetailsParams = QueryProductDetailsParams.newBuilder()
|
||||
.setProductList(inAppProductInfo)
|
||||
.build()
|
||||
billingClientMe?.queryProductDetailsAsync(
|
||||
productDetailsParams,
|
||||
productDetailsResponseListener
|
||||
)
|
||||
}
|
||||
|
||||
private fun setPay(productDetailInfo: ProductDetails) {
|
||||
if (productDetailInfo.subscriptionOfferDetails?.isNotEmpty() == true) {
|
||||
val params = ArrayList<BillingFlowParams.ProductDetailsParams>()
|
||||
productDetailInfo.subscriptionOfferDetails?.get(0)?.offerToken?.let {
|
||||
BillingFlowParams.ProductDetailsParams.newBuilder()
|
||||
.setProductDetails(productDetailInfo)
|
||||
.setOfferToken(it)
|
||||
.build()
|
||||
}?.let {
|
||||
params.add(
|
||||
it
|
||||
)
|
||||
}
|
||||
val billingFlowParams = BillingFlowParams.newBuilder()
|
||||
.setObfuscatedProfileId(order_code)
|
||||
.setObfuscatedAccountId(RYAction.getCustomId())
|
||||
.setProductDetailsParamsList(params)
|
||||
.build()
|
||||
|
||||
billingClientMe?.launchBillingFlow(requireActivity(), billingFlowParams)
|
||||
}
|
||||
}
|
||||
|
||||
private fun queryAndConsumePurchases() {
|
||||
// 查询所有未消费的购买记录
|
||||
billingClientMe?.queryPurchasesAsync(BillingClient.ProductType.INAPP) { billingResult, purchaseList ->
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
for (purchase in purchaseList) {
|
||||
// consumePurchase(purchase)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -398,6 +398,7 @@ class ZEpisodeFragment : JItemServiceFragment<QHeaderBinding, NNAndroid>(), NOFf
|
||||
})
|
||||
return
|
||||
}
|
||||
showComplete()
|
||||
EventBus.getDefault().register(this)
|
||||
var s_heightN: String = "uplink"
|
||||
|
||||
|
@ -6,6 +6,11 @@ import com.veloria.now.shortapp.newsletter.SStringsHelp
|
||||
import com.veloria.now.shortapp.newsletter.TStore
|
||||
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
|
||||
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayResBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
|
||||
|
||||
class OMNormalInstrumented : SStringsHelp() {
|
||||
@ -35,4 +40,29 @@ class OMNormalInstrumented : SStringsHelp() {
|
||||
repository.setLogout().observeForever { result ->
|
||||
_logoutLiveData.value = result.getOrNull()
|
||||
}
|
||||
|
||||
private val _paySettingsV3 = MutableLiveData<TStore<VePaySettingsBean>?>()
|
||||
val PaySettingsV3: MutableLiveData<TStore<VePaySettingsBean>?> get() = _paySettingsV3
|
||||
fun getPaySettingsV3(short_play_id: Int, short_play_video_id: Int) =
|
||||
repository.getPaySettingsV3(short_play_id,short_play_video_id).observeForever { result ->
|
||||
_paySettingsV3.value = result.getOrNull()
|
||||
}
|
||||
|
||||
|
||||
private val createPayOrderLiveData = MutableLiveData<TStore<VeCreatePayOrderBean>?>()
|
||||
val createPayOrderData: MutableLiveData<TStore<VeCreatePayOrderBean>?> get() = createPayOrderLiveData
|
||||
fun setCreatePayOrder(createOrderReq: VeCreatePayOrderReqBean) {
|
||||
repository.setCreatePayOrder(createOrderReq).observeForever { result ->
|
||||
createPayOrderLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
private val googlePaidLiveData = MutableLiveData<TStore<VePayResBean>?>()
|
||||
val googlePaidData: MutableLiveData<TStore<VePayResBean>?> get() = googlePaidLiveData
|
||||
fun setGooglePaid(vePayBean: VePayBean?) {
|
||||
repository.setGooglePaid(vePayBean).observeForever { result ->
|
||||
googlePaidLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -33,16 +33,17 @@ import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
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.databinding.LayoutVePlayerBuyDialogBinding
|
||||
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.VeStoreCoinBigAdapter
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
||||
import com.youth.banner.listener.OnPageChangeListener
|
||||
import kotlinx.coroutines.launch
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
@ -53,7 +54,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
private val viewModel by lazy { ViewModelProvider(this)[VeStoreViewModel::class.java] }
|
||||
|
||||
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 connectNum = 0
|
||||
private var short_play_id: Int? = 0
|
||||
@ -66,6 +68,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
private var order_code = ""
|
||||
private var vipData: VePaySettingsBean.VipBean? = null
|
||||
private var coinsData: VePaySettingsBean.CoinsBean? = null
|
||||
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
|
||||
|
||||
private var isBuy = false
|
||||
private var purchaseData: Purchase? = null
|
||||
@ -91,7 +94,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
binding?.tvCoinsText?.text = TranslationHelper.getTranslation()?.veloria_your_coins
|
||||
|
||||
binding?.tvCoinTitle?.text = TranslationHelper.getTranslation()?.veloria_coin_buy_title
|
||||
binding?.tvUnlockText?.text = TranslationHelper.getTranslation()?.veloria_unlock
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
binding?.tvTips?.text = Html.fromHtml(
|
||||
TranslationHelper.getTranslation()?.veloria_store_tips
|
||||
@ -104,18 +108,23 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
?: getString(R.string.ve_store_tips_br)
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
initLoading()
|
||||
binding?.tvCoins?.text = RYAction.getAllCoinTotal().toString()
|
||||
binding?.tvUnlock?.text = parcelable?.coins?.toString()
|
||||
|
||||
binding?.ivCloseDialog?.setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
|
||||
vipAdapter = VeStoreVipAdapter()
|
||||
binding?.recyclerVip?.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding?.recyclerVip?.adapter = vipAdapter
|
||||
|
||||
coinAdapter = VeStoreCoinAdapter()
|
||||
binding?.recyclerCoin?.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
|
||||
binding?.recyclerCoin?.layoutManager = GridLayoutManager(requireContext(), 3)
|
||||
binding?.recyclerCoin?.adapter = coinAdapter
|
||||
binding?.recyclerCoin?.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||
override fun getItemOffsets(
|
||||
@ -124,43 +133,70 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
parent: RecyclerView,
|
||||
state: RecyclerView.State
|
||||
) {
|
||||
outRect.right = resources.getDimension(R.dimen.dp_10).toInt()
|
||||
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()
|
||||
}
|
||||
})
|
||||
|
||||
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()
|
||||
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 ->
|
||||
if (typeOnClick == 1) {
|
||||
if (bannerAdapter?.currentPosition!! >= 0) {
|
||||
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
|
||||
}
|
||||
bannerAdapter?.oldPosition = -1
|
||||
bannerAdapter?.currentPosition = -1
|
||||
if (typeOnClick != 0) {
|
||||
vipAdapter?.currentPosition = -1
|
||||
vipAdapter?.notifyDataSetChanged()
|
||||
coinBigAdapter?.currentPosition = -1
|
||||
coinBigAdapter?.notifyDataSetChanged()
|
||||
}
|
||||
typeOnClick = 0
|
||||
coinAdapter?.currentPosition = position
|
||||
coinAdapter?.notifyDataSetChanged()
|
||||
|
||||
coinsData =
|
||||
coinAdapter!!.getItem(position) as VePaySettingsBean.CoinsBean
|
||||
showLoading()
|
||||
if (parcelable != null) {
|
||||
short_play_id?.let {
|
||||
VeCreatePayOrderReqBean(
|
||||
coinsData?.id.toString(),
|
||||
"google",
|
||||
it,
|
||||
parcelable!!.short_play_video_id
|
||||
)
|
||||
}?.let {
|
||||
viewModel.setCreatePayOrder(
|
||||
it
|
||||
)
|
||||
}
|
||||
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()
|
||||
}
|
||||
|
||||
observeData()
|
||||
@ -175,34 +211,45 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
window?.setGravity(Gravity.BOTTOM)
|
||||
val layoutParams = window?.attributes
|
||||
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
|
||||
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
|
||||
fun setOnPayNowClick() {
|
||||
singleOnClick {
|
||||
if (!isConnect) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_error.toString())
|
||||
} 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()
|
||||
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) {
|
||||
short_play_id?.let {
|
||||
VeCreatePayOrderReqBean(
|
||||
vipData?.id.toString(),
|
||||
idStr,
|
||||
"google",
|
||||
it,
|
||||
parcelable!!.short_play_video_id
|
||||
@ -213,84 +260,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){
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
var oneDate = ""
|
||||
when (data?.vip_type_key) {
|
||||
"week" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_week.toString()
|
||||
}
|
||||
|
||||
"month" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_month.toString()
|
||||
}
|
||||
|
||||
"quarter" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_quarter.toString()
|
||||
}
|
||||
|
||||
"year" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_year.toString()
|
||||
}
|
||||
}
|
||||
|
||||
val vipContent1 = TranslationHelper.replaces(
|
||||
TranslationHelper.getTranslation()?.veloria_unlimited_access_to.toString(),
|
||||
oneDate,data.send_coin_ttl.toString()
|
||||
)
|
||||
binding?.tvBuyHint?.text =
|
||||
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
|
||||
|
||||
} else {
|
||||
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() {
|
||||
viewModel.PaySettingsV3.observe(this) {
|
||||
if (it?.data != null) {
|
||||
coinAdapter?.submitList(it.data.list_coins)
|
||||
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()
|
||||
if (it.data.list_sub_vip.isNotEmpty()) {
|
||||
vipAdapter?.submitList(it.data.list_sub_vip)
|
||||
binding?.recyclerVip?.visibility = View.VISIBLE
|
||||
|
||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||
it.data.list_coins.let { it1 -> queryInAppCoinsProductDetails(it1) }
|
||||
it.data.list_sub_vip.let { it1 -> querySubVipProductDetails(it1) }
|
||||
|
||||
} else {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
binding?.root?.postDelayed({
|
||||
@ -303,8 +314,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
order_code = it.data.order_code.toString()
|
||||
if (typeOnClick == 0) {
|
||||
coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
} else {
|
||||
} else if (typeOnClick == 1) {
|
||||
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
} else {
|
||||
coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
}
|
||||
} else {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
@ -335,7 +348,6 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
}
|
||||
hideLoading()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -347,15 +359,20 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
BillingClient.BillingResponseCode.OK -> {
|
||||
for (purchase in purchases!!) {
|
||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
||||
if (typeOnClick == 0) {
|
||||
consumePurchase(purchase)
|
||||
} else {
|
||||
if (typeOnClick == 1) {
|
||||
consumePurchaseSub(purchase)
|
||||
} else {
|
||||
consumePurchase(purchase)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
|
||||
queryAndConsumePurchases()
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
BillingClient.BillingResponseCode.USER_CANCELED -> {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
|
||||
@ -459,7 +476,7 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
|
||||
binding?.root?.postDelayed({
|
||||
bannerAdapter?.setDatas(updatedVipList)
|
||||
vipAdapter?.submitList(updatedVipList)
|
||||
hideLoading()
|
||||
}, 500)
|
||||
} else {
|
||||
@ -489,7 +506,8 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
|
||||
private fun queryInAppCoinsProductDetails(
|
||||
coinsList: List<VePaySettingsBean.CoinsBean>
|
||||
coinsList: List<VePaySettingsBean.CoinsBean>,
|
||||
type: String
|
||||
) {
|
||||
val productDetailsResponseListener =
|
||||
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
||||
@ -508,7 +526,11 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
|
||||
coinAdapter?.recyclerView?.postDelayed({
|
||||
coinAdapter?.submitList(updatedCoinsList)
|
||||
if (type == "small") {
|
||||
coinAdapter?.submitList(updatedCoinsList)
|
||||
} else {
|
||||
coinBigAdapter?.submitList(updatedCoinsList)
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
hideLoading()
|
||||
@ -549,10 +571,10 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
}
|
||||
}
|
||||
val productType: String = if (typeOnClick == 0) {
|
||||
BillingClient.ProductType.INAPP
|
||||
} else {
|
||||
val productType: String = if (typeOnClick == 1) {
|
||||
BillingClient.ProductType.SUBS
|
||||
} else {
|
||||
BillingClient.ProductType.INAPP
|
||||
}
|
||||
|
||||
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
||||
@ -613,12 +635,12 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
ConsumeResponseListener { billingResult, purchaseToken ->
|
||||
val vePayBean = VePayBean(
|
||||
order_code,
|
||||
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(),
|
||||
if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(),
|
||||
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,
|
||||
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
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
@ -652,6 +674,16 @@ class PlayerBuyDialogFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun queryAndConsumePurchases() {
|
||||
// 查询所有未消费的购买记录
|
||||
billingClientData?.queryPurchasesAsync(BillingClient.ProductType.INAPP) { billingResult, purchaseList ->
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
for (purchase in purchaseList) {
|
||||
consumePurchase(purchase)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
payBeanReq = null
|
||||
|
@ -0,0 +1,95 @@
|
||||
package com.veloria.now.shortapp.subtractionCroll.avcintraRelock
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.text.Html
|
||||
import android.view.Gravity
|
||||
import android.view.Window
|
||||
import android.view.WindowManager
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.YFHome
|
||||
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
|
||||
|
||||
class VersionControlDialog(context: Context, versionControlBean: VersionControlBean) :
|
||||
Dialog(context) {
|
||||
|
||||
init {
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE)
|
||||
setContentView(R.layout.dialog_version_control)
|
||||
|
||||
window?.apply {
|
||||
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
setLayout(
|
||||
(context.resources.displayMetrics.widthPixels * 0.8).toInt(),
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
setGravity(Gravity.CENTER)
|
||||
}
|
||||
setCancelable(false)
|
||||
|
||||
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
|
||||
val tvVersion = findViewById<AppCompatTextView>(R.id.tv_version)
|
||||
val tvNow = findViewById<AppCompatTextView>(R.id.tv_now)
|
||||
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
|
||||
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
|
||||
|
||||
tvVersion.text = "v".plus(versionControlBean.version_name)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
tvContent?.text = Html.fromHtml(
|
||||
versionControlBean.description, Html.FROM_HTML_MODE_COMPACT
|
||||
)
|
||||
} else {
|
||||
tvContent?.text = Html.fromHtml(
|
||||
versionControlBean.description
|
||||
)
|
||||
}
|
||||
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
tvTitle.text = TranslationHelper.getTranslation()?.veloria_update_title
|
||||
tvNow.text = TranslationHelper.getTranslation()?.veloria_update_now
|
||||
}
|
||||
|
||||
ivClose.setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
|
||||
tvNow.setOnClickListener {
|
||||
setOpenGooglePlayStore(YFHome.getPackageName())
|
||||
dismiss()
|
||||
}
|
||||
|
||||
this.setOnDismissListener {
|
||||
RYAction.getMMKV().putLong(
|
||||
JActivityAdapter.ACCOUNT_VERSION_CONTROL_TIME,
|
||||
System.currentTimeMillis()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setOpenGooglePlayStore(packageName: String) {
|
||||
try {
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName"))
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
context.startActivity(intent)
|
||||
} catch (e: Exception) {
|
||||
val intent = Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
Uri.parse("https://play.google.com/store/apps/details?id=$packageName")
|
||||
)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
context.startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -25,6 +25,7 @@ class VipQualityDialog(context: Context, revolutionsBean: VeRevolutionsBean) : D
|
||||
|
||||
interface SetQualityBackOnClick {
|
||||
fun qualityBackOnClick(quality: Int)
|
||||
fun loginOnClick()
|
||||
fun showActivateOnClick()
|
||||
}
|
||||
|
||||
@ -98,13 +99,8 @@ class VipQualityDialog(context: Context, revolutionsBean: VeRevolutionsBean) : D
|
||||
tvQuality720.setTextColor(Color.parseColor("#8B8B8B"))
|
||||
tvQuality720.setBackgroundResource(R.mipmap.iv_quality_bg_off)
|
||||
tvQuality720.setOnClickListener {
|
||||
context.startActivity(
|
||||
Intent(
|
||||
context,
|
||||
PSVHomeSearchActivity::class.java
|
||||
)
|
||||
)
|
||||
EventBus.getDefault().post(JActivityAdapter.HOME_LOGIN)
|
||||
// EventBus.getDefault().post(JActivityAdapter.VIDEO_PAUSE_PLAY)
|
||||
setQualityBackOnClick?.loginOnClick()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
@ -6,21 +6,29 @@ import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.Window
|
||||
import android.view.WindowManager
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.singleOnClick
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreCoinAdapter
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeVipSplashAdapter
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
class VipSplashDialog(context: Context) : Dialog(context) {
|
||||
class VipSplashDialog(context: Context,vipBeans: List<VePaySettingsBean.VipBean>) : Dialog(context) {
|
||||
var setVipSplashOnClick: SetVipSplashOnClick? = null
|
||||
private var vipAdapter: VeVipSplashAdapter? = null
|
||||
|
||||
interface SetVipSplashOnClick {
|
||||
fun onVipSplash()
|
||||
fun onVipDismiss()
|
||||
fun onVipOnAdapterBuy(vipBean: VePaySettingsBean.VipBean)
|
||||
}
|
||||
|
||||
init {
|
||||
@ -33,43 +41,59 @@ class VipSplashDialog(context: Context) : Dialog(context) {
|
||||
(context.resources.displayMetrics.widthPixels * 0.8).toInt(),
|
||||
WindowManager.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
setGravity(Gravity.CENTER)
|
||||
setGravity(Gravity.TOP or Gravity.CENTER_HORIZONTAL)
|
||||
}
|
||||
setCancelable(true)
|
||||
|
||||
val ivClose = findViewById<AppCompatImageView>(R.id.iv_close)
|
||||
val tvToStore = findViewById<AppCompatTextView>(R.id.tv_to_store)
|
||||
val tvContent = findViewById<AppCompatTextView>(R.id.tv_content)
|
||||
val tvTitle = findViewById<AppCompatTextView>(R.id.tv_title)
|
||||
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
|
||||
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
tvTitle.text = TranslationHelper.getTranslation()?.veloria_vip_splash_title
|
||||
tvContent.text = TranslationHelper.getTranslation()?.veloria_vip_splash_content
|
||||
tvToStore.text = TranslationHelper.getTranslation()?.veloria_vip_splash_onclick
|
||||
|
||||
} else {
|
||||
tvTitle.text = "Unlock VIP Privileges!"
|
||||
tvContent.text = "Enjoy ad-free streaming, early access, and exclusive content!"
|
||||
tvToStore.text = "Unlock VIP Benefits"
|
||||
}
|
||||
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
vipAdapter = VeVipSplashAdapter()
|
||||
recyclerView.adapter = vipAdapter
|
||||
vipAdapter?.submitList(vipBeans)
|
||||
|
||||
|
||||
ivClose.setOnClickListener {
|
||||
singleOnClick {
|
||||
setVipSplashOnClick?.onVipDismiss()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
tvToStore.setOnClickListener {
|
||||
|
||||
vipAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||
singleOnClick {
|
||||
setVipSplashOnClick?.onVipSplash()
|
||||
dismiss()
|
||||
|
||||
val data = adapter.getItem(position)
|
||||
|
||||
vipAdapter?.currentPosition = position
|
||||
vipAdapter?.notifyDataSetChanged()
|
||||
|
||||
if (data != null) {
|
||||
setVipSplashOnClick?.onVipOnAdapterBuy(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun setOnVipSplashOnClickListener(listener: SetVipSplashOnClick) {
|
||||
this.setVipSplashOnClick = listener
|
||||
}
|
||||
|
||||
fun setAdapterSubmitList(data: List<VePaySettingsBean.VipBean>){
|
||||
vipAdapter?.submitList(data)
|
||||
}
|
||||
|
||||
}
|
@ -151,6 +151,26 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
|
||||
|
||||
this.testDetails_list = mutableListOf<Float>()
|
||||
|
||||
binding.ivBack.setOnClickListener {
|
||||
var complete9: Long = 6360L
|
||||
if (complete9 == 49L) {
|
||||
}
|
||||
|
||||
|
||||
var system2: Float = 1503.0f
|
||||
|
||||
|
||||
finish()
|
||||
}
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
binding.etSearch.hint = TranslationHelper.getTranslation()?.veloria_recersal_of_fate
|
||||
binding.tvTitleRecent.text = TranslationHelper.getTranslation()?.veloria_recent_searches
|
||||
binding.tvTitleRecommended.text = TranslationHelper.getTranslation()?.veloria_recommended
|
||||
binding.tvTrendingTop.text = TranslationHelper.getTranslation()?.veloria_trending_top
|
||||
binding.tvLatestTrends.text = TranslationHelper.getTranslation()?.veloria_latest_trends
|
||||
binding.tvResultTitle.text = TranslationHelper.getTranslation()?.veloria_search_results
|
||||
}
|
||||
|
||||
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
var langR: Float = 4492.0f
|
||||
@ -213,7 +233,7 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
showComplete()
|
||||
binding.clOne.visibility = View.VISIBLE
|
||||
var displaye: Double = 49.0
|
||||
if (displaye > 179.0) {
|
||||
@ -223,15 +243,6 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
|
||||
binding.stateLayout.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
binding.etSearch.hint = TranslationHelper.getTranslation()?.veloria_recersal_of_fate
|
||||
binding.tvTitleRecent.text = TranslationHelper.getTranslation()?.veloria_recent_searches
|
||||
binding.tvTitleRecommended.text = TranslationHelper.getTranslation()?.veloria_recommended
|
||||
binding.tvTrendingTop.text = TranslationHelper.getTranslation()?.veloria_trending_top
|
||||
binding.tvLatestTrends.text = TranslationHelper.getTranslation()?.veloria_latest_trends
|
||||
}
|
||||
|
||||
|
||||
searchTrendAdapter = VXAgreement()
|
||||
var buttonu: Int = 3389
|
||||
if (buttonu < 189) {
|
||||
@ -419,17 +430,6 @@ class HLanguageActivity : AIXTextActivity<MqInstrumentedBinding, YCFddebcdbeeffc
|
||||
|
||||
|
||||
|
||||
binding.ivBack.setOnClickListener {
|
||||
var complete9: Long = 6360L
|
||||
if (complete9 == 49L) {
|
||||
}
|
||||
|
||||
|
||||
var system2: Float = 1503.0f
|
||||
|
||||
|
||||
finish()
|
||||
}
|
||||
binding.ivDelete.setOnClickListener {
|
||||
var selectZ: Float = 4767.0f
|
||||
while (selectZ < 108.0f) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.veloria.now.shortapp.subtractionCroll.bidirectional
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
@ -10,14 +11,9 @@ import androidx.activity.viewModels
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.fragment.app.DialogFragment.STYLE_NO_FRAME
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.media3.common.MediaItem
|
||||
import androidx.media3.common.PlaybackException
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.datasource.DataSource
|
||||
import androidx.media3.datasource.DefaultDataSourceFactory
|
||||
import androidx.media3.exoplayer.DefaultRenderersFactory
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import androidx.media3.exoplayer.hls.HlsMediaSource
|
||||
import androidx.media3.exoplayer.source.MediaSource
|
||||
import androidx.media3.exoplayer.source.ProgressiveMediaSource
|
||||
@ -25,9 +21,16 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.blankj.utilcode.util.NetworkUtils
|
||||
import com.bumptech.glide.Glide
|
||||
import com.facebook.AccessToken
|
||||
import com.facebook.CallbackManager
|
||||
import com.facebook.CallbackManager.Factory.create
|
||||
import com.facebook.FacebookCallback
|
||||
import com.facebook.FacebookException
|
||||
import com.facebook.GraphRequest
|
||||
import com.facebook.login.LoginManager
|
||||
import com.facebook.login.LoginResult
|
||||
import com.google.gson.Gson
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.BImage
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter.CONSTANTS_QUALITY_REFRESH
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter.PLAYER_DETAILS_CAN_PLAY
|
||||
@ -41,10 +44,12 @@ import com.veloria.now.shortapp.civil.singleOnClick
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
import com.veloria.now.shortapp.databinding.JDetailsLayoutBinding
|
||||
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||
import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import com.veloria.now.shortapp.rewards.TOYPlayfairAutoView
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.DSPUnitVideoFragment
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.FYStatusAppveloria
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.PlayerBuyDialogFragment
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipActivateDialog
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VipQualityDialog
|
||||
@ -52,6 +57,7 @@ import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.UKBott
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.SUJustSmart
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeBannerRecommendAdapter
|
||||
import com.veloria.now.shortapp.texturedAsink.LServiceBean
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.NBECenterBean
|
||||
import com.veloria.now.shortapp.texturedAsink.PURLockBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
|
||||
@ -59,10 +65,10 @@ import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
|
||||
import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
||||
import com.zhpan.bannerview.constants.PageStyle.MULTI_PAGE_OVERLAP
|
||||
import kotlinx.coroutines.launch
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import org.json.JSONObject
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
@ -242,6 +248,9 @@ class MQVAutoWidthActivity :
|
||||
}
|
||||
|
||||
manifestAnyBuildGravityView()?.pause()
|
||||
if (binding.layoutRecommend.root.visibility == View.VISIBLE) {
|
||||
bannerAdapter?.getCurrentPlayerView()?.pause()
|
||||
}
|
||||
}, 300)
|
||||
}
|
||||
|
||||
@ -467,7 +476,7 @@ class MQVAutoWidthActivity :
|
||||
setPlayerBuyDialog(it)
|
||||
}
|
||||
binding.root.postDelayed({
|
||||
manifestAnyBuildGravityView()?.play()
|
||||
manifestAnyBuildGravityView()?.stop()
|
||||
}, 500)
|
||||
}
|
||||
if (JActivityAdapter.CONSTANTS_QUALITY == event) {
|
||||
@ -523,8 +532,6 @@ class MQVAutoWidthActivity :
|
||||
if (h_viewf < 96) {
|
||||
}
|
||||
|
||||
|
||||
EventBus.getDefault().register(this)
|
||||
var watchingB: Float = 8505.0f
|
||||
if (watchingB > 46.0f) {
|
||||
}
|
||||
@ -554,12 +561,12 @@ class MQVAutoWidthActivity :
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
binding.ivBack.setOnClickListener { finish() }
|
||||
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
var lightf: Long = 4156L
|
||||
|
||||
|
||||
binding.ivBack.visibility = View.VISIBLE
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
public fun spanLoveWhatBinge(): Boolean {
|
||||
@ -591,6 +598,7 @@ class MQVAutoWidthActivity :
|
||||
initView()
|
||||
}
|
||||
})
|
||||
|
||||
return
|
||||
} else {
|
||||
var playh: MutableList<Double> = mutableListOf<Double>()
|
||||
@ -599,17 +607,29 @@ class MQVAutoWidthActivity :
|
||||
playh.add(941.0)
|
||||
if (playh.size > 20) {
|
||||
}
|
||||
|
||||
binding.ivBack.visibility = View.GONE
|
||||
|
||||
showComplete()
|
||||
var marqueeo: Float = 1740.0f
|
||||
if (marqueeo < 162.0f) {
|
||||
}
|
||||
|
||||
// if (revolution == "1080" && !RYAction.isVipTo()) {
|
||||
// if (RYAction.isTouristTo()) {
|
||||
// RYAction.getMMKV()
|
||||
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 540)
|
||||
// } else {
|
||||
// RYAction.getMMKV()
|
||||
// .putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
|
||||
// }
|
||||
// EventBus.getDefault().post(CONSTANTS_QUALITY_REFRESH)
|
||||
// revolution =
|
||||
// RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
|
||||
// }
|
||||
|
||||
viewModel.getVideoPlayDetails(shortPlayId, 0, activityId, revolution)
|
||||
}
|
||||
|
||||
EventBus.getDefault().register(this)
|
||||
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
@ -932,6 +952,10 @@ class MQVAutoWidthActivity :
|
||||
|
||||
|
||||
manifestAnyBuildGravityView()?.play()
|
||||
|
||||
if (binding.layoutRecommend.root.visibility == View.VISIBLE) {
|
||||
bannerAdapter?.getCurrentPlayerView()?.play()
|
||||
}
|
||||
} else {
|
||||
var listso: String = "agate"
|
||||
|
||||
@ -1371,9 +1395,10 @@ class MQVAutoWidthActivity :
|
||||
|
||||
|
||||
manifestAnyBuildGravityView()?.release()
|
||||
|
||||
bannerAdapter.getCurrentPlayerView()?.stop()
|
||||
bannerAdapter.getCurrentPlayerView()?.release()
|
||||
if (::bannerAdapter.isInitialized) {
|
||||
bannerAdapter?.getCurrentPlayerView()?.stop()
|
||||
bannerAdapter?.getCurrentPlayerView()?.release()
|
||||
}
|
||||
|
||||
}
|
||||
recommendAdapter?.shortVideo = null
|
||||
@ -1618,7 +1643,7 @@ class MQVAutoWidthActivity :
|
||||
}
|
||||
println(startA)
|
||||
|
||||
|
||||
binding.ivBack.visibility = View.GONE
|
||||
showComplete()
|
||||
var rights: Long = 9660L
|
||||
if (rights > 16L) {
|
||||
@ -1670,7 +1695,7 @@ class MQVAutoWidthActivity :
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
binding.ivBack.visibility = View.VISIBLE
|
||||
showEmptyData()
|
||||
}
|
||||
}
|
||||
@ -1913,15 +1938,23 @@ class MQVAutoWidthActivity :
|
||||
it?.data?.let {
|
||||
RYAction.saveUserInfoBean(it)
|
||||
if (needRestart) {
|
||||
binding.layoutLock.tvBalance.text =
|
||||
"Balance: ".plus(RYAction.getUserInfoBean()?.coin_left_total.toString())
|
||||
.plus(" Coins | ")
|
||||
.plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString())
|
||||
.plus(" Bonus")
|
||||
if (RYAction.isVipTo()) {
|
||||
revolution = "1080"
|
||||
RYAction.getMMKV().putInt(JActivityAdapter.CONSTANTS_QUALITY, 1080)
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
binding.layoutLock.tvBalance.text =
|
||||
TranslationHelper.getTranslation()?.veloria_balance.plus(": ")
|
||||
.plus(RYAction.getUserInfoBean()?.coin_left_total.toString())
|
||||
.plus(TranslationHelper.getTranslation()?.veloria_coins)
|
||||
.plus(" | ")
|
||||
.plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString())
|
||||
.plus(" ")
|
||||
.plus(TranslationHelper.getTranslation()?.veloria_bonus)
|
||||
} else {
|
||||
binding.layoutLock.tvBalance.text =
|
||||
"Balance: ".plus(RYAction.getUserInfoBean()?.coin_left_total.toString())
|
||||
.plus(" Coins | ")
|
||||
.plus(RYAction.getUserInfoBean()?.send_coin_left_total.toString())
|
||||
.plus(" Bonus")
|
||||
}
|
||||
|
||||
detailRefresh()
|
||||
}
|
||||
}
|
||||
@ -1979,6 +2012,89 @@ class MQVAutoWidthActivity :
|
||||
}
|
||||
}
|
||||
|
||||
callbackManager = create()
|
||||
LoginManager.getInstance().registerCallback(callbackManager,
|
||||
object : FacebookCallback<LoginResult> {
|
||||
override fun onSuccess(loginResult: LoginResult) {
|
||||
val enableButtons = AccessToken.getCurrentAccessToken() != null
|
||||
if (enableButtons) {
|
||||
val mGraphRequest = GraphRequest.newMeRequest(
|
||||
loginResult.accessToken
|
||||
) { jsonObject, response ->
|
||||
if (response!!.error != null) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(
|
||||
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
|
||||
.plus(".${response.error?.exception.toString()}")
|
||||
)
|
||||
} else {
|
||||
toast("Facebook Error")
|
||||
}
|
||||
} else {
|
||||
val id = jsonObject?.optString("id")
|
||||
val name = jsonObject?.optString("name")
|
||||
val object_pic: JSONObject? = jsonObject!!.optJSONObject("picture")
|
||||
val object_data = object_pic?.optJSONObject("data")
|
||||
val photo = object_data?.optString("url")
|
||||
viewModel.setLeaveApp()
|
||||
viewModel.setDoLogin(
|
||||
LoginDataBean(
|
||||
photo.toString(),
|
||||
"",
|
||||
name.toString(),
|
||||
"",
|
||||
"facebook",
|
||||
id.toString()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
val parameters = Bundle()
|
||||
parameters.putString("fields", "id,name,email,picture")
|
||||
mGraphRequest.parameters = parameters
|
||||
mGraphRequest.executeAsync()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast("Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_cancel))
|
||||
} else {
|
||||
toast("Facebook Cancel")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError(exception: FacebookException) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(
|
||||
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
|
||||
.plus("n.$exception")
|
||||
)
|
||||
} else {
|
||||
toast("Facebook Error")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
viewModel.loginLiveData.observe(this) {
|
||||
if (it?.data != null) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_succeed.toString())
|
||||
}
|
||||
RYAction.getMMKV()
|
||||
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_ENTER_THE_APP)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_ON_LINE)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_USER_REFRESH)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -2008,6 +2124,14 @@ class MQVAutoWidthActivity :
|
||||
}
|
||||
|
||||
private fun showGoldShortageDialog(episode1: XAboutBean.Episode) {
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
} else {
|
||||
toast(XNBackground.instance.getString(R.string.shapeSelected))
|
||||
}
|
||||
return
|
||||
}
|
||||
val allCoin = RYAction.getAllCoinTotal()
|
||||
if (allCoin >= episode1.coins) {
|
||||
if (currentPosition > 0) {
|
||||
@ -2090,6 +2214,13 @@ class MQVAutoWidthActivity :
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
private fun setDetailsRecommendation(data: VeDetailsRecommendBean) {
|
||||
if (data.list.isNotEmpty()) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
binding.layoutRecommend.tvTitle.text =
|
||||
TranslationHelper.getTranslation()?.veloria_detail_recommand_title
|
||||
binding.layoutRecommend.tvWatchNow.text =
|
||||
TranslationHelper.getTranslation()?.veloria_watch_now
|
||||
}
|
||||
|
||||
PLAYER_DETAILS_CAN_PLAY = false
|
||||
binding.layoutRecommend.root.visibility = View.VISIBLE
|
||||
bannerAdapter =
|
||||
@ -2137,7 +2268,8 @@ class MQVAutoWidthActivity :
|
||||
})
|
||||
|
||||
binding.layoutRecommend.tvWatchNow.setOnClickListener {
|
||||
val data = binding.layoutRecommend.bannerRecommend.getData()[bannerPosition] as VeDetailsRecommendBean.ItemDaraBean
|
||||
val data =
|
||||
binding.layoutRecommend.bannerRecommend.getData()[bannerPosition] as VeDetailsRecommendBean.ItemDaraBean
|
||||
watchNow(data, data?.short_play_id)
|
||||
}
|
||||
val data = data.list[0]
|
||||
@ -2196,6 +2328,10 @@ class MQVAutoWidthActivity :
|
||||
setVipActivateDialog()
|
||||
}
|
||||
|
||||
override fun loginOnClick() {
|
||||
setLogin()
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
dialog.show()
|
||||
@ -2207,4 +2343,32 @@ class MQVAutoWidthActivity :
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
private var callbackManager: CallbackManager? = null
|
||||
fun setLogin() {
|
||||
val dialog = LoginDialog(this).apply {
|
||||
setOnLoginOnclickListener(object : LoginDialog.LoginOnClick {
|
||||
override fun onLoginFacebook() {
|
||||
onFacebook()
|
||||
}
|
||||
})
|
||||
}
|
||||
dialog.show()
|
||||
dialog.loginOnclick
|
||||
|
||||
}
|
||||
|
||||
private fun onFacebook() {
|
||||
singleOnClick {
|
||||
LoginManager.getInstance()
|
||||
.logInWithReadPermissions(this, arrayListOf("public_profile", "email"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
callbackManager?.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
|
||||
}
|
@ -38,7 +38,9 @@ import com.veloria.now.shortapp.civil.JActivityAdapter.VIDEO_SHORT_PLAY_ID
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.VeNotificationHelper
|
||||
import com.veloria.now.shortapp.civil.YFHome.getPackageVersionCode
|
||||
import com.veloria.now.shortapp.civil.setShowNotifications
|
||||
import com.veloria.now.shortapp.civil.shouldVersionControl
|
||||
import com.veloria.now.shortapp.civil.singleOnClick
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
import com.veloria.now.shortapp.databinding.JsDramaFragmentBinding
|
||||
@ -50,10 +52,12 @@ import com.veloria.now.shortapp.subtractionCroll.adminSourceid.UColorsAvatarFrag
|
||||
import com.veloria.now.shortapp.subtractionCroll.adminSourceid.YYLoginHistoryFragment
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.NotificationsDialog
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.VersionControlDialog
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.JService
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeHomeWatchBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
@ -217,7 +221,7 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
|
||||
it.data?.token?.let { it1 ->
|
||||
RYAction.saveToken(it1)
|
||||
EventBus.getDefault().post(JActivityAdapter.REFRESH_HOME)
|
||||
EventBus.getDefault().post(JActivityAdapter.HOME_REFRESH_ME)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -249,12 +253,6 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_USER_REFRESH)
|
||||
|
||||
val revolution =
|
||||
RYAction.getMMKV().getInt(JActivityAdapter.CONSTANTS_QUALITY, 540).toString()
|
||||
if (revolution == "540") {
|
||||
RYAction.getMMKV()
|
||||
.putInt(JActivityAdapter.CONSTANTS_QUALITY, 720)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,6 +270,23 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
|
||||
}
|
||||
|
||||
viewModel.versionControlData.observe(this) {
|
||||
if (it != null) {
|
||||
if (it.data?.version_code?.isNotEmpty() == true) {
|
||||
val toInt = it.data.version_code.toInt()
|
||||
if (shouldVersionControl() && toInt > getPackageVersionCode(this)) {
|
||||
setVersionControlDialog(it.data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun setVersionControlDialog(versionControlBean: VersionControlBean) {
|
||||
val dialog = VersionControlDialog(this, versionControlBean)
|
||||
dialog.show()
|
||||
|
||||
}
|
||||
|
||||
private val items = listOf(
|
||||
@ -573,7 +588,12 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = VeNotificationHelper.isNotification(this)
|
||||
viewModel.setUploadNoticeStatus(
|
||||
VeUploadNotificationBean(
|
||||
if (JActivityAdapter.IS_HOME_SET_NOTIFICATIONS) "1" else "0"
|
||||
)
|
||||
)
|
||||
GoogleApiAvailability.getInstance().makeGooglePlayServicesAvailable(this)
|
||||
.addOnCompleteListener {
|
||||
if (it.isSuccessful) {
|
||||
@ -598,6 +618,8 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
}
|
||||
}, 3000)
|
||||
|
||||
viewModel.getVersionControl()
|
||||
|
||||
}
|
||||
|
||||
private fun stayPrimaryRecommendSearchToast(
|
||||
@ -808,6 +830,15 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
if (JActivityAdapter.ACCOUNT_FIREBASE_TOKEN_REFRESH == event) {
|
||||
getFirebaseMessaging()
|
||||
}
|
||||
if (JActivityAdapter.ACCOUNT_OUT_LOGIN == event) {
|
||||
viewModel.loadData()
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(
|
||||
TranslationHelper.getTranslation()?.veloria_network_error_1
|
||||
?: getString(R.string.veloria_network_error_1)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun restartApplication(context: Context) {
|
||||
@ -1078,6 +1109,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
viewModel.setUploadNoticeStatus(
|
||||
VeUploadNotificationBean("1")
|
||||
)
|
||||
} else {
|
||||
if (setShowNotifications()) {
|
||||
setNotifications()
|
||||
@ -1087,6 +1121,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
if (VeNotificationHelper.isNotification(this)) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
viewModel.setUploadNoticeStatus(
|
||||
VeUploadNotificationBean("1")
|
||||
)
|
||||
} else {
|
||||
if (setShowNotifications()) {
|
||||
setNotifications()
|
||||
@ -1129,6 +1166,9 @@ class PSVHomeSearchActivity : AIXTextActivity<JsDramaFragmentBinding, JService>(
|
||||
if (isGranted) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
viewModel.setUploadNoticeStatus(
|
||||
VeUploadNotificationBean("1")
|
||||
)
|
||||
} else {
|
||||
VeNotificationHelper.setNotification(this)
|
||||
}
|
||||
|
@ -2,24 +2,28 @@ package com.veloria.now.shortapp.subtractionCroll.bidirectional
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Bitmap
|
||||
import android.view.View
|
||||
import android.webkit.WebChromeClient
|
||||
import android.webkit.WebResourceError
|
||||
import android.webkit.WebResourceRequest
|
||||
import android.webkit.WebSettings
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import com.blankj.utilcode.util.NetworkUtils
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
import com.veloria.now.shortapp.databinding.IPlaceBinding
|
||||
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.LXMService
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
|
||||
class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
|
||||
class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>(), NOFfmpeg {
|
||||
@Volatile
|
||||
var centerTrendPaint_min: Double = 5869.0
|
||||
|
||||
@ -168,7 +172,6 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
|
||||
println(messageL)
|
||||
|
||||
|
||||
|
||||
when (urlString) {
|
||||
JActivityAdapter.WEB_VIEW_USER_AGREEMENT -> {
|
||||
var modelE: Float = 6376.0f
|
||||
@ -206,6 +209,20 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
|
||||
binding.tvTitle.text = "Veloria"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
binding.webView.visibility = View.GONE
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
initView()
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
binding.webView.visibility = View.VISIBLE
|
||||
showComplete()
|
||||
showLoading()
|
||||
var helpF: MutableMap<String, Long> = mutableMapOf<String, Long>()
|
||||
helpF.put("texturedspenc", 528L)
|
||||
@ -502,4 +519,7 @@ class RBZLatestDeteleActivity : AIXTextActivity<IPlaceBinding, LXMService>() {
|
||||
}
|
||||
|
||||
override fun getViewBinding() = IPlaceBinding.inflate(layoutInflater)
|
||||
override fun getStatusLayout(): VSNotificationsDefault? {
|
||||
return binding.stateLayout
|
||||
}
|
||||
}
|
@ -27,13 +27,14 @@ import androidx.lifecycle.lifecycleScope
|
||||
import com.blankj.utilcode.util.PermissionUtils
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.singleOnClick
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
import com.veloria.now.shortapp.databinding.ActivityVeFeedbackBinding
|
||||
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||
import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import com.veloria.now.shortapp.other.FeedbackJsBridge
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@ -44,7 +45,8 @@ import org.greenrobot.eventbus.ThreadMode
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.InputStream
|
||||
|
||||
class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedbackViewModel>() {
|
||||
class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedbackViewModel>(),
|
||||
NOFfmpeg {
|
||||
|
||||
val viewModel: VeFeedbackViewModel by viewModels()
|
||||
|
||||
@ -55,7 +57,7 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
|
||||
override fun initView() {
|
||||
EventBus.getDefault().register(this)
|
||||
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_my_feedback
|
||||
}
|
||||
|
||||
@ -138,7 +140,8 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
|
||||
binding.webFeedback.webViewClient = object : WebViewClient() {
|
||||
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
|
||||
super.onPageStarted(view, url, favicon)
|
||||
|
||||
showComplete()
|
||||
binding.webFeedback.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onPageFinished(view: WebView?, url: String?) {
|
||||
@ -152,9 +155,17 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
|
||||
error: WebResourceError?
|
||||
) {
|
||||
super.onReceivedError(view, request, error)
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
showLoading()
|
||||
loadPageUrl(JActivityAdapter.FEEDBACK_URL_INDEX)
|
||||
}
|
||||
})
|
||||
binding.webFeedback.visibility = View.INVISIBLE
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
}else {
|
||||
} else {
|
||||
toast(getString(R.string.shapeSelected))
|
||||
}
|
||||
hideLoading()
|
||||
@ -303,4 +314,8 @@ class VeFeedbackActivity : AIXTextActivity<ActivityVeFeedbackBinding, VeFeedback
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
override fun getStatusLayout(): VSNotificationsDefault? {
|
||||
return binding.stateLayout
|
||||
}
|
||||
|
||||
}
|
@ -12,6 +12,7 @@ import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.util.Base64
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.webkit.JsPromptResult
|
||||
import android.webkit.JsResult
|
||||
import android.webkit.WebChromeClient
|
||||
@ -27,6 +28,7 @@ import androidx.lifecycle.lifecycleScope
|
||||
import com.blankj.utilcode.util.PermissionUtils
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
@ -38,6 +40,7 @@ import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import com.veloria.now.shortapp.other.BaseEventBusBean
|
||||
import com.veloria.now.shortapp.other.FeedbackJsBridge
|
||||
import com.veloria.now.shortapp.other.FeedbackJsBridgeDetail
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@ -48,7 +51,8 @@ import org.greenrobot.eventbus.ThreadMode
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.InputStream
|
||||
|
||||
class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding, VeFeedbackViewModel>() {
|
||||
class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding, VeFeedbackViewModel>() ,
|
||||
NOFfmpeg {
|
||||
|
||||
val viewModel: VeFeedbackViewModel by viewModels()
|
||||
|
||||
@ -91,7 +95,8 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
|
||||
binding.webFeedbackDetail.webViewClient = object : WebViewClient() {
|
||||
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
|
||||
super.onPageStarted(view, url, favicon)
|
||||
|
||||
showComplete()
|
||||
binding.webFeedbackDetail.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onPageFinished(view: WebView?, url: String?) {
|
||||
@ -106,6 +111,14 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
|
||||
error: WebResourceError?
|
||||
) {
|
||||
super.onReceivedError(view, request, error)
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
showLoading()
|
||||
loadPageUrl(JActivityAdapter.FEEDBACK_URL_DETAIL)
|
||||
}
|
||||
})
|
||||
binding.webFeedbackDetail.visibility = View.INVISIBLE
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
}else {
|
||||
@ -251,4 +264,8 @@ class VeFeedbackDetailActivity : AIXTextActivity<ActivityVeFeedbackDetailBinding
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
override fun getStatusLayout(): VSNotificationsDefault? {
|
||||
return binding.stateLayout
|
||||
}
|
||||
|
||||
}
|
@ -4,6 +4,7 @@ import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.view.View
|
||||
import android.webkit.WebChromeClient
|
||||
import android.webkit.WebResourceError
|
||||
import android.webkit.WebResourceRequest
|
||||
@ -13,6 +14,7 @@ import android.webkit.WebViewClient
|
||||
import androidx.activity.viewModels
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
@ -21,13 +23,14 @@ import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||
import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import com.veloria.now.shortapp.other.BaseEventBusBean
|
||||
import com.veloria.now.shortapp.other.FeedbackJsBridge
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
class VeFeedbackListActivity :
|
||||
AIXTextActivity<ActivityVeFeedbackListBinding, VeFeedbackViewModel>() {
|
||||
AIXTextActivity<ActivityVeFeedbackListBinding, VeFeedbackViewModel>() , NOFfmpeg {
|
||||
|
||||
val viewModel: VeFeedbackViewModel by viewModels()
|
||||
|
||||
@ -67,7 +70,8 @@ class VeFeedbackListActivity :
|
||||
binding.webFeedbackList.webViewClient = object : WebViewClient() {
|
||||
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
|
||||
super.onPageStarted(view, url, favicon)
|
||||
|
||||
showComplete()
|
||||
binding.webFeedbackList.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onPageFinished(view: WebView?, url: String?) {
|
||||
@ -82,6 +86,14 @@ class VeFeedbackListActivity :
|
||||
error: WebResourceError?
|
||||
) {
|
||||
super.onReceivedError(view, request, error)
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
showLoading()
|
||||
loadPageUrl(JActivityAdapter.FEEDBACK_URL_LIST)
|
||||
}
|
||||
})
|
||||
binding.webFeedbackList.visibility = View.INVISIBLE
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
}else {
|
||||
@ -123,4 +135,8 @@ class VeFeedbackListActivity :
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
override fun getStatusLayout(): VSNotificationsDefault? {
|
||||
return binding.stateLayout
|
||||
}
|
||||
|
||||
}
|
@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.core.os.LocaleListCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.blankj.utilcode.util.NetworkUtils
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
@ -33,16 +34,28 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
|
||||
override fun getViewBinding() = ActivityVeLanguageBinding.inflate(layoutInflater)
|
||||
|
||||
override fun initView() {
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_language
|
||||
}
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
initView()
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
showComplete()
|
||||
val layoutManager =
|
||||
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
||||
binding.recyclerView.layoutManager = layoutManager
|
||||
mAdapter = LanguageAdapter()
|
||||
binding.recyclerView.adapter = mAdapter
|
||||
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_language
|
||||
}
|
||||
|
||||
showLoading()
|
||||
viewModel.getLanguages()
|
||||
|
||||
@ -61,6 +74,7 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
|
||||
viewModel.getTranslates(langKey)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun observeData() {
|
||||
@ -85,8 +99,8 @@ class VeLanguageActivity : AIXTextActivity<ActivityVeLanguageBinding, LanguageVi
|
||||
|
||||
viewModel.translatesDataBean.observe(this) {
|
||||
if (it?.data != null) {
|
||||
RYAction.getMMKV()
|
||||
.putString(JActivityAdapter.HOME_MAIN_VIDEO_INFO, "")
|
||||
// RYAction.getMMKV()
|
||||
// .putString(JActivityAdapter.HOME_MAIN_VIDEO_INFO, "")
|
||||
lifecycleScope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
TranslationHelper.saveTranslation(it.data.translates)
|
||||
|
@ -7,21 +7,24 @@ import android.widget.TextView
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.blankj.utilcode.util.NetworkUtils
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import com.scwang.smart.refresh.layout.api.RefreshLayout
|
||||
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.databinding.ActivityVeMyWalletBinding
|
||||
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||
import com.veloria.now.shortapp.other.NestedScrollHelper
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeMyWalletViewModel
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeMyWalletViewPagerAdapter
|
||||
|
||||
class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWalletViewModel>(),
|
||||
OnRefreshLoadMoreListener {
|
||||
OnRefreshLoadMoreListener , NOFfmpeg {
|
||||
|
||||
val viewModel: VeMyWalletViewModel by viewModels()
|
||||
|
||||
@ -41,9 +44,20 @@ class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWallet
|
||||
binding.tvRechargeText.text = TranslationHelper.getTranslation()?.veloria_recharge
|
||||
binding.tvDonateText.text = TranslationHelper.getTranslation()?.veloria_bonus
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
binding.scrollView.visibility = View.GONE
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
initView()
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
showComplete()
|
||||
binding.scrollView.visibility = View.VISIBLE
|
||||
binding.tvTotal.text =
|
||||
RYAction.getAllCoinTotal().toString()
|
||||
binding.tvRecharge.text =
|
||||
@ -175,5 +189,9 @@ class VeMyWalletActivity : AIXTextActivity<ActivityVeMyWalletBinding, VeMyWallet
|
||||
viewModel.setLoadMoreAction(binding.viewPager.currentItem)
|
||||
}
|
||||
|
||||
override fun getStatusLayout(): VSNotificationsDefault? {
|
||||
return binding.stateLayout
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,8 +1,15 @@
|
||||
package com.veloria.now.shortapp.subtractionCroll.bidirectional
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.webkit.WebChromeClient
|
||||
@ -11,14 +18,30 @@ import android.webkit.WebResourceRequest
|
||||
import android.webkit.WebSettings
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.blankj.utilcode.util.NetworkUtils
|
||||
import com.blankj.utilcode.util.NotificationUtils
|
||||
import com.facebook.AccessToken
|
||||
import com.facebook.CallbackManager
|
||||
import com.facebook.CallbackManager.Factory.create
|
||||
import com.facebook.FacebookCallback
|
||||
import com.facebook.FacebookException
|
||||
import com.facebook.GraphRequest
|
||||
import com.facebook.login.LoginManager
|
||||
import com.facebook.login.LoginResult
|
||||
import com.google.android.gms.tasks.OnCompleteListener
|
||||
import com.google.firebase.messaging.FirebaseMessaging
|
||||
import com.scwang.smart.refresh.layout.api.RefreshLayout
|
||||
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.JActivityAdapter
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.VeNotificationHelper
|
||||
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.databinding.ActivityVeRewardsBinding
|
||||
@ -27,10 +50,18 @@ import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import com.veloria.now.shortapp.other.FeedbackJsBridge
|
||||
import com.veloria.now.shortapp.other.VeRewardJsBridge
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
import com.veloria.now.shortapp.subtractionCroll.avcintraRelock.LoginDialog
|
||||
import com.veloria.now.shortapp.subtractionCroll.bidirectional.coordinate.VeFeedbackViewModel
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import org.json.JSONObject
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.ScheduledExecutorService
|
||||
|
||||
class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackViewModel>(),
|
||||
OnRefreshLoadMoreListener, NOFfmpeg {
|
||||
@ -53,6 +84,7 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
|
||||
|
||||
setWebView()
|
||||
loadingData()
|
||||
initLogin()
|
||||
}
|
||||
|
||||
fun loadingData() {
|
||||
@ -80,6 +112,31 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
|
||||
|
||||
override fun observeData() {
|
||||
|
||||
viewModel.loginLiveData.observe(this) {
|
||||
if (it?.data != null) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_succeed.toString())
|
||||
}else {
|
||||
toast("Succeed")
|
||||
}
|
||||
RYAction.getMMKV()
|
||||
.putString(JActivityAdapter.ACCOUNT_TOKEN, it.data.token)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_ENTER_THE_APP)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_ON_LINE)
|
||||
EventBus.getDefault()
|
||||
.post(JActivityAdapter.HOME_USER_REFRESH)
|
||||
|
||||
loadingData()
|
||||
}
|
||||
}
|
||||
viewModel.openNotifyLiveData.observe(this){
|
||||
if (it?.data != null) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -140,6 +197,12 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
|
||||
if (JActivityAdapter.HOME_LOGIN == event) {
|
||||
finish()
|
||||
}
|
||||
if (JActivityAdapter.ACCOUNT_WEB_NOTIFICATION == event) {
|
||||
askNotificationPermission()
|
||||
}
|
||||
if (JActivityAdapter.REWARD_LOGIN == event) {
|
||||
setLogin()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
@ -161,4 +224,177 @@ class VeRewardsActivity : AIXTextActivity<ActivityVeRewardsBinding, VeFeedbackVi
|
||||
return binding.stateLayout
|
||||
}
|
||||
|
||||
private fun askNotificationPermission() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
if (ContextCompat.checkSelfPermission(
|
||||
this, Manifest.permission.POST_NOTIFICATIONS
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
loadingData()
|
||||
} else {
|
||||
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
|
||||
}
|
||||
} else {
|
||||
if (VeNotificationHelper.isNotification(this)) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
loadingData()
|
||||
} else {
|
||||
VeNotificationHelper.setNotification(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
if (requestCode == VeNotificationHelper.VE_NOTIFICATION_REQUEST_CODE) {
|
||||
JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = VeNotificationHelper.isNotification(this)
|
||||
if (JActivityAdapter.IS_HOME_SET_NOTIFICATIONS) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
}
|
||||
loadingData()
|
||||
}else {
|
||||
callbackManager?.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private val requestPermissionLauncher = registerForActivityResult(
|
||||
ActivityResultContracts.RequestPermission(),
|
||||
) { isGranted: Boolean ->
|
||||
JActivityAdapter.IS_HOME_SET_NOTIFICATIONS = isGranted
|
||||
if (isGranted) {
|
||||
getFirebaseMessaging()
|
||||
viewModel.setOpenNotify()
|
||||
loadingData()
|
||||
} else {
|
||||
openAppNotificationSettings()
|
||||
}
|
||||
}
|
||||
|
||||
private fun openAppNotificationSettings() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
val intent = Intent()
|
||||
intent.action = "android.settings.APP_NOTIFICATION_SETTINGS"
|
||||
intent.putExtra(
|
||||
"android.provider.extra.APP_PACKAGE",
|
||||
YFHome.getPackageName()
|
||||
)
|
||||
startActivity(intent)
|
||||
} else {
|
||||
val intent = Intent()
|
||||
intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
|
||||
intent.data =
|
||||
Uri.fromParts("package", YFHome.getPackageName(), null)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFirebaseMessaging() {
|
||||
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
|
||||
if (!task.isSuccessful) {
|
||||
return@OnCompleteListener
|
||||
}
|
||||
// Get new FCM registration token
|
||||
val token = task.result
|
||||
// Log and toast
|
||||
Log.d("LOG_TAG", token)
|
||||
viewModel.setFirebaseToken(token)
|
||||
})
|
||||
}
|
||||
|
||||
private var callbackManager: CallbackManager? = null
|
||||
|
||||
fun setLogin() {
|
||||
val dialog = LoginDialog(this).apply {
|
||||
setOnLoginOnclickListener(object : LoginDialog.LoginOnClick {
|
||||
override fun onLoginFacebook() {
|
||||
onFacebook()
|
||||
}
|
||||
})
|
||||
}
|
||||
dialog.show()
|
||||
dialog.loginOnclick
|
||||
|
||||
}
|
||||
|
||||
private fun onFacebook() {
|
||||
singleOnClick {
|
||||
LoginManager.getInstance()
|
||||
.logInWithReadPermissions(this, arrayListOf("public_profile", "email"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun initLogin(){
|
||||
callbackManager = create()
|
||||
LoginManager.getInstance().registerCallback(callbackManager,
|
||||
object : FacebookCallback<LoginResult> {
|
||||
override fun onSuccess(loginResult: LoginResult) {
|
||||
val enableButtons = AccessToken.getCurrentAccessToken() != null
|
||||
if (enableButtons) {
|
||||
val mGraphRequest = GraphRequest.newMeRequest(
|
||||
loginResult.accessToken
|
||||
) { jsonObject, response ->
|
||||
if (response!!.error != null) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(
|
||||
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
|
||||
.plus(".${response.error?.exception.toString()}")
|
||||
)
|
||||
} else {
|
||||
toast("Facebook Error")
|
||||
}
|
||||
} else {
|
||||
val id = jsonObject?.optString("id")
|
||||
val name = jsonObject?.optString("name")
|
||||
val object_pic: JSONObject? = jsonObject!!.optJSONObject("picture")
|
||||
val object_data = object_pic?.optJSONObject("data")
|
||||
val photo = object_data?.optString("url")
|
||||
viewModel.setLeaveApp()
|
||||
viewModel.setDoLogin(
|
||||
LoginDataBean(
|
||||
photo.toString(),
|
||||
"",
|
||||
name.toString(),
|
||||
"",
|
||||
"facebook",
|
||||
id.toString()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
val parameters = Bundle()
|
||||
parameters.putString("fields", "id,name,email,picture")
|
||||
mGraphRequest.parameters = parameters
|
||||
mGraphRequest.executeAsync()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast("Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_cancel))
|
||||
} else {
|
||||
toast("Facebook Cancel")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError(exception: FacebookException) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(
|
||||
"Facebook ".plus(TranslationHelper.getTranslation()?.veloria_login_exception)
|
||||
.plus("n.$exception")
|
||||
)
|
||||
} else {
|
||||
toast("Facebook Error")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -7,6 +7,7 @@ import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.android.billingclient.api.AcknowledgePurchaseParams
|
||||
import com.android.billingclient.api.BillingClient
|
||||
@ -20,7 +21,9 @@ import com.android.billingclient.api.ProductDetailsResponseListener
|
||||
import com.android.billingclient.api.Purchase
|
||||
import com.android.billingclient.api.PurchasesUpdatedListener
|
||||
import com.android.billingclient.api.QueryProductDetailsParams
|
||||
import com.blankj.utilcode.util.NetworkUtils
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.NOFfmpeg
|
||||
import com.veloria.now.shortapp.civil.RYAction
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.YFHome
|
||||
@ -28,27 +31,35 @@ import com.veloria.now.shortapp.civil.singleOnClick
|
||||
import com.veloria.now.shortapp.civil.toast
|
||||
import com.veloria.now.shortapp.databinding.ActivityVeStoreBinding
|
||||
import com.veloria.now.shortapp.newsletter.AIXTextActivity
|
||||
import com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
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.VeStoreCoinBigAdapter
|
||||
import com.veloria.now.shortapp.subtractionCroll.modificationsPretch.VeStoreVipAdapter
|
||||
import com.veloria.now.shortapp.texturedAsink.VeCreatePayOrderReqBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePayBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
import com.youth.banner.listener.OnPageChangeListener
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() {
|
||||
class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel>() , NOFfmpeg {
|
||||
|
||||
val viewModel: VeStoreViewModel by viewModels()
|
||||
|
||||
override fun getViewBinding() = ActivityVeStoreBinding.inflate(layoutInflater)
|
||||
|
||||
private var coinAdapter: VeStoreCoinAdapter? = null
|
||||
private var bannerAdapter: VeBannerVipPayAdapter? = null
|
||||
private var coinBigAdapter: VeStoreCoinBigAdapter? = null
|
||||
private var vipAdapter: VeStoreVipAdapter? = null
|
||||
private var typeOnClick = 0
|
||||
private var isConnect = false
|
||||
private var vipData: VePaySettingsBean.VipBean? = null
|
||||
private var coinsData: VePaySettingsBean.CoinsBean? = null
|
||||
private var coinsBigData: VePaySettingsBean.CoinsBean? = null
|
||||
private var payBeanReq: VePayBean? = null
|
||||
|
||||
private var billingClientData: BillingClient? = null
|
||||
@ -57,21 +68,14 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
|
||||
private var isBuy = false
|
||||
private var purchaseData: Purchase? = null
|
||||
private val scope = CoroutineScope(Dispatchers.Main)
|
||||
|
||||
override fun initView() {
|
||||
|
||||
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
|
||||
binding.tvTitle.text = TranslationHelper.getTranslation()?.veloria_store
|
||||
binding.tvCoinTitle.text = TranslationHelper.getTranslation()?.veloria_coin_buy_title
|
||||
binding.tvRestore.text = TranslationHelper.getTranslation()?.veloria_restore
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
binding.tvTips.text = Html.fromHtml(
|
||||
TranslationHelper.getTranslation()?.veloria_store_tips
|
||||
@ -85,27 +89,27 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
showLoading()
|
||||
|
||||
binding.tvCoin.text = RYAction.getAllCoinTotal().toString()
|
||||
|
||||
binding.ivBack.setOnClickListener {
|
||||
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
|
||||
}
|
||||
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
binding.scrollView.visibility = View.GONE
|
||||
showErrorData(object : VSNotificationsDefault.OnRetryListener {
|
||||
|
||||
override fun onRetry(layout: VSNotificationsDefault) {
|
||||
initView()
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
showComplete()
|
||||
binding.scrollView.visibility = View.VISIBLE
|
||||
showLoading()
|
||||
|
||||
vipAdapter = VeStoreVipAdapter()
|
||||
binding.recyclerVip.layoutManager = LinearLayoutManager(this)
|
||||
binding.recyclerVip.adapter = vipAdapter
|
||||
|
||||
coinAdapter = VeStoreCoinAdapter()
|
||||
binding.recyclerCoin.layoutManager = GridLayoutManager(this, 3)
|
||||
@ -122,16 +126,43 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
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)
|
||||
|
||||
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 ->
|
||||
if (typeOnClick == 1) {
|
||||
if (bannerAdapter?.currentPosition!! >= 0) {
|
||||
bannerAdapter?.notifyItemChanged(bannerAdapter?.currentPosition!!)
|
||||
}
|
||||
bannerAdapter?.oldPosition = -1
|
||||
bannerAdapter?.currentPosition = -1
|
||||
if (typeOnClick != 0) {
|
||||
vipAdapter?.currentPosition = -1
|
||||
vipAdapter?.notifyDataSetChanged()
|
||||
coinBigAdapter?.currentPosition = -1
|
||||
coinBigAdapter?.notifyDataSetChanged()
|
||||
}
|
||||
typeOnClick = 0
|
||||
coinAdapter?.currentPosition = position
|
||||
@ -139,50 +170,48 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
|
||||
setOnPayNowClick()
|
||||
}
|
||||
|
||||
initPayData()
|
||||
}
|
||||
|
||||
private fun setBannerListener() {
|
||||
binding.bannerVip.setOnBannerListener { data, position ->
|
||||
if (typeOnClick == 0) {
|
||||
coinBigAdapter?.setOnItemClickListener { adapter, view, position ->
|
||||
if (typeOnClick != 2) {
|
||||
vipAdapter?.currentPosition = -1
|
||||
vipAdapter?.notifyDataSetChanged()
|
||||
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!!)
|
||||
}
|
||||
typeOnClick = 2
|
||||
coinBigAdapter?.currentPosition = position
|
||||
coinBigAdapter?.notifyDataSetChanged()
|
||||
|
||||
setOnPayNowClick()
|
||||
}
|
||||
|
||||
binding.bannerVip.addOnPageChangeListener(object : OnPageChangeListener {
|
||||
override fun onPageScrolled(
|
||||
position: Int,
|
||||
positionOffset: Float,
|
||||
positionOffsetPixels: Int
|
||||
) {
|
||||
binding.tvRestore.setOnClickListener{
|
||||
singleOnClick {
|
||||
if (RYAction.getOrder().isNotEmpty()
|
||||
) {
|
||||
showLoading()
|
||||
val string = RYAction.getOrder()
|
||||
scope.launch {
|
||||
flow {
|
||||
for (item in string) {
|
||||
emit(item)
|
||||
}
|
||||
}
|
||||
.onEach { item ->
|
||||
viewModel.setRestorePaid(item)
|
||||
}
|
||||
.debounce(500)
|
||||
.collect {}
|
||||
}
|
||||
} else {
|
||||
if (TranslationHelper.getTranslation() != null){
|
||||
TranslationHelper.getTranslation()?.veloria_no_restore?.let { it1 -> toast(it1) }
|
||||
}else {
|
||||
toast("No orders to restore")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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) }
|
||||
|
||||
initPayData()
|
||||
}
|
||||
|
||||
fun setOnPayNowClick() {
|
||||
@ -197,15 +226,26 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
if (typeOnClick == 0) {
|
||||
coinsData =
|
||||
coinAdapter!!.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||
} else {
|
||||
coinAdapter?.getItem(coinAdapter!!.currentPosition) as VePaySettingsBean.CoinsBean
|
||||
} else if (typeOnClick == 1) {
|
||||
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()
|
||||
var idStr = ""
|
||||
if (typeOnClick == 0) {
|
||||
idStr = coinsData?.id.toString()
|
||||
} else if (typeOnClick == 1) {
|
||||
idStr = vipData?.id.toString()
|
||||
} else {
|
||||
idStr = coinsBigData?.id.toString()
|
||||
}
|
||||
viewModel.setCreatePayOrder(
|
||||
VeCreatePayOrderReqBean(
|
||||
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(),
|
||||
idStr,
|
||||
"google",
|
||||
0,
|
||||
0
|
||||
@ -218,21 +258,43 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
override fun observeData() {
|
||||
viewModel.PaySettingsV3.observe(this) {
|
||||
if (it?.data != null) {
|
||||
coinAdapter?.submitList(it.data.list_coins)
|
||||
if (it.data.list_sub_vip.isNotEmpty()) {
|
||||
vipAdapter?.submitList(it.data.list_sub_vip)
|
||||
binding.recyclerVip.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) }
|
||||
} else {
|
||||
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()
|
||||
}
|
||||
viewModel.createPayOrderData.observe(this) {
|
||||
@ -240,8 +302,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
order_code = it.data.order_code.toString()
|
||||
if (typeOnClick == 0) {
|
||||
coinsData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
} else {
|
||||
} else if (typeOnClick == 1) {
|
||||
vipData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
} else {
|
||||
coinsBigData?.android_template_id?.let { it1 -> getProduct(it1) }
|
||||
}
|
||||
} else {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
@ -271,67 +335,38 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
}
|
||||
viewModel.userInfo.observe(this) {
|
||||
if (it?.data != null) {
|
||||
RYAction.saveUserInfoBean(it.data)
|
||||
binding.tvCoin.text = RYAction.getAllCoinTotal().toString()
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setVipContentText(data: VePaySettingsBean.VipBean) {
|
||||
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
var oneDate = ""
|
||||
when (data?.vip_type_key) {
|
||||
"week" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_week.toString()
|
||||
viewModel.restorePaidData.observe(this){
|
||||
if (it != null) {
|
||||
it.data?.order_code?.let { it1 -> RYAction.removeOrderString(it1) }
|
||||
if (RYAction.getOrder().size == 0) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_success.toString())
|
||||
} else {
|
||||
toast(getString(R.string.ve_google_pay_success))
|
||||
}
|
||||
viewModel.getUserInfo()
|
||||
isBuy = true
|
||||
}
|
||||
|
||||
"month" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_month.toString()
|
||||
}
|
||||
|
||||
"quarter" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_quarter.toString()
|
||||
}
|
||||
|
||||
"year" -> {
|
||||
oneDate = TranslationHelper.getTranslation()?.veloria_year.toString()
|
||||
}else {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_network.toString())
|
||||
} else {
|
||||
toast(getString(R.string.shapeSelected))
|
||||
}
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
val vipContent1 = TranslationHelper.replace(
|
||||
TranslationHelper.getTranslation()?.veloria_store_no_ads.toString(),
|
||||
"<font color='#05CEA0'>".plus(oneDate).plus("</font>")
|
||||
)
|
||||
binding.tvVipContent1.text =
|
||||
Html.fromHtml(vipContent1, Html.FROM_HTML_MODE_LEGACY)
|
||||
val vipContent2 = TranslationHelper.replace(
|
||||
TranslationHelper.getTranslation()?.veloria_store_donate_coins.toString(),
|
||||
data.send_coin_ttl.toString()
|
||||
)
|
||||
binding.tvVipContent2.text =
|
||||
Html.fromHtml(vipContent2, Html.FROM_HTML_MODE_LEGACY)
|
||||
|
||||
} else {
|
||||
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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private fun initPayData() {
|
||||
val purchasesUpdatedListener =
|
||||
PurchasesUpdatedListener { billingResult, purchases ->
|
||||
@ -339,15 +374,20 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
BillingClient.BillingResponseCode.OK -> {
|
||||
for (purchase in purchases!!) {
|
||||
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
|
||||
if (typeOnClick == 0) {
|
||||
consumePurchase(purchase)
|
||||
} else {
|
||||
if (typeOnClick == 1) {
|
||||
consumePurchaseSub(purchase)
|
||||
} else {
|
||||
consumePurchase(purchase)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED -> {
|
||||
queryAndConsumePurchases()
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
BillingClient.BillingResponseCode.USER_CANCELED -> {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
toast(TranslationHelper.getTranslation()?.veloria_google_pay_canceled.toString())
|
||||
@ -451,7 +491,7 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
|
||||
binding.root.postDelayed({
|
||||
bannerAdapter?.setDatas(updatedVipList)
|
||||
vipAdapter?.submitList(updatedVipList)
|
||||
hideLoading()
|
||||
}, 500)
|
||||
} else {
|
||||
@ -481,7 +521,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
|
||||
private fun queryInAppCoinsProductDetails(
|
||||
coinsList: List<VePaySettingsBean.CoinsBean>
|
||||
coinsList: List<VePaySettingsBean.CoinsBean>,
|
||||
type: String
|
||||
) {
|
||||
val productDetailsResponseListener =
|
||||
ProductDetailsResponseListener { billingResult, productDetailsList ->
|
||||
@ -500,7 +541,11 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
|
||||
coinAdapter?.recyclerView?.postDelayed({
|
||||
coinAdapter?.submitList(updatedCoinsList)
|
||||
if (type == "small") {
|
||||
coinAdapter?.submitList(updatedCoinsList)
|
||||
} else {
|
||||
coinBigAdapter?.submitList(updatedCoinsList)
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
hideLoading()
|
||||
@ -541,10 +586,10 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
}
|
||||
}
|
||||
val productType: String = if (typeOnClick == 0) {
|
||||
BillingClient.ProductType.INAPP
|
||||
} else {
|
||||
val productType: String = if (typeOnClick == 1) {
|
||||
BillingClient.ProductType.SUBS
|
||||
} else {
|
||||
BillingClient.ProductType.INAPP
|
||||
}
|
||||
|
||||
val inAppProductInfo = ArrayList<QueryProductDetailsParams.Product>()
|
||||
@ -623,12 +668,12 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
ConsumeResponseListener { billingResult, purchaseToken ->
|
||||
val vePayBean = VePayBean(
|
||||
order_code,
|
||||
if (typeOnClick == 0) coinsData?.id.toString() else vipData?.id.toString(),
|
||||
if (typeOnClick == 0) coinsData?.id.toString() else coinsBigData?.id.toString(),
|
||||
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,
|
||||
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
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
@ -644,6 +689,18 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private fun queryAndConsumePurchases() {
|
||||
// 查询所有未消费的购买记录
|
||||
billingClientData?.queryPurchasesAsync(BillingClient.ProductType.INAPP) { billingResult, purchaseList ->
|
||||
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
|
||||
for (purchase in purchaseList) {
|
||||
consumePurchase(purchase)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
payBeanReq = null
|
||||
@ -652,4 +709,8 @@ class VeStoreActivity : AIXTextActivity<ActivityVeStoreBinding, VeStoreViewModel
|
||||
System.gc()
|
||||
}
|
||||
|
||||
override fun getStatusLayout(): VSNotificationsDefault? {
|
||||
return binding.stateLayout
|
||||
}
|
||||
|
||||
}
|
@ -13,6 +13,7 @@ import com.veloria.now.shortapp.texturedAsink.VePayResBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeW2aSelfAttributionBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VersionControlBean
|
||||
|
||||
|
||||
class JService : SStringsHelp() {
|
||||
@ -147,4 +148,13 @@ class JService : SStringsHelp() {
|
||||
}
|
||||
}
|
||||
|
||||
private val _versionControlLiveData = MutableLiveData<TStore<VersionControlBean>?>()
|
||||
val versionControlData: MutableLiveData<TStore<VersionControlBean>?> get() = _versionControlLiveData
|
||||
|
||||
fun getVersionControl() {
|
||||
repository.getVersionControl().observeForever { result ->
|
||||
_versionControlLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -6,7 +6,9 @@ import com.veloria.now.shortapp.newsletter.SStringsHelp
|
||||
import com.veloria.now.shortapp.texturedAsink.PURLockBean
|
||||
import com.veloria.now.shortapp.texturedAsink.XAboutBean
|
||||
import com.veloria.now.shortapp.highbits.qscaleqlog.PDeteleResource
|
||||
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
|
||||
import com.veloria.now.shortapp.texturedAsink.KFAFavoritesInterceptorBean
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeBuyVideoBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeDetailsRecommendBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeRevolutionsBean
|
||||
@ -109,4 +111,16 @@ private var moreSecond_sum: Int = 6970
|
||||
}
|
||||
}
|
||||
|
||||
fun setLeaveApp() {
|
||||
repository.setLeaveApp().observeForever {}
|
||||
}
|
||||
|
||||
private val _loginLiveData = MutableLiveData<TStore<DoLoginBean>?>()
|
||||
val loginLiveData: MutableLiveData<TStore<DoLoginBean>?> get() = _loginLiveData
|
||||
fun setDoLogin(loginDataBean: LoginDataBean) {
|
||||
repository.setDoLogin(loginDataBean).observeForever { result ->
|
||||
_loginLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,7 +4,11 @@ import androidx.lifecycle.MutableLiveData
|
||||
import com.veloria.now.shortapp.highbits.qscaleqlog.ANotifications
|
||||
import com.veloria.now.shortapp.newsletter.SStringsHelp
|
||||
import com.veloria.now.shortapp.newsletter.TStore
|
||||
import com.veloria.now.shortapp.texturedAsink.DoLoginBean
|
||||
import com.veloria.now.shortapp.texturedAsink.LoginDataBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeNoticeNumBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationBean
|
||||
import com.veloria.now.shortapp.texturedAsink.VeUploadNotificationDataBean
|
||||
|
||||
|
||||
class VeFeedbackViewModel : SStringsHelp() {
|
||||
@ -19,4 +23,42 @@ class VeFeedbackViewModel : SStringsHelp() {
|
||||
_noticeNumLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private val _notificationLiveData = MutableLiveData<TStore<VeUploadNotificationDataBean>?>()
|
||||
val notificationLiveData: MutableLiveData<TStore<VeUploadNotificationDataBean>?> get() = _notificationLiveData
|
||||
fun setUploadNoticeStatus(veUploadNotificationBean: VeUploadNotificationBean) {
|
||||
repository.setUploadNoticeStatus(veUploadNotificationBean)
|
||||
.observeForever { result ->
|
||||
_notificationLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
private val firebaseTokenLiveData = MutableLiveData<TStore<Any>?>()
|
||||
fun setFirebaseToken(
|
||||
fcm_token: String
|
||||
) {
|
||||
repository.setFirebaseToken(fcm_token).observeForever { result ->
|
||||
firebaseTokenLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
private val _openNotifyLiveData = MutableLiveData<TStore<Any>?>()
|
||||
val openNotifyLiveData: MutableLiveData<TStore<Any>?> get() = _openNotifyLiveData
|
||||
fun setOpenNotify() {
|
||||
repository.setOpenNotify().observeForever { result ->
|
||||
_openNotifyLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
fun setLeaveApp() {
|
||||
repository.setLeaveApp().observeForever {}
|
||||
}
|
||||
private val _loginLiveData = MutableLiveData<TStore<DoLoginBean>?>()
|
||||
val loginLiveData: MutableLiveData<TStore<DoLoginBean>?> get() = _loginLiveData
|
||||
fun setDoLogin(loginDataBean: LoginDataBean) {
|
||||
repository.setDoLogin(loginDataBean).observeForever { result ->
|
||||
_loginLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
}
|
@ -63,4 +63,13 @@ class VeStoreViewModel : SStringsHelp() {
|
||||
repository.getUserInfo().observeForever { result ->
|
||||
_userInfo.value = result.getOrNull()
|
||||
}
|
||||
|
||||
private val restorePaidLiveData = MutableLiveData<TStore<VePayResBean>?>()
|
||||
val restorePaidData: MutableLiveData<TStore<VePayResBean>?> get() = restorePaidLiveData
|
||||
fun setRestorePaid(vePayBean: VePayBean?) {
|
||||
repository.setGooglePaid(vePayBean).observeForever { result ->
|
||||
restorePaidLiveData.value = result.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -7,21 +7,20 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.chad.library.adapter4.BaseQuickAdapter
|
||||
import com.veloria.now.shortapp.R
|
||||
import com.veloria.now.shortapp.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.civil.getTimeAgoDetailed
|
||||
import com.veloria.now.shortapp.databinding.IDisplayTrendsBinding
|
||||
import com.veloria.now.shortapp.newsletter.XNBackground
|
||||
import com.veloria.now.shortapp.texturedAsink.TMainExtractionBean
|
||||
import com.veloria.now.shortapp.databinding.IDisplayTrendsBinding
|
||||
import com.veloria.now.shortapp.civil.getTimeAgoDetailed
|
||||
import kotlin.math.min
|
||||
import kotlin.math.max
|
||||
|
||||
|
||||
class GFFavorites :
|
||||
BaseQuickAdapter<TMainExtractionBean.DataListBean, GFFavorites.VH>() {
|
||||
@Volatile
|
||||
var default_0mTabBingeSum: Long = 3471L
|
||||
@Volatile
|
||||
var freeRetrofitMark: Int = 5934
|
||||
@Volatile
|
||||
var default_0mTabBingeSum: Long = 3471L
|
||||
|
||||
@Volatile
|
||||
var freeRetrofitMark: Int = 5934
|
||||
|
||||
|
||||
var collectionOnClick: CollectionOnClick? = null
|
||||
@ -38,90 +37,96 @@ class GFFavorites :
|
||||
),
|
||||
) : RecyclerView.ViewHolder(binding.root)
|
||||
|
||||
|
||||
private fun playDramaAppendModeForeverTest(lifecycleHttp: MutableList<Long>, secondsStarted: MutableMap<String,Double>) :MutableMap<String,Float> {
|
||||
var durationFailure:MutableList<Boolean> = mutableListOf<Boolean>()
|
||||
var setupMin__6:MutableList<Long> = mutableListOf<Long>()
|
||||
var toastCurrent:MutableMap<String,Boolean> = mutableMapOf<String,Boolean>()
|
||||
println(toastCurrent)
|
||||
var correspondentsTableinit:MutableMap<String,Float> = mutableMapOf<String,Float>()
|
||||
for(clips in toastCurrent) {
|
||||
correspondentsTableinit.put("multiframe", 0.0f)
|
||||
|
||||
}
|
||||
|
||||
return correspondentsTableinit
|
||||
private fun playDramaAppendModeForeverTest(
|
||||
lifecycleHttp: MutableList<Long>,
|
||||
secondsStarted: MutableMap<String, Double>
|
||||
): MutableMap<String, Float> {
|
||||
var durationFailure: MutableList<Boolean> = mutableListOf<Boolean>()
|
||||
var setupMin__6: MutableList<Long> = mutableListOf<Long>()
|
||||
var toastCurrent: MutableMap<String, Boolean> = mutableMapOf<String, Boolean>()
|
||||
println(toastCurrent)
|
||||
var correspondentsTableinit: MutableMap<String, Float> = mutableMapOf<String, Float>()
|
||||
for (clips in toastCurrent) {
|
||||
correspondentsTableinit.put("multiframe", 0.0f)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return correspondentsTableinit
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
|
||||
var scheduling_r = mutableListOf<Long>()
|
||||
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
|
||||
var scheduling_r = mutableListOf<Long>()
|
||||
|
||||
var elisionUnhighlight = this.playDramaAppendModeForeverTest(scheduling_r,mutableMapOf<String,Double>())
|
||||
var elisionUnhighlight =
|
||||
this.playDramaAppendModeForeverTest(scheduling_r, mutableMapOf<String, Double>())
|
||||
|
||||
var elisionUnhighlight_len:Int = elisionUnhighlight.size
|
||||
for(object_i in elisionUnhighlight) {
|
||||
println(object_i.key)
|
||||
println(object_i.value)
|
||||
}
|
||||
var elisionUnhighlight_len: Int = elisionUnhighlight.size
|
||||
for (object_i in elisionUnhighlight) {
|
||||
println(object_i.key)
|
||||
println(object_i.value)
|
||||
}
|
||||
|
||||
println(elisionUnhighlight)
|
||||
println(elisionUnhighlight)
|
||||
|
||||
|
||||
var dashboardI:String = "rscc"
|
||||
if (dashboardI.length > 171) {}
|
||||
println(dashboardI)
|
||||
var dashboardI: String = "rscc"
|
||||
if (dashboardI.length > 171) {
|
||||
}
|
||||
println(dashboardI)
|
||||
|
||||
|
||||
return VH(parent)
|
||||
}
|
||||
|
||||
|
||||
private fun liveOutputCallAnyEpisodeApplication(chooseSeries: Long) :Long {
|
||||
var responseSeekbar = mutableListOf<Float>()
|
||||
println(responseSeekbar)
|
||||
var eventFree:Double = 1094.0
|
||||
var seekbarHttp:String = "kanna"
|
||||
println(seekbarHttp)
|
||||
var iconSkewed:Int = 9958
|
||||
println(iconSkewed)
|
||||
var armthFreadSqrt:Long = 5210L
|
||||
eventFree = eventFree
|
||||
iconSkewed -= iconSkewed
|
||||
|
||||
return armthFreadSqrt
|
||||
private fun liveOutputCallAnyEpisodeApplication(chooseSeries: Long): Long {
|
||||
var responseSeekbar = mutableListOf<Float>()
|
||||
println(responseSeekbar)
|
||||
var eventFree: Double = 1094.0
|
||||
var seekbarHttp: String = "kanna"
|
||||
println(seekbarHttp)
|
||||
var iconSkewed: Int = 9958
|
||||
println(iconSkewed)
|
||||
var armthFreadSqrt: Long = 5210L
|
||||
eventFree = eventFree
|
||||
iconSkewed -= iconSkewed
|
||||
|
||||
}
|
||||
return armthFreadSqrt
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun onBindViewHolder(
|
||||
override fun onBindViewHolder(
|
||||
holder: VH,
|
||||
position: Int,
|
||||
item: TMainExtractionBean.DataListBean?
|
||||
) {
|
||||
|
||||
var splittingSigning:Long = this.liveOutputCallAnyEpisodeApplication(1455L)
|
||||
var splittingSigning: Long = this.liveOutputCallAnyEpisodeApplication(1455L)
|
||||
|
||||
var interpolator_splittingSigning: Int = splittingSigning.toInt()
|
||||
if (splittingSigning >= 2L) {
|
||||
println(splittingSigning)
|
||||
}
|
||||
var interpolator_splittingSigning: Int = splittingSigning.toInt()
|
||||
if (splittingSigning >= 2L) {
|
||||
println(splittingSigning)
|
||||
}
|
||||
|
||||
println(splittingSigning)
|
||||
println(splittingSigning)
|
||||
|
||||
|
||||
var loading6:Int = 1947
|
||||
if (loading6 > 87) {}
|
||||
var loading6: Int = 1947
|
||||
if (loading6 > 87) {
|
||||
}
|
||||
|
||||
|
||||
this.default_0mTabBingeSum = 9956L
|
||||
this.default_0mTabBingeSum = 9956L
|
||||
|
||||
this.freeRetrofitMark = 4850
|
||||
this.freeRetrofitMark = 4850
|
||||
|
||||
|
||||
if (null != item) {
|
||||
var transparent1:Boolean = true
|
||||
var transparent1: Boolean = true
|
||||
|
||||
|
||||
Glide.with(XNBackground.instance)
|
||||
@ -129,54 +134,75 @@ this.default_0mTabBingeSum = 9956L
|
||||
.placeholder(R.mipmap.collection_trending_recommend)
|
||||
.error(R.mipmap.collection_trending_recommend)
|
||||
.into(holder.binding.ivImage2)
|
||||
var factoryu:Int = 4239
|
||||
if (factoryu > 62) {}
|
||||
var factoryu: Int = 4239
|
||||
if (factoryu > 62) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
holder.binding.tvName2.text = item.name
|
||||
var progressJ:Long = 3354L
|
||||
while (progressJ >= 27L) { break }
|
||||
var progressJ: Long = 3354L
|
||||
while (progressJ >= 27L) {
|
||||
break
|
||||
}
|
||||
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
holder.binding.tvSeries.text = TranslationHelper.replace(
|
||||
TranslationHelper.getTranslation()?.mireo_EP.toString(),
|
||||
item.current_episode
|
||||
)
|
||||
holder.binding.tvSeriesAll.text = "/".plus(
|
||||
TranslationHelper.replace(
|
||||
TranslationHelper.getTranslation()?.veloria_all_episodes.toString(),
|
||||
item.episode_total.toString()
|
||||
)
|
||||
)
|
||||
} else {
|
||||
holder.binding.tvSeries.text =
|
||||
"EP.".plus(item.current_episode)
|
||||
holder.binding.tvSeriesAll.text = "/EP.".plus(item.episode_total)
|
||||
}
|
||||
var uploadp: Int = 6616
|
||||
while (uploadp >= 157) {
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
|
||||
holder.binding.tvSeries.text =
|
||||
"EP.".plus(item.current_episode)
|
||||
var uploadp:Int = 6616
|
||||
while (uploadp >= 157) { break }
|
||||
|
||||
|
||||
holder.binding.tvSeriesAll.text = "/EP.".plus(item.episode_total)
|
||||
var indexJ:Long = 6061L
|
||||
if (indexJ > 169L) {}
|
||||
var indexJ: Long = 6061L
|
||||
if (indexJ > 169L) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (item.is_collect == 1) {
|
||||
var login_:Float = 4781.0f
|
||||
while (login_ >= 30.0f) { break }
|
||||
var login_: Float = 4781.0f
|
||||
while (login_ >= 30.0f) {
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
holder.binding.ivCollection.setImageResource(R.mipmap.detele_rewards_episode)
|
||||
} else {
|
||||
var tabA:Float = 2603.0f
|
||||
if (tabA <= 39.0f) {}
|
||||
var tabA: Float = 2603.0f
|
||||
if (tabA <= 39.0f) {
|
||||
}
|
||||
|
||||
|
||||
holder.binding.ivCollection.setImageResource(R.mipmap.episode_utils)
|
||||
}
|
||||
|
||||
if (!item.updated_at.isNullOrEmpty()) {
|
||||
var outV:Float = 6386.0f
|
||||
if (outV == 10.0f) {}
|
||||
var outV: Float = 6386.0f
|
||||
if (outV == 10.0f) {
|
||||
}
|
||||
|
||||
|
||||
holder.binding.tvTime.text = getTimeAgoDetailed(item.updated_at)
|
||||
holder.binding.tvTime.text = item.updated_at
|
||||
}
|
||||
|
||||
holder.binding.ivCollection.setOnClickListener {
|
||||
var processa:Boolean = false
|
||||
println(processa)
|
||||
var processa: Boolean = false
|
||||
println(processa)
|
||||
|
||||
|
||||
item.let { it1 -> collectionOnClick?.collection(position, it1) }
|
||||
|
@ -30,7 +30,11 @@ class VeCustomerBuyRecordAdapter :
|
||||
item: VeCustomerBuyRecordsBean.DataBean?
|
||||
) {
|
||||
if (null != item) {
|
||||
holder.binding.tvBalance.text = "EP.".plus(item.episode).plus(" ").plus(item.name)
|
||||
if (TranslationHelper.getTranslation()!=null){
|
||||
holder.binding.tvBalance.text = TranslationHelper.replace(TranslationHelper.getTranslation()?.mireo_EP.toString(),item.episode.toString()).plus(" ").plus(item.name)
|
||||
}else{
|
||||
holder.binding.tvBalance.text = "EP.".plus(item.episode).plus(" ").plus(item.name)
|
||||
}
|
||||
holder.binding.tvName.text = TranslationHelper.getTranslation()
|
||||
?.let { TranslationHelper.getTranslation()?.veloria_purchase_single_episode }
|
||||
?: "Purchase Single Episode"
|
||||
|
@ -7,6 +7,7 @@ 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.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.databinding.ItemVeStoreCoinBinding
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
import kotlin.math.floor
|
||||
@ -36,7 +37,15 @@ class VeStoreCoinAdapter :
|
||||
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")
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
holder.binding.tvBonus.text = TranslationHelper.replace(
|
||||
TranslationHelper.getTranslation()?.veloria_bonus_count_text.toString(),
|
||||
item.send_coins.toString()
|
||||
)
|
||||
|
||||
} else {
|
||||
holder.binding.tvBonus.text = "+".plus(item.send_coins).plus(" Bonus")
|
||||
}
|
||||
} else {
|
||||
holder.binding.tvBonus.text = ""
|
||||
}
|
||||
@ -53,7 +62,7 @@ class VeStoreCoinAdapter :
|
||||
} else {
|
||||
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()
|
||||
if (sendCoins != null) {
|
||||
|
@ -0,0 +1,82 @@
|
||||
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.civil.TranslationHelper
|
||||
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) {
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
holder.binding.tvBonus.text = TranslationHelper.replace(
|
||||
TranslationHelper.getTranslation()?.veloria_bonus_count_text.toString(),
|
||||
item.send_coins.toString()
|
||||
)
|
||||
} else {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -36,15 +36,39 @@ class VeStoreVipAdapter :
|
||||
if (null != item) {
|
||||
holder.binding.tvDay.text = item.brief
|
||||
holder.binding.tvMoney.text = item.price_google
|
||||
holder.binding.tvMoneyDay.text = "/".plus(item.vip_type_key)
|
||||
holder.binding.tvMoneyDay.text = "/".plus(item.short_type)
|
||||
holder.binding.tvDescription.text = item.description
|
||||
if (TranslationHelper.getTranslation() != null) {
|
||||
holder.binding.tvInfo.text = TranslationHelper.getTranslation()?.veloria_store_auto_renew
|
||||
}
|
||||
if ((item.send_coins ?: 0) > 0) {
|
||||
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_store_donate_coins_ios?.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.tvExpire.visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.binding.tvExtra.visibility = View.GONE
|
||||
holder.binding.tvExpire.visibility = View.GONE
|
||||
}
|
||||
|
||||
|
||||
if (currentPosition == position) {
|
||||
holder.binding.tvSelect.visibility = View.VISIBLE
|
||||
} else {
|
||||
@ -53,40 +77,56 @@ class VeStoreVipAdapter :
|
||||
|
||||
|
||||
when (item.vip_type_key) {
|
||||
"week" -> {
|
||||
"month" -> {
|
||||
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.tvMoney.setTextColor(Color.parseColor("#64A3A7"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#64A3A7"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#416767"))
|
||||
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.setTextColor(Color.parseColor("#16706A"))
|
||||
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" -> {
|
||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_3)
|
||||
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("#303962"))
|
||||
holder.binding.tvDay.setTextColor(Color.parseColor("#7869FF"))
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#7869FF"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#7869FF"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#510087"))
|
||||
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" -> {
|
||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_store_vip_bg_4)
|
||||
holder.binding.tvDay.setTextColor(Color.parseColor("#9C6586"))
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#9C6586"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#9C6586"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#674162"))
|
||||
holder.binding.tvDay.setTextColor(Color.parseColor("#573D31"))
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#573D31"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#573D31"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#683D00"))
|
||||
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"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,100 @@
|
||||
package com.veloria.now.shortapp.subtractionCroll.modificationsPretch
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
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.civil.TranslationHelper
|
||||
import com.veloria.now.shortapp.databinding.ItemVeStoreVipBinding
|
||||
import com.veloria.now.shortapp.databinding.ItemVeVipSplashBinding
|
||||
import com.veloria.now.shortapp.texturedAsink.VePaySettingsBean
|
||||
|
||||
class VeVipSplashAdapter :
|
||||
BaseQuickAdapter<VePaySettingsBean.VipBean, VeVipSplashAdapter.VH>() {
|
||||
|
||||
var currentPosition = -1
|
||||
|
||||
class VH(
|
||||
parent: ViewGroup,
|
||||
val binding: ItemVeVipSplashBinding = ItemVeVipSplashBinding.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.VipBean?
|
||||
) {
|
||||
if (null != item) {
|
||||
holder.binding.tvMoney.text = item.price_google
|
||||
holder.binding.tvMoneyDay.text = "/".plus(item.short_type)
|
||||
if ((item.send_coins ?: 0) > 0) {
|
||||
holder.binding.tvExtra.text =
|
||||
"+".plus(
|
||||
TranslationHelper.getTranslation()
|
||||
?.let { TranslationHelper.getTranslation()?.veloria_extra } ?: "Extra")
|
||||
.plus(" ").plus(item.send_coins)
|
||||
|
||||
holder.binding.tvExtra.visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.binding.tvExtra.visibility = View.GONE
|
||||
}
|
||||
if (position == 0){
|
||||
holder.binding.tvHot.visibility = View.VISIBLE
|
||||
}else {
|
||||
holder.binding.tvHot.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (currentPosition == position) {
|
||||
holder.binding.tvSelect.visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.binding.tvSelect.visibility = View.GONE
|
||||
}
|
||||
|
||||
|
||||
when (item.vip_type_key) {
|
||||
"month" -> {
|
||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_1)
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#414867"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#414867"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#303962"))
|
||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_1)
|
||||
}
|
||||
|
||||
"week" -> {
|
||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_2)
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#416767"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#416767"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#416767"))
|
||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_2)
|
||||
}
|
||||
|
||||
"quarter" -> {
|
||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_3)
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#5F1EB9"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#5F1EB9"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#5F1EB9"))
|
||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_3)
|
||||
}
|
||||
|
||||
"year" -> {
|
||||
holder.binding.root.setBackgroundResource(R.mipmap.iv_dialog_vip_splash_vip_4)
|
||||
holder.binding.tvMoney.setTextColor(Color.parseColor("#573D31"))
|
||||
holder.binding.tvMoneyDay.setTextColor(Color.parseColor("#573D31"))
|
||||
holder.binding.tvExtra.setTextColor(Color.parseColor("#573D31"))
|
||||
holder.binding.tvExtra.setBackgroundResource(R.drawable.bg_store_vip_text_4)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -16,6 +16,19 @@ class VeTranslationBean(
|
||||
)
|
||||
|
||||
data class Translation(
|
||||
val veloria_update_title : String,
|
||||
val veloria_update_now : String,
|
||||
val veloria_no_restore : String,
|
||||
val veloria_store_donate_coins_ios : String,
|
||||
val veloria_coin_buy_title : String,
|
||||
val mireo_EP : String,
|
||||
val veloria_try_again : String,
|
||||
val veloria_network_error_1 : String,
|
||||
val veloria_search_results : String,
|
||||
val veloria_watch_now : String,
|
||||
val veloria_detail_recommand_title : String,
|
||||
val veloria_bonus_count_text : String,
|
||||
val veloria_donate_expire : String,
|
||||
val veloria_open_notice_at_watch_video : String,
|
||||
val veloria_allow : String,
|
||||
val veloria_open_notice_alert_text : String,
|
||||
@ -80,6 +93,7 @@ class VeTranslationBean(
|
||||
val veloria_recersal_of_fate : String,
|
||||
val veloria_extra : String,
|
||||
val veloria_store_tips : String,
|
||||
val veloria_unlock : String,
|
||||
val veloria_your_coins : String,
|
||||
val veloria_get_more_coins : String,
|
||||
val veloria_buy_now : String,
|
||||
@ -115,6 +129,7 @@ class VeTranslationBean(
|
||||
val veloria_order_record : String,
|
||||
val veloria_rewards : String,
|
||||
val veloria_store : String,
|
||||
val veloria_restore : String,
|
||||
val veloria_wallet : String,
|
||||
val veloria_bonus : String,
|
||||
val veloria_coins : String,
|
||||
|
@ -0,0 +1,7 @@
|
||||
package com.veloria.now.shortapp.texturedAsink
|
||||
|
||||
class VersionControlBean (
|
||||
val description: String,
|
||||
val version_code: String,
|
||||
val version_name: 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"?>
|
||||
<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" />
|
||||
</shape>
|
5
app/src/main/res/drawable/bg_coin_right_hot.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="#BE0069" />
|
||||
<corners android:topRightRadius="@dimen/dp_10" android:bottomLeftRadius="@dimen/dp_10" />
|
||||
</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">
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<gradient android:endColor="@color/transparent" android:startColor="#B2E7EA" android:type="linear" />
|
||||
<corners android:radius="@dimen/dp_6" />
|
||||
<gradient android:endColor="#7CA1D7" android:startColor="#ADCFFF" android:type="linear" />
|
||||
<corners android:topLeftRadius="@dimen/dp_10"
|
||||
android:bottomRightRadius="@dimen/dp_10"
|
||||
/>
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
@ -2,8 +2,10 @@
|
||||
<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_6" />
|
||||
<gradient android:endColor="#7AD9D4" android:startColor="#BDFFFB" android:type="linear" />
|
||||
<corners android:topLeftRadius="@dimen/dp_10"
|
||||
android:bottomRightRadius="@dimen/dp_10"
|
||||
/>
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
@ -2,8 +2,10 @@
|
||||
<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_6" />
|
||||
<gradient android:endColor="#975DFF" android:startColor="#DBC7FF" android:type="linear" />
|
||||
<corners android:topLeftRadius="@dimen/dp_10"
|
||||
android:bottomRightRadius="@dimen/dp_10"
|
||||
/>
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
@ -2,8 +2,10 @@
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<gradient android:endColor="@color/transparent" android:startColor="#FFD8F5" android:type="linear" />
|
||||
<corners android:radius="@dimen/dp_6" />
|
||||
<gradient android:endColor="#A87A46" android:startColor="#FBF2C7" android:type="linear" />
|
||||
<corners android:topLeftRadius="@dimen/dp_10"
|
||||
android:bottomRightRadius="@dimen/dp_10"
|
||||
/>
|
||||
</shape>
|
||||
</item>
|
||||
</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
app/src/main/res/drawable/bg_upload_version.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="#A3F0DE" />
|
||||
<corners android:radius="@dimen/dp_15"/>
|
||||
</shape>
|
@ -57,13 +57,23 @@
|
||||
tools:text="1" />
|
||||
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web_feedback"
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back"
|
||||
>
|
||||
<WebView
|
||||
android:id="@+id/web_feedback"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -39,10 +39,17 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back"
|
||||
app:srlEnablePreviewInEditMode="false">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web_feedback_detail"
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web_feedback_detail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||
|
||||
|
@ -39,10 +39,18 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back"
|
||||
app:srlEnablePreviewInEditMode="false">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web_feedback_list"
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="match_parent"
|
||||
>
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web_feedback_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
|
||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||
|
||||
|
@ -29,180 +29,189 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/iv_back" />
|
||||
|
||||
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||
android:id="@+id/refresh"
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back">
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scrollView"
|
||||
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||
android:id="@+id/refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scrollView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_data"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:background="@drawable/e_adapter_place"
|
||||
android:padding="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_total_text"
|
||||
android:layout_width="wrap_content"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_data"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_5"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:text="Total Coins"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:background="@drawable/e_adapter_place"
|
||||
android:padding="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_total"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_5"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:drawableStart="@mipmap/iv_coins"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="999"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_20"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total_text" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_total_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:text="Total Coins"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view"
|
||||
android:layout_width="@dimen/dp_1"
|
||||
android:layout_height="@dimen/dp_35"
|
||||
android:layout_marginTop="@dimen/dp_25"
|
||||
android:background="@color/white30"
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_total"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:drawableStart="@mipmap/iv_coins"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="999"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_20"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total_text" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view"
|
||||
android:layout_width="@dimen/dp_1"
|
||||
android:layout_height="@dimen/dp_35"
|
||||
android:layout_marginTop="@dimen/dp_25"
|
||||
android:background="@color/white30"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_recharge_text"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_18"
|
||||
android:text="Recharge"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_recharge"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:layout_marginBottom="@dimen/dp_5"
|
||||
android:text="0"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_18"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_recharge_text" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_donate_text"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_18"
|
||||
android:text="Donate"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toEndOf="@+id/view"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_donate"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:layout_marginBottom="@dimen/dp_5"
|
||||
android:singleLine="true"
|
||||
android:text="0"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_18"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/view"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_donate_text" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/cardView"
|
||||
android:layout_width="@dimen/dp_44"
|
||||
android:layout_height="@dimen/dp_44"
|
||||
android:layout_marginEnd="@dimen/dp_25"
|
||||
app:cardCornerRadius="@dimen/dp_22"
|
||||
app:cardElevation="0dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total" />
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_recharge_text"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_5"
|
||||
android:layout_marginTop="@dimen/dp_18"
|
||||
android:text="Recharge"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total" />
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_avatar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@mipmap/binge_banner" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_recharge"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_5"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:layout_marginBottom="@dimen/dp_5"
|
||||
android:text="0"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_18"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_recharge_text" />
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_donate_text"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_18"
|
||||
android:text="Donate"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toEndOf="@+id/view"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_total" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_donate"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:layout_marginBottom="@dimen/dp_5"
|
||||
android:singleLine="true"
|
||||
android:text="0"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_18"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/view"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_donate_text" />
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/cl_tab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:background="@drawable/e_adapter_place"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/dp_5"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cl_data">
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_115"
|
||||
android:background="@color/transparent"
|
||||
app:tabIndicatorColor="@color/transparent"
|
||||
app:tabIndicatorHeight="0dp"
|
||||
app:tabMode="fixed"
|
||||
app:tabRippleColor="@null" />
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/cardView"
|
||||
android:layout_width="@dimen/dp_44"
|
||||
android:layout_height="@dimen/dp_44"
|
||||
android:layout_marginEnd="@dimen/dp_25"
|
||||
app:cardCornerRadius="@dimen/dp_22"
|
||||
app:cardElevation="0dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_avatar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@mipmap/binge_banner" />
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/cl_tab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:background="@drawable/e_adapter_place"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/dp_5"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cl_data">
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_115"
|
||||
android:background="@color/transparent"
|
||||
app:tabIndicatorColor="@color/transparent"
|
||||
app:tabIndicatorHeight="0dp"
|
||||
app:tabMode="fixed"
|
||||
app:tabRippleColor="@null" />
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -5,286 +5,115 @@
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/playfair_selected_gradle">
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_35"
|
||||
android:padding="@dimen/dp_15"
|
||||
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:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:text="Store"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_restore"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@+id/iv_back"
|
||||
android:layout_alignBottom="@+id/iv_back"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:text="Restore"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
>
|
||||
android:layout_below="@+id/iv_back">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scrollView"
|
||||
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
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
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">
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/ll_tab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
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"
|
||||
<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_toBottomOf="@+id/ll_tab">
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<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:paddingVertical="@dimen/dp_15"
|
||||
android:visibility="gone">
|
||||
<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.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:paddingVertical="@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:paddingHorizontal="@dimen/dp_10"
|
||||
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_marginStart="@dimen/dp_15"
|
||||
android:layout_marginEnd="@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_marginEnd="@dimen/dp_15"
|
||||
android:layout_marginStart="@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.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:paddingBottom="@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/fl_tab" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_coin" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="@dimen/dp_35"
|
||||
android:layout_height="@dimen/dp_35"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:padding="@dimen/dp_10"
|
||||
android:src="@mipmap/right_dimens"
|
||||
/>
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
</RelativeLayout>
|
125
app/src/main/res/layout/dialog_version_control.xml
Normal file
@ -0,0 +1,125 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:background="@mipmap/playfair_selected_gradle">
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/ppi_auto_renderers"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/cl_one"
|
||||
app:layout_constraintEnd_toEndOf="@+id/cl_one"
|
||||
app:layout_constraintStart_toStartOf="@+id/cl_one"
|
||||
app:layout_constraintTop_toTopOf="@+id/cl_one" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_one"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@mipmap/checkbox_layout"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:src="@mipmap/iv_dialog_text_top"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_23"
|
||||
android:layout_marginTop="@dimen/dp_36"
|
||||
android:layout_marginEnd="@dimen/dp_135"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:lineSpacingExtra="@dimen/dp_2"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
android:text="Discover a new version"
|
||||
android:textColor="@color/avatarAdvert"
|
||||
android:textSize="@dimen/sp_20"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_version"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_23"
|
||||
android:layout_marginTop="@dimen/sp_12"
|
||||
android:background="@drawable/bg_upload_version"
|
||||
android:paddingHorizontal="@dimen/sp_8"
|
||||
android:paddingVertical="@dimen/dp_3"
|
||||
android:text="v2.0"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/dp_23"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:minLines="4"
|
||||
android:text="when you sign out, your watch history will not be synced to your account."
|
||||
android:textColor="@color/avatarAdvert"
|
||||
android:textSize="@dimen/sp_15"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tv_now"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_version" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_now"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_marginHorizontal="@dimen/dp_30"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
android:background="@drawable/mc_player"
|
||||
android:gravity="center"
|
||||
android:text="Update Now"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_content" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="-45dp"
|
||||
android:src="@mipmap/iv_version_control_top"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/cl_one" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:padding="@dimen/dp_10"
|
||||
android:src="@mipmap/factory_icon"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cl_one" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -2,7 +2,7 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical">
|
||||
>
|
||||
|
||||
|
||||
<View
|
||||
@ -10,8 +10,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@+id/iv_top"
|
||||
android:layout_alignBottom="@+id/iv_vip"
|
||||
android:layout_marginTop="@dimen/dp_135"
|
||||
android:layout_alignBottom="@+id/v_line"
|
||||
android:layout_marginTop="@dimen/dp_75"
|
||||
android:background="@mipmap/iv_dialog_vip_splash_bg" />
|
||||
|
||||
|
||||
@ -20,22 +20,21 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:background="@mipmap/iv_dialog_vip_splash_top" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/iv_top"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginHorizontal="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:layout_marginEnd="@dimen/dp_115"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:lineSpacingExtra="@dimen/dp_2"
|
||||
android:singleLine="true"
|
||||
android:textStyle="bold"
|
||||
android:gravity="center"
|
||||
android:text="Unlock VIP Privileges!"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16" />
|
||||
@ -54,37 +53,29 @@
|
||||
android:textColor="#C5C5C5"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_vip"
|
||||
android:layout_width="wrap_content"
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="@dimen/dp_240"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tv_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginHorizontal="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:paddingBottom="@dimen/dp_22"
|
||||
android:src="@mipmap/iv_dialog_vip_splash_vip" />
|
||||
/>
|
||||
|
||||
<View
|
||||
android:id="@+id/v_line"
|
||||
android:layout_width="@dimen/dp_1"
|
||||
android:layout_height="@dimen/dp_15"
|
||||
android:layout_below="@+id/recyclerView"
|
||||
/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_to_store"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_below="@+id/v_bg"
|
||||
android:layout_marginHorizontal="@dimen/dp_30"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:layout_marginBottom="@dimen/dp_13"
|
||||
android:background="@mipmap/iv_dialog_vip_splash_onclick_bg"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center"
|
||||
android:text="Unlock VIP Benefits"
|
||||
android:textColor="#005D48"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tv_to_store"
|
||||
android:layout_below="@+id/v_line"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:padding="@dimen/dp_10"
|
||||
android:src="@mipmap/factory_icon" />
|
||||
|
@ -261,6 +261,9 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:ellipsize="end"
|
||||
android:maxWidth="@dimen/dp_60"
|
||||
android:maxLines="2"
|
||||
android:text="Donate"
|
||||
android:textColor="@color/gradleLayout"
|
||||
android:textSize="@dimen/sp_14"
|
||||
@ -332,10 +335,10 @@
|
||||
android:id="@+id/tv_rewards"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
android:drawableTop="@mipmap/bold_wight_fddebcdbeeffcebdf"
|
||||
android:gravity="center"
|
||||
android:text="Rewards"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintEnd_toStartOf="@+id/tv_favorites"
|
||||
@ -392,10 +395,10 @@
|
||||
android:drawablePadding="@dimen/dp_8"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingHorizontal="@dimen/dp_10"
|
||||
android:visibility="visible"
|
||||
android:text="@string/dimensImage"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="visible" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_delete_account"
|
||||
|
@ -14,13 +14,13 @@
|
||||
android:src="@mipmap/right_dimens"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<ScrollView
|
||||
android:orientation="vertical"
|
||||
android:layout_height="0dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="0dp"
|
||||
android:background="#58AE3A">
|
||||
</ScrollView>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="#58AE3A"
|
||||
android:orientation="vertical"
|
||||
android:visibility="invisible"></ScrollView>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_title"
|
||||
@ -33,23 +33,32 @@ android:background="#58AE3A">
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/iv_back" />
|
||||
<LinearLayout
|
||||
android:layout_height="210dp"
|
||||
android:padding="53dp"
|
||||
android:visibility="gone"
|
||||
android:background="#1AB1B1"
|
||||
android:layout_width="wrap_content"
|
||||
android:orientation="vertical">
|
||||
</LinearLayout>
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webView"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="210dp"
|
||||
android:background="#1AB1B1"
|
||||
android:orientation="vertical"
|
||||
android:padding="53dp"
|
||||
android:visibility="gone"></LinearLayout>
|
||||
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:background="@color/transparent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back" />
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:background="@color/transparent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_back" />
|
||||
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,13 +1,11 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/ll_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_108"
|
||||
android:background="@drawable/bg_store_coin_bg"
|
||||
android:orientation="vertical"
|
||||
tools:background="@color/black">
|
||||
android:background="@mipmap/bg_store_coin_bg"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.hjq.shape.view.ShapeTextView
|
||||
android:id="@+id/tv_hot"
|
||||
@ -37,18 +35,17 @@
|
||||
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:drawableEnd="@mipmap/start_text"
|
||||
android:drawablePadding="@dimen/dp_3"
|
||||
android:textSize="@dimen/sp_16"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@ -68,16 +65,17 @@
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_price"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:background="@drawable/bg_store_coin_money_bottom"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text=""
|
||||
android:textColor="@color/white"
|
||||
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" />
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
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"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
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">
|
||||
|
||||
<TextView
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_day"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="@dimen/dp_14"
|
||||
android:layout_marginTop="@dimen/dp_32"
|
||||
android:layout_marginTop="@dimen/dp_18"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="Weekly VIP"
|
||||
android:textColor="#64A3A7"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold" />
|
||||
android:textColor="#647DA7"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
<TextView
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_money"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tv_day"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="@dimen/dp_14"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:text="0"
|
||||
android:textColor="#64A3A7"
|
||||
android:textSize="@dimen/sp_22"
|
||||
android:textColor="#647DA7"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_money_day"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@+id/tv_money"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginBottom="@dimen/dp_3"
|
||||
android:layout_marginBottom="@dimen/dp_6"
|
||||
android:layout_toEndOf="@+id/tv_money"
|
||||
android:text="/Week"
|
||||
android:textColor="#64A3A7"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
android:textColor="#647DA7"
|
||||
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
|
||||
android:id="@+id/tv_extra"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tv_money_day"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@drawable/bg_store_vip_1"
|
||||
android:drawableEnd="@mipmap/start_text"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
@ -59,14 +97,14 @@
|
||||
android:paddingHorizontal="@dimen/dp_10"
|
||||
android:paddingVertical="@dimen/dp_3"
|
||||
android:text="+Extra 500"
|
||||
android:textColor="#416767"
|
||||
android:textColor="#214170"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/tv_select"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_17"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:background="@drawable/bg_coin_left"
|
||||
android:gravity="center"
|
||||
android:paddingHorizontal="@dimen/dp_8"
|
||||
|
66
app/src/main/res/layout/item_ve_vip_splash.xml
Normal file
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:background="@mipmap/iv_dialog_vip_splash_vip_1">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_money"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:text="0"
|
||||
android:textColor="#416767"
|
||||
android:textSize="@dimen/sp_22"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_money_day"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:layout_toEndOf="@+id/tv_money"
|
||||
android:text="/month"
|
||||
android:textColor="#416767"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_extra"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tv_money"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:drawableEnd="@mipmap/iv_coins_small"
|
||||
android:paddingVertical="@dimen/dp_3"
|
||||
android:paddingHorizontal="@dimen/dp_6"
|
||||
android:background="@drawable/bg_store_vip_text_1"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:text="+Extra 0"
|
||||
android:textColor="#416767"
|
||||
android:textSize="@dimen/sp_10" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tv_hot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginTop="@dimen/dp_4"
|
||||
android:visibility="gone"
|
||||
android:layout_marginEnd="@dimen/dp_4"
|
||||
android:background="@mipmap/iv_store_vip_big_hot" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/tv_select"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@drawable/bg_coin_left"
|
||||
android:gravity="center"
|
||||
android:paddingHorizontal="@dimen/dp_5"
|
||||
android:src="@mipmap/iv_yes"
|
||||
android:visibility="invisible" />
|
||||
|
||||
|
||||
</RelativeLayout>
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/stateLayout"
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/playfair_selected_gradle">
|
||||
@ -9,12 +8,17 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager_detail"
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" />
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager_detail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" />
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_cover"
|
||||
@ -25,16 +29,24 @@
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_lock"
|
||||
layout="@layout/layout_ve_lock_episode"
|
||||
/>
|
||||
layout="@layout/layout_ve_lock_episode" />
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_recommend"
|
||||
layout="@layout/layout_player_recommend"
|
||||
/>
|
||||
layout="@layout/layout_player_recommend" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_35"
|
||||
android:padding="@dimen/dp_15"
|
||||
android:src="@mipmap/right_dimens"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
|
||||
</FrameLayout>
|
@ -1,102 +1,145 @@
|
||||
<?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"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
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: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.LinearLayoutCompat
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_26"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_17"
|
||||
android:layout_toRightOf="@+id/tv_coins"
|
||||
android:background="@drawable/jru_categories_constants"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:paddingHorizontal="@dimen/dp_12">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_unlock_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Unlock: "
|
||||
android:textColor="@color/white" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_unlock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/iv_coins_small"
|
||||
android:drawablePadding="@dimen/dp_3"
|
||||
android:gravity="center"
|
||||
android:text="0"
|
||||
android:textColor="#05CEA0" />
|
||||
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
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
|
||||
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"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_135"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
app:banner_auto_loop="false"
|
||||
app:banner_infinite_loop="false"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_coins_text"
|
||||
/>
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_buy_hint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:background="@drawable/bg_player_buy_hint"
|
||||
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
|
||||
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.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_coin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_buy_hint" />
|
||||
<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.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.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.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>
|
@ -1,415 +1,416 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/stateLayout"
|
||||
android:background="@mipmap/playfair_selected_gradle">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/text_home"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="@dimen/dp_60"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/home_addictive_shorts_await"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_15"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_time"
|
||||
android:layout_width="@dimen/dp_40"
|
||||
android:layout_height="@dimen/dp_40"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:src="@mipmap/lock_round"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/text_home" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/text_home"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="@dimen/dp_60"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/home_addictive_shorts_await"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_15"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/fl_search"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/dp_40"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:background="@drawable/uta_android_news"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintEnd_toStartOf="@+id/iv_time"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/iv_time">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_5"
|
||||
android:src="@mipmap/splash_backup" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="#CBB7AB"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="35dp"
|
||||
android:visibility="gone"></LinearLayout>
|
||||
|
||||
<com.veloria.now.shortapp.rewards.ESplashStandView
|
||||
android:id="@+id/tv_search"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/iv_time"
|
||||
android:layout_width="@dimen/dp_40"
|
||||
android:layout_height="@dimen/dp_40"
|
||||
android:gravity="center_vertical"
|
||||
android:singleLine="true"
|
||||
android:text="@string/search_dramas"
|
||||
android:textColor="#9d9d9d" />
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:src="@mipmap/lock_round"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/text_home" />
|
||||
|
||||
<TextView
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/fl_search"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="#1BC0AB"
|
||||
android:padding="36dp"
|
||||
android:textColor="#2B74CE"
|
||||
android:visibility="gone" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
android:layout_height="@dimen/dp_40"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:background="@drawable/uta_android_news"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintEnd_toStartOf="@+id/iv_time"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/iv_time">
|
||||
|
||||
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||
android:id="@+id/refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/fl_search">
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_5"
|
||||
android:src="@mipmap/splash_backup" />
|
||||
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/stateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="#CBB7AB"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="35dp"
|
||||
android:visibility="gone"></LinearLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scrollView"
|
||||
<com.veloria.now.shortapp.rewards.ESplashStandView
|
||||
android:id="@+id/tv_search"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="@dimen/dp_40"
|
||||
android:gravity="center_vertical"
|
||||
android:singleLine="true"
|
||||
android:text="@string/search_dramas"
|
||||
android:textColor="#9d9d9d" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraint"
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="#1BC0AB"
|
||||
android:padding="36dp"
|
||||
android:textColor="#2B74CE"
|
||||
android:visibility="gone" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||
android:id="@+id/refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/fl_search">
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scrollView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.youth.banner.Banner
|
||||
android:id="@+id/banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_182"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:visibility="gone"
|
||||
app:banner_auto_loop="true"
|
||||
app:banner_indicator_gravity="right"
|
||||
app:banner_indicator_marginBottom="@dimen/dp_10"
|
||||
app:banner_indicator_marginRight="@dimen/dp_10"
|
||||
app:banner_indicator_normal_color="@color/white35"
|
||||
app:banner_indicator_normal_width="@dimen/dp_5"
|
||||
app:banner_indicator_radius="@dimen/dp_4"
|
||||
app:banner_indicator_selected_color="#7C174F"
|
||||
app:banner_indicator_selected_width="@dimen/dp_7"
|
||||
app:banner_indicator_space="@dimen/dp_5"
|
||||
app:banner_radius="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:background="@color/white" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_binge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:drawableStart="@mipmap/icon_base"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/binge_worthy_picks"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/banner" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_binge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_binge"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_binge" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_binge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_binge" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_just"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/just_dropped"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_binge" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_just"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_just"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_just" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_just"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_just" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_drama"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:drawableStart="@mipmap/ball_colors_auto_ho"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/drama_champions"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_just" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_drama"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_drama"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_drama" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_drama"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_drama" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_free"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/free_gems"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_drama" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_free"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_free"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_free" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_free"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_free" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_categories_tab"
|
||||
android:id="@+id/constraint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_90"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_free">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
<com.youth.banner.Banner
|
||||
android:id="@+id/banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/details_lock_list"
|
||||
android:layout_height="@dimen/dp_182"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:visibility="gone"
|
||||
app:banner_auto_loop="true"
|
||||
app:banner_indicator_gravity="right"
|
||||
app:banner_indicator_marginBottom="@dimen/dp_10"
|
||||
app:banner_indicator_marginRight="@dimen/dp_10"
|
||||
app:banner_indicator_normal_color="@color/white35"
|
||||
app:banner_indicator_normal_width="@dimen/dp_5"
|
||||
app:banner_indicator_radius="@dimen/dp_4"
|
||||
app:banner_indicator_selected_color="#7C174F"
|
||||
app:banner_indicator_selected_width="@dimen/dp_7"
|
||||
app:banner_indicator_space="@dimen/dp_5"
|
||||
app:banner_radius="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:background="@color/white" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_categories"
|
||||
android:id="@+id/tv_menu_binge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:drawableStart="@mipmap/icon_base"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
android:text="@string/select_categories"
|
||||
android:text="@string/binge_worthy_picks"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/banner" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_binge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_binge"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_binge" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_categories_tab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_categories" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#1805E2"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="4dp"
|
||||
android:visibility="gone"></LinearLayout>
|
||||
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/state_categories"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cl_categories_tab">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_categories"
|
||||
android:id="@+id/recycler_binge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/dp_10"
|
||||
android:layout_marginVertical="@dimen/dp_10" />
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_binge" />
|
||||
|
||||
<ScrollView
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_just"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/just_dropped"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_binge" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_just"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_just"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_just" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_just"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="249dp"
|
||||
android:background="#C8993B"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_just" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_drama"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:drawableStart="@mipmap/ball_colors_auto_ho"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/drama_champions"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_just" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_drama"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_drama"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_drama" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_drama"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_drama" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_free"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/free_gems"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_drama" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_more_free"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableEnd="@mipmap/privacy_stop"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingVertical="@dimen/dp_5"
|
||||
android:text="More"
|
||||
android:textColor="@color/white80"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_menu_free"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_menu_free" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_free"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_free" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_categories_tab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_90"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/recycler_free">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/details_lock_list"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_categories"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
android:text="@string/select_categories"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_categories_tab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_categories" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#1805E2"
|
||||
android:orientation="vertical"
|
||||
android:padding="22dp"
|
||||
android:visibility="gone"></ScrollView>
|
||||
android:paddingBottom="4dp"
|
||||
android:visibility="gone"></LinearLayout>
|
||||
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||
<com.veloria.now.shortapp.rewards.VSNotificationsDefault
|
||||
android:id="@+id/state_categories"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cl_categories_tab">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_categories_tab_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_90"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:background="#0C0C0E"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/fl_search">
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_categories"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/dp_10"
|
||||
android:layout_marginVertical="@dimen/dp_10" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="249dp"
|
||||
android:background="#C8993B"
|
||||
android:orientation="vertical"
|
||||
android:padding="22dp"
|
||||
android:visibility="gone"></ScrollView>
|
||||
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_categories_tab_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/details_lock_list_1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_categories_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
android:text="@string/select_categories"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_categories_tab_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_height="@dimen/dp_90"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:background="#0C0C0E"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_categories_1" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/fl_search">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/details_lock_list_1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_menu_categories_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
android:text="@string/select_categories"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_categories_tab_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_menu_categories_1" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</com.veloria.now.shortapp.rewards.VSNotificationsDefault>
|
@ -46,6 +46,8 @@ android:orientation="vertical">
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/tvEmptyTitle"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginHorizontal="@dimen/dp_15"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
android:text="Start exploring and add something!"
|
||||
android:textColor="@color/white"
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 24 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/bg_store_coin_bg.webp
Normal file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 16 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/binge_banner.webp
Normal file
After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 22 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_coins_small.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 109 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_dialog_vip_activate_top.webp
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_dialog_vip_splash_bg.9.png
Normal file
After Width: | Height: | Size: 207 KiB |
Before Width: | Height: | Size: 166 KiB |
Before Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 545 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_dialog_vip_splash_top.webp
Normal file
After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 133 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_dialog_vip_splash_vip.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_dialog_vip_splash_vip_1.png
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/iv_dialog_vip_splash_vip_2.png
Normal file
After Width: | Height: | Size: 95 KiB |