一键连新增 充值更改

This commit is contained in:
level 2025-10-17 13:09:41 +08:00
parent 8dca2e837d
commit 87bd1e60b7
12 changed files with 543 additions and 350 deletions

View File

@ -10,20 +10,24 @@
<uses-feature <uses-feature
android:name="android.hardware.touchscreen" android:name="android.hardware.touchscreen"
android:required="false" /> android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/> <!-- 适配Android 14以上 -->
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<!-- 适配Android 14以上 google 上架需要注意相关政策 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application <application
android:name=".app.MainApplication" android:name=".app.MainApplication"
android:fullBackupContent="@xml/full_backup_content" android:fullBackupContent="@xml/full_backup_content"

View File

@ -61,7 +61,7 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
context!!.resources.getString(R.string.laPay) + "${rechargeInfo.grade!![position].amount}" + context!!.resources.getString( context!!.resources.getString(R.string.laPay) + "${rechargeInfo.grade!![position].amount}" + context!!.resources.getString(
R.string.Yuan R.string.Yuan
).replace("$", "") ).replace("$", "")
holder.cyn.text = context!!.resources.getString(R.string.everyDay) holder.cyn.text = "¥"
if (rechargeInfo.grade!![position].days != null) { if (rechargeInfo.grade!![position].days != null) {
val giftDay = rechargeInfo.grade?.getOrNull(position)?.giftDay ?: 0 val giftDay = rechargeInfo.grade?.getOrNull(position)?.giftDay ?: 0

View File

@ -7,6 +7,8 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.Environment
import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import android.widget.FrameLayout import android.widget.FrameLayout
@ -264,10 +266,37 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc
} }
7->{ 7->{
// var a=0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// var c=1/a if (Environment.isExternalStorageManager()) {
showLoading(
resources.getString(R.string.UploadingInProgress),
requireActivity()
)
// 已授予权限
val directory: File? = requireActivity().getExternalFilesDir("CrashLog")
if (directory != null) {
val allFilePath = getAllFilePath(directory.path)
if (allFilePath.isNotEmpty()) {
mainAtyVM.getUploadParameters()
} else {
android.util.Log.i("checkPermission", "allFilePath is empty")
hideLoading()
RxToast.info(resources.getString(R.string.NoErrorLogs))
}
} else {
hideLoading()
RxToast.error(resources.getString(R.string.NoErrorLogs))
}
} else {
// 未授予权限,跳转到设置页面
val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
startActivity(intent)
hideLoading()
}
} else {
checkPermission() checkPermission()
} }
}
8->{ 8->{
val intent = Intent(requireContext(),AgreementAndPrivacyActivity::class.java) val intent = Intent(requireContext(),AgreementAndPrivacyActivity::class.java)
intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_PRIVACY_AGREEMENT) intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_PRIVACY_AGREEMENT)

View File

@ -4,12 +4,14 @@ import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Build
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.ImageView import android.widget.ImageView
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatImageView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.net.toUri import androidx.core.net.toUri
@ -65,6 +67,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.text.DecimalFormat import java.text.DecimalFormat
import java.text.SimpleDateFormat
import java.util.Locale
class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers.IO) { class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers.IO) {
@ -78,6 +82,9 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
private var selectedGrade: Grade? = null private var selectedGrade: Grade? = null
private lateinit var rxDialogShapeLoading: RxDialogShapeLoading private lateinit var rxDialogShapeLoading: RxDialogShapeLoading
private lateinit var tvUserName: TextView
private lateinit var tvUserTimeEnd: TextView
private lateinit var tvTxtShowLink:TextView
private var outTradeNo = "" private var outTradeNo = ""
private var selectedGradeID :Int=0 private var selectedGradeID :Int=0
//stripePay 支付 //stripePay 支付
@ -113,6 +120,11 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java] mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java]
viewModel = ViewModelProvider(this)[RechargeViewModel::class.java] viewModel = ViewModelProvider(this)[RechargeViewModel::class.java]
observe(this, viewModel) observe(this, viewModel)
val userName =
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
tvUserName.text=userName
setExpireDate()
//获取充值列表 //获取充值列表
val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!! val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!!
val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!! val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!!
@ -127,7 +139,17 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
tvPay=view.findViewById(R.id.tvPay) tvPay=view.findViewById(R.id.tvPay)
tvRechargeRecord=view.findViewById(R.id.tvRechargeRecord) tvRechargeRecord=view.findViewById(R.id.tvRechargeRecord)
clCustom=view.findViewById(R.id.clCustom) clCustom=view.findViewById(R.id.clCustom)
tvUserName=view.findViewById(R.id.tvUserName)
tvUserTimeEnd=view.findViewById(R.id.tvUserTimeEnd)
tvTxtShowLink=view.findViewById(R.id.tvTxtShowLink)
swipeLayout.setColorSchemeColors(Color.rgb(47, 223, 189)) swipeLayout.setColorSchemeColors(Color.rgb(47, 223, 189))
tvTxtShowLink.setOnClickListener {
startActivity(Intent(requireActivity(), CustomerServiceWebView::class.java))
}
swipeLayout.setOnRefreshListener { swipeLayout.setOnRefreshListener {
selectedGrade = null selectedGrade = null
val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!! val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!!
@ -548,4 +570,75 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
baseLoadingView?.cancel() baseLoadingView?.cancel()
} }
} }
fun setExpireDate() {
val isExpire = checkExpire()
var endTimeInfo = "--"
if (isExpire) {
if (isAdded) {
endTimeInfo = resources.getString(R.string.AccountExpired)
}
} else {
val validPeriod = MMKV.defaultMMKV().decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD)
val decodeString = MMKV.defaultMMKV().decodeString(BZYConstants.languageInfo, "")
if (decodeString.isNullOrEmpty()) {
//获取当前系统语言
val config = resources.configuration
val language = config.locale.language
if (language.equals("en")) {
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val localEN = Locale.ENGLISH
SimpleDateFormat("MM/dd/yyyy HH:mm", localEN)
} else {
val localEN = Locale.ENGLISH
SimpleDateFormat("MM/dd/yyyy HH:mm", localEN)
}
endTimeInfo = dateFormat.format(validPeriod)
} else {
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
SimpleDateFormat("yyyy年MM月dd日 HH:mm")
} else {
SimpleDateFormat("yyyy年MM月dd日 HH:mm")
}
endTimeInfo = dateFormat.format(validPeriod)
}
} else {
if (decodeString == "English") {
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val locale = Locale.ENGLISH
SimpleDateFormat("MM/dd/yyyy HH:mm", locale)
} else {
val locale = Locale.ENGLISH
SimpleDateFormat("MM/dd/yyyy HH:mm", locale)
}
endTimeInfo = dateFormat.format(validPeriod)
} else {
val dateFormat = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
SimpleDateFormat("yyyy年MM月dd日 HH:mm")
} else {
SimpleDateFormat("yyyy年MM月dd日 HH:mm")
}
endTimeInfo = dateFormat.format(validPeriod)
}
}
}
tvUserTimeEnd.text =resources.getString(R.string.expire_date)+endTimeInfo
}
private fun checkExpire(): Boolean {
val validPeriod = MMKV.defaultMMKV().decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD)
if (validPeriod > 0) {
val nowTime = System.currentTimeMillis()
Log.d("validPeriod==>$validPeriod, nowTime==>$nowTime")
if (validPeriod >= nowTime) {
return false
}
}
return true
}
} }

View File

@ -0,0 +1,19 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- This is the main color -->
<item>
<shape>
<!-- 边框颜色 -->
<gradient android:startColor="#FFFA6407" android:endColor="#FFFF9345" android:angle="0"/>
<corners android:radius="16dp"/>
</shape>
</item>
<!-- 给View的上 左 右设置8dp的边框 -->
<item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp" >
<shape>
<!-- View填充颜色 -->
<solid android:color="#fff" />
<corners android:radius="16dp"/>
</shape>
</item>
</layer-list>

View File

@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="65dp"
android:height="20dp"
android:viewportWidth="65"
android:viewportHeight="20">
<path
android:pathData="M0,10C0,4.477 4.477,0 10,0H32.5H61C63.209,0 65,1.791 65,4V10C65,15.523 60.523,20 55,20H0V10Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="0"
android:startY="10"
android:endX="65"
android:endY="10"
android:type="linear">
<item android:offset="0" android:color="#FFC36BBF"/>
<item android:offset="1" android:color="#FFFF465E"/>
</gradient>
</aapt:attr>
</path>
</vector>

View File

@ -7,7 +7,7 @@ android:color="#BFD5D5D5" >
android:angle="360" android:angle="360"
android:endColor="@color/white" android:endColor="@color/white"
android:startColor="@color/white" /> android:startColor="@color/white" />
<corners android:topRightRadius="30dp" android:topLeftRadius="30dp" android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp"/> <corners android:topRightRadius="13dp" android:topLeftRadius="13dp" android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp"/>
</shape> </shape>
</item> </item>
</ripple> </ripple>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#BFD5D5D5" >
<item>
<shape>
<gradient
android:angle="360"
android:endColor="@color/white"
android:startColor="@color/white" />
<corners android:radius="13dp"/>
</shape>
</item>
</ripple>

View File

@ -13,7 +13,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="12dp" android:layout_marginTop="48dp"
> >
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aiBack" android:id="@+id/aiBack"
@ -52,6 +52,16 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/clTitle"
app:layout_constraintBottom_toBottomOf="parent"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clUser" android:id="@+id/clUser"
@ -62,14 +72,14 @@
android:layout_marginStart="@dimen/dp_10" android:layout_marginStart="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_10" android:layout_marginEnd="@dimen/dp_10"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
app:layout_constraintTop_toBottomOf="@+id/clTitle" app:layout_constraintTop_toTopOf="parent"
> >
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clCustom" android:id="@+id/clCustom"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/setting_head_bg" android:background="@mipmap/yjl_vip_hear"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -92,11 +102,11 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@+id/userIcon" app:layout_constraintStart_toEndOf="@+id/userIcon"
app:layout_constraintEnd_toStartOf="@+id/aivStart" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/userIcon" app:layout_constraintTop_toTopOf="@+id/userIcon"
app:layout_constraintBottom_toBottomOf="@+id/userIcon" app:layout_constraintBottom_toBottomOf="@+id/userIcon"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="108dp"
android:orientation="vertical" android:orientation="vertical"
> >
<TextView <TextView
@ -105,7 +115,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
android:textColor="#FF333333" android:textColor="#FF333333"
android:textSize="16sp" android:textSize="14sp"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:drawableRight="@drawable/ic_s_copy" android:drawableRight="@drawable/ic_s_copy"
@ -118,8 +128,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
android:textColor="#FFF96B10" android:textColor="#FFF96B10"
android:textSize="16sp" android:textSize="14sp"
android:layout_marginTop="10dp" android:layout_marginTop="5dp"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:drawableRight="@drawable/ic_refresh" android:drawableRight="@drawable/ic_refresh"
@ -128,16 +138,6 @@
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aivStart"
android:layout_width="49dp"
android:layout_height="49dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBaseline_toBottomOf="parent"
android:layout_marginEnd="5dp"
app:layout_constraintEnd_toEndOf="parent"
android:src="@mipmap/vipbg"
/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -146,14 +146,14 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clVipPay"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@drawable/yjl_login_bg" android:background="@drawable/yjl_login_bg_icon"
app:layout_constraintBottom_toTopOf="@+id/clButton"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/clUser" app:layout_constraintTop_toBottomOf="@+id/clUser"
android:layout_marginBottom="12dp" android:layout_marginBottom="5dp"
> >
@ -173,7 +173,7 @@
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeLayout" android:id="@+id/swipeLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="350dp"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/clCustomTxt" app:layout_constraintBottom_toTopOf="@+id/clCustomTxt"
@ -260,8 +260,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/clVipPay"
android:background="@drawable/yjl_login_bg" android:background="@drawable/yjl_login_bg"
android:visibility="visible"
android:layout_marginTop="12dp"
> >
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aivTabTxt" android:id="@+id/aivTabTxt"
@ -301,8 +303,8 @@
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content" android:layout_width="40dp"
android:layout_height="wrap_content" android:layout_height="40dp"
android:src="@drawable/buton_a" /> android:src="@drawable/buton_a" />
<TextView <TextView
@ -311,7 +313,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/jstime" android:text="@string/jstime"
android:textColor="#FF5E2A12" android:textColor="#FF5E2A12"
android:textSize="14sp" android:textSize="12sp"
/> />
@ -320,8 +322,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:text="@string/jstimeStr" android:text="@string/jstimeStr"
android:textColor="#FF5E2A12" android:textColor="#FF908F8D"
android:textSize="14sp" android:textSize="10sp"
/> />
@ -339,17 +341,17 @@
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content" android:layout_width="40dp"
android:layout_height="wrap_content" android:layout_height="40dp"
android:src="@drawable/buton_b" /> android:src="@drawable/buton_b" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/jstime" android:text="@string/liuliangStr"
android:textColor="#FF5E2A12" android:textColor="#FF5E2A12"
android:textSize="14sp" android:textSize="12sp"
/> />
@ -357,9 +359,9 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:text="@string/jstimeStr" android:text="@string/liuliangStrEd"
android:textColor="#FF5E2A12" android:textColor="#FF908F8D"
android:textSize="14sp" android:textSize="10dp"
/> />
@ -386,7 +388,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/jstime" android:text="@string/liuliangStrAA"
android:textColor="#FF5E2A12" android:textColor="#FF5E2A12"
android:textSize="14sp" android:textSize="14sp"
@ -396,9 +398,9 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:text="@string/jstimeStr" android:text="@string/liuliangStrEdAAA"
android:textColor="#FF5E2A12" android:textColor="#FF908F8D"
android:textSize="14sp" android:textSize="10sp"
/> />
@ -408,6 +410,9 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -20,7 +20,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
android:background="@drawable/oc_language_bg" android:background="@drawable/vip_item_nochoose_bg"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
> >
<LinearLayout <LinearLayout
@ -40,8 +40,8 @@
android:id="@+id/tvDayTxt" android:id="@+id/tvDayTxt"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#B36C1B" android:textColor="#FF333333"
android:textSize="21sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center" android:gravity="center"
@ -59,7 +59,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center" android:gravity="center"
android:text="@string/laPay" android:text="@string/PAYiNG"
android:textColor="#FF8A04" android:textColor="#FF8A04"
android:textSize="14sp" android:textSize="14sp"
@ -68,7 +68,8 @@
android:id="@+id/tvDayAverage" android:id="@+id/tvDayAverage"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#FF8A04" android:textColor="#FFF89F25"
android:layout_marginStart="5dp"
android:text="36.8" android:text="36.8"
android:textSize="18sp" android:textSize="18sp"
android:layout_gravity="center" android:layout_gravity="center"
@ -80,7 +81,7 @@
android:id="@+id/tvDiscount" android:id="@+id/tvDiscount"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/gray_828282" android:textColor="#FF9EA3A5"
android:text="¥36.8/月" android:text="¥36.8/月"
android:textSize="14sp" android:textSize="14sp"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
@ -96,22 +97,25 @@
android:id="@+id/clRandomlySend" android:id="@+id/clRandomlySend"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/pay_title_bg" android:background="@drawable/vip_item_zs_bg"
android:visibility="invisible" android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
> >
<TextView <TextView
android:id="@+id/tvRandomlySend" android:id="@+id/tvRandomlySend"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:padding="5dp"
android:gravity="center" android:gravity="center"
android:text="" android:text=""
android:maxWidth="80dp"
android:maxLines="1"
android:ellipsize="end"
android:layout_marginStart="7dp"
android:layout_marginEnd="7dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="12sp" android:textSize="12sp"

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

@ -468,4 +468,9 @@
<string name="NewNotice">最新通知</string> <string name="NewNotice">最新通知</string>
<string name="vipTimeStrEd">你的会员还有$天到期</string> <string name="vipTimeStrEd">你的会员还有$天到期</string>
<string name="goEnd">去完成</string> <string name="goEnd">去完成</string>
<string name="liuliangStr">流量限制</string>
<string name="liuliangStrEd">不限流量</string>
<string name="liuliangStrAA">解锁流媒体</string>
<string name="liuliangStrEdAAA">智能连接</string>
<string name="PAYiNG">¥</string>
</resources> </resources>