一键连新增ui更改完成
This commit is contained in:
parent
87bd1e60b7
commit
4e377c7067
|
|
@ -14,7 +14,7 @@ plugins {
|
|||
dependencies {
|
||||
implementation(fileTree(mapOf("dir" to "src/main/libs", "include" to listOf("*.aar"))))
|
||||
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
|
||||
// implementation(files("src\\main\\libs\\Baidu_ocpc_action_2_7_2.aar"))
|
||||
implementation(files("src\\main\\libs\\Baidu_ocpc_action_2_7_2.aar"))
|
||||
// implementation(files("src\\main\\libs\\OpenInstall.jar"))
|
||||
// implementation("com.google.firebase:firebase-crashlytics-buildtools:3.0.2")
|
||||
// implementation(files("src/main/libs/openinstall.jar"))
|
||||
|
|
@ -188,6 +188,7 @@ android {
|
|||
jvmTarget = "17" // 或者改为 "1.8"
|
||||
}
|
||||
defaultConfig {
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
ndk {
|
||||
abiFilters.add("arm64-v8a")
|
||||
abiFilters.add("armeabi-v7a")
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import android.widget.Toast
|
|||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.observe
|
||||
import com.baidu.mobads.action.ActionType
|
||||
import com.baidu.mobads.action.BaiduAction
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
|
||||
import com.tencent.mmkv.MMKV
|
||||
|
|
@ -141,7 +143,7 @@ class BandPhoneActivity : BaseActivity() {
|
|||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_CURRENT_NODE)
|
||||
//百度埋点完成注册
|
||||
// BaiduAction.logAction(ActionType.REGISTER)
|
||||
BaiduAction.logAction(ActionType.REGISTER)
|
||||
val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
startActivity(intent)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
|
|||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.cncat.vpn.common.constants.Intents
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.cncat.vpn.core.Clash
|
||||
import com.cncat.vpn.core.model.TunnelState
|
||||
import com.cncat.vpn.service.remote.IRemoteService
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonParser
|
||||
|
|
@ -39,6 +41,7 @@ import com.yingmao.clash.entity.ClashNodebBean
|
|||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.CHECK_NODE_REQUEST_CODE
|
||||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.isGlo
|
||||
import com.yingmao.clash.listener.AsyncCallBackListener
|
||||
import com.yingmao.clash.remote.Resource
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.view.RxToast
|
||||
|
|
@ -46,10 +49,12 @@ import com.yingmao.clash.view.adapter.NodeListAdapter
|
|||
import com.yingmao.clash.view.dialog.DialogDoMainChoose
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Semaphore
|
||||
import kotlinx.coroutines.sync.withPermit
|
||||
import okhttp3.Response
|
||||
import java.util.UUID
|
||||
|
||||
class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
||||
|
|
@ -73,6 +78,7 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
var getNodeTimeOutNum = 5
|
||||
var isRunDing = false
|
||||
var dialogDoMainChoose: DialogDoMainChoose? = null
|
||||
var proList: MutableList<ClashNodebBean>? = null
|
||||
var nowSubUrl: String = ""
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
|
@ -129,10 +135,14 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
if(!clashRunning){
|
||||
setBackground(ProxyMode.PAC)
|
||||
MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
checkGlo()
|
||||
}else{
|
||||
RxToast.info(resources.getString(R.string.closeRunningChoose))
|
||||
}
|
||||
|
||||
if(clashRunning){
|
||||
RxToast.info(resources.getString(R.string.SwitchingSourceModel))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
}
|
||||
tvProj.setOnClickListener {
|
||||
|
|
@ -475,8 +485,9 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
|
||||
when (proxyMode) {
|
||||
ProxyMode.PAC -> {
|
||||
|
||||
isGlo = false
|
||||
tvProA.setBackgroundResource(R.drawable.oc_proxy_choose_bg)
|
||||
tvProA.setBackgroundResource(R.drawable.yil_node_proxy_choose_bg)
|
||||
tvProj.setBackgroundResource(0)
|
||||
sendMode(false)
|
||||
}
|
||||
|
|
@ -484,7 +495,7 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
ProxyMode.GLOBAL -> {
|
||||
isGlo = true
|
||||
tvProA.setBackgroundResource(0)
|
||||
tvProj.setBackgroundResource(R.drawable.oc_proxy_choose_bg)
|
||||
tvProj.setBackgroundResource(R.drawable.yil_node_proxy_choose_bg)
|
||||
sendMode(true)
|
||||
}
|
||||
}
|
||||
|
|
@ -553,4 +564,136 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
enum class ProxyMode {
|
||||
PAC, GLOBAL
|
||||
}
|
||||
private fun checkGlo() {
|
||||
val isGlobal = isGlo
|
||||
val isGlobal2 = MMKV.defaultMMKV().decodeBool(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
Log.i("checkGlo isGlobal==>${isGlobal}, isGlobal2==>${isGlobal2}")
|
||||
val px: ProxyMode = if (isGlobal2) {
|
||||
ProxyMode.GLOBAL
|
||||
} else {
|
||||
ProxyMode.PAC
|
||||
}
|
||||
setBackground(px)
|
||||
|
||||
launch(Dispatchers.IO) {
|
||||
if (isGlobal) {
|
||||
if (clashRunning) {
|
||||
getNodes()
|
||||
}
|
||||
} else {
|
||||
if (clashRunning) {
|
||||
delay(1000)
|
||||
clashBinder?.let { cm ->
|
||||
val names = cm.queryProxyGroupNames(false)
|
||||
Log.i("checkGlo names==>${names}")
|
||||
if (names.isNotEmpty()) {
|
||||
val selectedName =
|
||||
MMKV.defaultMMKV()
|
||||
.decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, "");
|
||||
Log.i("selected_name ==>${selectedName}")
|
||||
if (!TextUtils.isEmpty(selectedName)) {
|
||||
val o = cm.queryOverride(Clash.OverrideSlot.Session)
|
||||
o.mode = TunnelState.Mode.Rule
|
||||
cm.patchOverride(Clash.OverrideSlot.Session, o)
|
||||
delay(500)
|
||||
var gName = names[0]
|
||||
//全局模式下 names[0]会自动添加一个 "GLOBAL" 组
|
||||
if (names.size >= 2) {
|
||||
if ("GLOBAL" == gName) {
|
||||
//names[0] 为 "GLOBAL" //names[1]才是规则模式下的组名,所以需要手动赋值
|
||||
gName = names[1]
|
||||
}
|
||||
}
|
||||
cm.patchSelector(gName, selectedName!!)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private suspend fun getNodes() {
|
||||
coroutineScope {
|
||||
val selectedName =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, "")
|
||||
Log.d("getNodes selected_name==>${selectedName}")
|
||||
if (TextUtils.isEmpty(selectedName)) {
|
||||
subUrl?.let {
|
||||
changeNodeVM.getNodeOther(it, object : AsyncCallBackListener {
|
||||
override fun suc(obj: Any?) {
|
||||
proList = obj as MutableList<ClashNodebBean>
|
||||
proList?.let { proListItem ->
|
||||
val nodeName = proListItem[0].name
|
||||
if (!TextUtils.isEmpty(nodeName)) {
|
||||
launch(Dispatchers.IO) {
|
||||
clashBinder?.let { cm ->
|
||||
|
||||
val o = cm.queryOverride(Clash.OverrideSlot.Session)
|
||||
o.mode = TunnelState.Mode.Global
|
||||
cm.patchOverride(Clash.OverrideSlot.Session, o)
|
||||
delay(3000)
|
||||
//等待全局模式生效
|
||||
var maxIndex = 0
|
||||
while (true) {
|
||||
if (maxIndex > 3) {
|
||||
break
|
||||
}
|
||||
val names = cm.queryProxyGroupNames(false)
|
||||
if (names.isNotEmpty()) {
|
||||
if (names[0] == "GLOBAL") {
|
||||
Log.d("repeat end")
|
||||
break
|
||||
}
|
||||
}
|
||||
Log.d("repeat agent")
|
||||
maxIndex++
|
||||
delay(1000)
|
||||
}
|
||||
|
||||
cm.patchSelector("GLOBAL", nodeName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun faild(response: Response) {
|
||||
}
|
||||
|
||||
override fun err(msg: String, exception: Exception?) {
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
} else {
|
||||
clashBinder?.let { cm ->
|
||||
val o = cm.queryOverride(Clash.OverrideSlot.Session)
|
||||
o.mode = TunnelState.Mode.Global
|
||||
cm.patchOverride(Clash.OverrideSlot.Session, o)
|
||||
delay(3000)
|
||||
//等待全局
|
||||
var maxIndex = 0
|
||||
while (true) {
|
||||
if (maxIndex > 3) {
|
||||
break
|
||||
}
|
||||
val names = cm.queryProxyGroupNames(false)
|
||||
if (names.isNotEmpty()) {
|
||||
if (names[0] == "GLOBAL") {
|
||||
Log.d("repeat end")
|
||||
break
|
||||
}
|
||||
}
|
||||
Log.d("repeat agent")
|
||||
maxIndex++
|
||||
delay(1000)
|
||||
}
|
||||
|
||||
cm.patchSelector("GLOBAL", selectedName!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,11 +4,20 @@ package com.yingmao.clash.act
|
|||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.base.PublicViewMode
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.google.gson.Gson
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.ClashNodebBean
|
||||
import com.yingmao.clash.entity.NodesRsp
|
||||
import com.yingmao.clash.listener.AsyncCallBackListener
|
||||
import com.yingmao.clash.net.http.HttpApi
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.NetService
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import org.yaml.snakeyaml.Yaml
|
||||
import java.math.BigDecimal
|
||||
import kotlin.collections.get
|
||||
import kotlin.text.split
|
||||
|
||||
class ChangeNodeVM : PublicViewMode() {
|
||||
fun getAirNodes(){
|
||||
|
|
@ -24,4 +33,72 @@ class ChangeNodeVM : PublicViewMode() {
|
|||
httpApi.getAirportNode(params)
|
||||
}
|
||||
}
|
||||
fun getNodeOther(url: String, listener: AsyncCallBackListener) {
|
||||
Log.d("get_Node_Other start")
|
||||
val client = OkHttpClient()
|
||||
try {
|
||||
val request = Request.Builder()
|
||||
.url(url)
|
||||
.header("User-Agent", "ClashforWindows/0.19.23")
|
||||
.build()
|
||||
|
||||
client.newCall(request).execute().use { response ->
|
||||
if (!response.isSuccessful || response.headers["subscription-userinfo"] == null) return
|
||||
|
||||
var upload: Long = 0
|
||||
var download: Long = 0
|
||||
var total: Long = 0
|
||||
var expire: Long = 0
|
||||
|
||||
val userinfo = response.headers["subscription-userinfo"]
|
||||
if (response.isSuccessful && userinfo != null) {
|
||||
|
||||
val flags = userinfo.split(";")
|
||||
for (flag in flags) {
|
||||
val info = flag.split("=")
|
||||
when {
|
||||
info[0].contains("upload") && info[1].isNotEmpty() -> upload =
|
||||
BigDecimal(info[1]).longValueExact()
|
||||
|
||||
info[0].contains("download") && info[1].isNotEmpty() -> download =
|
||||
BigDecimal(info[1]).longValueExact()
|
||||
|
||||
info[0].contains("total") && info[1].isNotEmpty() -> total =
|
||||
BigDecimal(info[1]).longValueExact()
|
||||
|
||||
info[0].contains("expire") && info[1].isNotEmpty() -> {
|
||||
if (info[1].isNotEmpty()) {
|
||||
expire = (info[1].toDouble() * 1000).toLong()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.d("upload==>${upload}, download==>${download}, total==>${total}, expire==>${expire}")
|
||||
response.body?.let {
|
||||
val respStr = it.string()
|
||||
val conf = Yaml().loadAs(respStr, HashMap::class.java)
|
||||
val proxies = conf["proxies"]
|
||||
proxies?.let { pro ->
|
||||
|
||||
val proList = pro as ArrayList<*>
|
||||
val gson = Gson()
|
||||
val dataList = mutableListOf<ClashNodebBean>()
|
||||
proList.forEach { item ->
|
||||
val jo = gson.toJson(item)
|
||||
val bean = gson.fromJson(jo.toString(), ClashNodebBean::class.java)
|
||||
dataList.add(bean)
|
||||
}
|
||||
listener.suc(dataList)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
listener.faild(response)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
||||
e.printStackTrace()
|
||||
Log.d("e==>" + e.localizedMessage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,8 @@ package com.yingmao.clash.act
|
|||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.content.res.ColorStateList
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
|
|
@ -15,6 +17,7 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.*
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
|
|
@ -47,6 +50,7 @@ import kotlinx.coroutines.launch
|
|||
import java.io.File
|
||||
import androidx.core.graphics.toColorInt
|
||||
import androidx.core.net.toUri
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
|
||||
class LoginActivity : BaseActivity(), View.OnClickListener {
|
||||
private lateinit var loginViewMode: LoginAtyVM
|
||||
|
|
@ -58,6 +62,8 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
|||
private lateinit var userAgreementCB: CheckBox
|
||||
private lateinit var loginUserName: String
|
||||
private lateinit var tvRegister: TextView
|
||||
private lateinit var customService: FloatingActionButton
|
||||
|
||||
private var usernameEncrypt = ""
|
||||
private var passwordEncrypt = ""
|
||||
private var userOAID = ""
|
||||
|
|
@ -309,6 +315,10 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
|||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
customService=findViewById(R.id.customService)
|
||||
customService.setOnClickListener {
|
||||
startActivity(Intent(this@LoginActivity, CustomerServiceWebView::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
private fun initUserAgreementView(userAgreementCB: CheckBox) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import android.content.Intent
|
|||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
|
|
@ -14,6 +13,8 @@ import androidx.lifecycle.ViewModelProvider
|
|||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
import com.afollestad.materialdialogs.customview.getCustomView
|
||||
import com.baidu.mobads.action.ActionType
|
||||
import com.baidu.mobads.action.BaiduAction
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.cncat.vpn.core.model.LogMessage
|
||||
import com.cncat.vpn.service.ClashManager
|
||||
|
|
@ -35,7 +36,7 @@ import com.yingmao.clash.base.BaseActivity
|
|||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.conf.Conf
|
||||
import com.yingmao.clash.entity.CheckLoginRsp
|
||||
import com.yingmao.clash.fragment.activity.vipFragment
|
||||
import com.yingmao.clash.fragment.vip.vipFragment
|
||||
import com.yingmao.clash.fragment.home.HomeFragment
|
||||
import com.yingmao.clash.fragment.setting.SettingFragment
|
||||
import com.yingmao.clash.net.http.HttpApi
|
||||
|
|
@ -331,14 +332,18 @@ class MainActivity : BaseActivity() {
|
|||
val expired = checkLoginRsp.data.expired
|
||||
mmkv.encode(BZYConstants.MMKV_KEY_VPN_EXPIRED, expired ?: true)
|
||||
mmkv.encode(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD, nowExpireTime)
|
||||
val hf =
|
||||
supportFragmentManager.findFragmentById(R.id.fragmentContainer) as? HomeFragment
|
||||
val sf =
|
||||
supportFragmentManager.findFragmentById(R.id.fragmentContainer) as? SettingFragment
|
||||
sf?.setExpireDate()
|
||||
val fragments = supportFragmentManager.fragments
|
||||
for (fragment in fragments) {
|
||||
when (fragment) {
|
||||
is HomeFragment -> fragment.setExpireDate()
|
||||
is SettingFragment -> fragment.setExpireDate()
|
||||
is vipFragment -> fragment.setExpireDate()
|
||||
}
|
||||
}
|
||||
checkPayResultDia?.dismiss()
|
||||
mainAtyVM.getAirNodes()
|
||||
RxToast.info(resources.getString(R.string.SuccessfullyUpdatedUserInformation))
|
||||
mainAtyVM.getExpensesRecord(mPageInfo)
|
||||
}
|
||||
}else if(checkLoginRsp.code == -2){
|
||||
RxToast.info(resources.getString(R.string.LoginOut))
|
||||
|
|
@ -426,6 +431,7 @@ class MainActivity : BaseActivity() {
|
|||
android.util.Log.i("reqType:","data:::"+it.code)
|
||||
if(it.code==200){
|
||||
//上报百度支付功能
|
||||
BaiduAction.logAction(ActionType.PURCHASE)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -725,8 +731,8 @@ class MainActivity : BaseActivity() {
|
|||
if (activityFragment == null) activityFragment = vipFragment()
|
||||
showFragment(activityFragment!!)
|
||||
aivHome.setImageResource(R.drawable.yjl_home_page)
|
||||
aivCenter.setImageResource(R.drawable.yjl_vip_page)
|
||||
aivVip.setImageResource(R.drawable.yjl_user_page_choose)
|
||||
aivCenter.setImageResource(R.drawable.yjl_user_page)
|
||||
aivVip.setImageResource(R.drawable.yjl_vip_page_choose)
|
||||
// startActivityForResult(
|
||||
// Intent(this@MainActivity, MemberRechargeActivity::class.java),
|
||||
// REQUEST_CODE_PAY_WEB_VIEW_ACTIVITY
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.yingmao.clash.act
|
|||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
|
|
@ -59,6 +60,8 @@ import kotlinx.coroutines.Dispatchers
|
|||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import java.text.DecimalFormat
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class MemberRechargeActivity : BaseActivity() {
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
|
|
@ -76,6 +79,10 @@ class MemberRechargeActivity : BaseActivity() {
|
|||
//stripePay 支付
|
||||
private var paymentIntentClientSecret: String = ""
|
||||
private lateinit var mainAtyVM: MainAtyVM
|
||||
|
||||
private lateinit var tvUserName: TextView
|
||||
private lateinit var tvUserTimeEnd: TextView
|
||||
private lateinit var tvTxtShowLink:TextView
|
||||
private val stripe: Stripe by lazy {
|
||||
Stripe(
|
||||
this@MemberRechargeActivity,
|
||||
|
|
@ -95,6 +102,11 @@ class MemberRechargeActivity : BaseActivity() {
|
|||
mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java]
|
||||
viewModel = ViewModelProvider(this)[RechargeViewModel::class.java]
|
||||
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 phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!!
|
||||
|
|
@ -109,6 +121,9 @@ class MemberRechargeActivity : BaseActivity() {
|
|||
tvPay=findViewById(R.id.tvPay)
|
||||
tvRechargeRecord=findViewById(R.id.tvRechargeRecord)
|
||||
clCustom=findViewById(R.id.clCustom)
|
||||
tvUserName=findViewById(R.id.tvUserName)
|
||||
tvUserTimeEnd=findViewById(R.id.tvUserTimeEnd)
|
||||
tvTxtShowLink=findViewById(R.id.tvTxtShowLink)
|
||||
swipeLayout.setColorSchemeColors(Color.rgb(47, 223, 189))
|
||||
swipeLayout.setOnRefreshListener {
|
||||
selectedGrade = null
|
||||
|
|
@ -118,7 +133,9 @@ class MemberRechargeActivity : BaseActivity() {
|
|||
val userId = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_USER_ID)!!
|
||||
viewModel.getPhRechargeInfo(username, phToken, userId)
|
||||
}
|
||||
|
||||
tvTxtShowLink.setOnClickListener {
|
||||
startActivity(Intent(this@MemberRechargeActivity, CustomerServiceWebView::class.java))
|
||||
}
|
||||
aiBack.setOnClickListener {
|
||||
val intent=Intent()
|
||||
this.setResult(1000,intent)
|
||||
|
|
@ -531,4 +548,71 @@ class MemberRechargeActivity : BaseActivity() {
|
|||
}
|
||||
}
|
||||
}
|
||||
fun setExpireDate() {
|
||||
val isExpire = checkExpire()
|
||||
var endTimeInfo = "--"
|
||||
if (isExpire) {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
@ -163,6 +163,7 @@ class SettingActivity : BaseActivity() {
|
|||
if (clashRunning) {
|
||||
stopClashService()
|
||||
}
|
||||
clashRunning=false
|
||||
mainAtyVM.stopHeartBeat()
|
||||
cleanProfile()
|
||||
val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ class ShareActivity : BaseActivity() {
|
|||
private lateinit var shareBtn: View
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
private lateinit var tvShareContent:TextView
|
||||
private lateinit var tvShareUrl:TextView
|
||||
private var shareUrl:String? = ""
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
|
@ -46,9 +45,6 @@ class ShareActivity : BaseActivity() {
|
|||
(it.rsp as AppShareInfoRsp).let { data ->
|
||||
if (data.code == 1000) {
|
||||
tvShareContent.text = data.data?.shareInfo
|
||||
val replaceStr = data.data?.shareUrl.toString()
|
||||
.replace("您的专属链接为:", "您的专属链接为:\n")
|
||||
tvShareUrl.text =replaceStr
|
||||
shareUrl = data.data?.shareUrl
|
||||
shareBtn.visibility = View.VISIBLE
|
||||
} else {
|
||||
|
|
@ -65,7 +61,6 @@ class ShareActivity : BaseActivity() {
|
|||
}
|
||||
private fun initView() {
|
||||
tvShareContent= findViewById(R.id.tv_share_conetent)
|
||||
tvShareUrl = findViewById(R.id.tv_share_url)
|
||||
shareBtn = findViewById(R.id.tv_share_btn)
|
||||
aiBack=findViewById(R.id.aiBack)
|
||||
aiBack.setOnClickListener {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ import androidx.core.content.FileProvider
|
|||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.baidu.mobads.action.ActionType
|
||||
import com.baidu.mobads.action.BaiduAction
|
||||
import com.baidu.mobads.action.PrivacyStatus
|
||||
import com.cncat.vpn.service.ClashManager
|
||||
import com.cncat.vpn.service.remote.IClashManager
|
||||
import com.cncat.vpn.service.remote.wrap
|
||||
|
|
@ -130,12 +133,19 @@ class SplashActivity : BaseActivity() {
|
|||
username = Utils.getUniqueID(this)
|
||||
MainApplication.initUtil()
|
||||
val oaId = OAID
|
||||
Log.i("SplashActOAID", "OAID::" + OAID + "oaId.isEmpty()::" + oaId.isEmpty())
|
||||
if(oaId.isEmpty()) {
|
||||
if (DeviceID.supportedOAID(this)) {
|
||||
Log.i("SplashActOAID","OAID::"+OAID+"oaId.isEmpty()::"+oaId.isEmpty())
|
||||
if(oaId.isEmpty()){
|
||||
if (DeviceID.supportedOAID(this)){
|
||||
val aynOAID = DeviceIdentifier.getOAID(this)
|
||||
OAID = aynOAID
|
||||
OAID=aynOAID
|
||||
BaiduAction.setOaid(aynOAID)
|
||||
//设置同意隐私政策激活设备
|
||||
BaiduAction.setPrivacyStatus(PrivacyStatus.AGREE)
|
||||
}
|
||||
}else{
|
||||
BaiduAction.setOaid(oaId)
|
||||
//设置同意隐私政策激活设备
|
||||
BaiduAction.setPrivacyStatus(PrivacyStatus.AGREE)
|
||||
}
|
||||
setLocalLanguage()
|
||||
val clashBinder = MainApplication.getApp()?.let {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import android.content.res.Configuration
|
|||
import android.os.Build
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.content.getSystemService
|
||||
import com.baidu.mobads.action.BaiduAction
|
||||
import com.cncat.vpn.common.Global
|
||||
import com.cncat.vpn.common.compat.currentProcessName
|
||||
import com.cncat.vpn.common.log.Log
|
||||
|
|
@ -20,6 +21,7 @@ import com.orhanobut.logger.Logger
|
|||
import com.stripe.android.PaymentConfiguration
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.conf.Constants
|
||||
import com.yingmao.clash.entity.UserData
|
||||
import com.yingmao.clash.util.CrashCatchHandler
|
||||
import com.yingmao.clash.util.clashDir
|
||||
|
|
@ -129,7 +131,13 @@ class MainApplication : Application() {
|
|||
Global.init(mApp)
|
||||
val keepRootDir = MMKV.initialize(mApp)
|
||||
Logger.i("MMKV_ROOT_DIR:$keepRootDir")
|
||||
|
||||
// 是否在控制台输出⽇志,可⽤于观察⽤⼾⾏为⽇志上报情况,建议仅在调试时使⽤,release版 请设置为false !
|
||||
BaiduAction.setPrintLog(false)
|
||||
// 是否允许通过应用商店获取referrer信息,仅支持华为、小米;默认true
|
||||
BaiduAction.enableMarketReferrer(true)
|
||||
BaiduAction.init(this, Constants.USER_ACTION_SET_ID, Constants.APP_SECRET_KEY)
|
||||
// 设置应用激活的间隔,此方法在初始化成功后才有意义,建议在初始化后执行,具体执行的时机没有限制
|
||||
BaiduAction.setActivateInterval(this, 7)
|
||||
}
|
||||
private fun extractGeoFiles() {
|
||||
clashDir.mkdirs()
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ open class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), Br
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED //竖屏
|
||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT //竖屏
|
||||
StatusBarUtils.with(this).init()
|
||||
window.decorView.systemUiVisibility =
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@ open class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispa
|
|||
if (checkExpire()) {
|
||||
if (isAdded) {
|
||||
MaterialDialog(requireContext()).show {
|
||||
this.cancelable(false)
|
||||
this.cancelable(true)
|
||||
cornerRadius(res = R.dimen.dp_10)
|
||||
customView(
|
||||
R.layout.expired_recharge__layout,
|
||||
|
|
@ -287,6 +287,12 @@ open class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispa
|
|||
goNewRecharge()
|
||||
dismiss()
|
||||
}
|
||||
|
||||
getCustomView().findViewById<AppCompatImageView>(R.id.aivClose)
|
||||
.setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return@setOnClickListener
|
||||
|
|
@ -515,13 +521,12 @@ open class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispa
|
|||
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
android.util.Log.i("AAAAAAAAAAAAAAA","data:::${data}")
|
||||
if (requestCode == 2) {
|
||||
nodeChooseBase(data)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SimpleDateFormat")
|
||||
@SuppressLint("SimpleDateFormat", "LongLogTag")
|
||||
fun setExpireDate() {
|
||||
val isExpire = checkExpire()
|
||||
var endTimeInfo = "--"
|
||||
|
|
|
|||
|
|
@ -57,8 +57,7 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
override fun onBindViewHolder(holder: VIPRechargeViewHolder, @SuppressLint("RecyclerView") position: Int) {
|
||||
|
||||
if(rechargeInfo.grade!=null) {
|
||||
holder.tvDiscount.text =
|
||||
context!!.resources.getString(R.string.laPay) + "${rechargeInfo.grade!![position].amount}" + context!!.resources.getString(
|
||||
holder.tvDayAverage.text ="${rechargeInfo.grade!![position].amount}" + context!!.resources.getString(
|
||||
R.string.Yuan
|
||||
).replace("$", "")
|
||||
holder.cyn.text = "¥"
|
||||
|
|
@ -76,8 +75,8 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
val data = rechargeInfo.grade?.getOrNull(position)?.amount!!.toDouble()
|
||||
.div(30 + totalGiftAmount)
|
||||
val tempStr = String.format("%.2f", data)
|
||||
holder.tvDayAverage.text =
|
||||
context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
holder.tvDiscount.text =
|
||||
context!!.resources.getString(R.string.everyDay)+context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -88,8 +87,8 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
val data = rechargeInfo.grade?.getOrNull(position)?.amount!!.toDouble()
|
||||
.div(90 + totalGiftAmount)
|
||||
val tempStr = String.format("%.2f", data)
|
||||
holder.tvDayAverage.text =
|
||||
context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
holder.tvDiscount.text =
|
||||
context!!.resources.getString(R.string.everyDay)+ context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -99,8 +98,8 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
val data = rechargeInfo.grade?.getOrNull(position)?.amount!!.toDouble()
|
||||
.div(180 + totalGiftAmount)
|
||||
val tempStr = String.format("%.2f", data)
|
||||
holder.tvDayAverage.text =
|
||||
context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
holder.tvDiscount.text =
|
||||
context!!.resources.getString(R.string.everyDay)+ context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -110,8 +109,8 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
val data = rechargeInfo.grade?.getOrNull(position)?.amount!!.toDouble()
|
||||
.div(365 + totalGiftAmount)
|
||||
val tempStr = String.format("%.2f", data)
|
||||
holder.tvDayAverage.text =
|
||||
context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
holder.tvDiscount.text =
|
||||
context!!.resources.getString(R.string.everyDay)+context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -122,7 +121,7 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
val data = rechargeInfo.grade?.getOrNull(position)?.amount!!.toDouble()
|
||||
.div(days!! + totalGiftAmount)
|
||||
val tempStr = String.format("%.2f", data)
|
||||
holder.tvDayAverage.text =
|
||||
holder.tvDiscount.text =
|
||||
context!!.resources.getString(R.string.Yuan).replace("$", tempStr)
|
||||
}
|
||||
}
|
||||
|
|
@ -130,13 +129,13 @@ class VIPRechargeAdapter : RecyclerView.Adapter<VIPRechargeAdapter.VIPRechargeVi
|
|||
|
||||
if (selectorPosition == position) {
|
||||
holder.rechargeItemRl.isSelected = true
|
||||
holder.rechargeItemRl.setBackgroundResource(R.drawable.oc_pay_choose_bg)
|
||||
holder.rechargeItemRl.setBackgroundResource(R.drawable.vip_item_choose_bg)
|
||||
if (selectorPosition == 0) {
|
||||
listener?.onItemClick(rechargeInfo.grade?.getOrNull(position))
|
||||
}
|
||||
} else {
|
||||
holder.rechargeItemRl.isSelected = false
|
||||
holder.rechargeItemRl.setBackgroundResource(R.drawable.oc_pay_item_bg)
|
||||
holder.rechargeItemRl.setBackgroundResource(R.drawable.vip_item_nochoose_bg)
|
||||
}
|
||||
holder.rechargeItemRl.setOnClickListener {
|
||||
listener?.onItemClick(rechargeInfo.grade?.getOrNull(position))
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ import com.yingmao.clash.view.dialog.DialogDoMainChoose
|
|||
import com.yingmao.clash.view.dialog.NoticeViewDialog
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
import com.yingmao.clash.vm.MainAtyVM
|
||||
import com.yingmao.clash.webview.CustomerServiceWebView
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.MainScope
|
||||
|
|
@ -139,7 +140,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc
|
|||
|
||||
|
||||
setExpireDate()
|
||||
tvVersion.text=requireActivity().resources.getString(R.string.edition) + "${BuildConfig.VERSION_NAME}." + BuildConfig.productId
|
||||
tvVersion.text=requireActivity().resources.getString(R.string.currentVersionNumber) + "${BuildConfig.VERSION_NAME}." + BuildConfig.productId
|
||||
|
||||
val settingItem= SettingPageBean(
|
||||
1,
|
||||
|
|
@ -192,6 +193,11 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc
|
|||
resources.getString(R.string.InitializationRepair),
|
||||
R.drawable.user_init_icon,
|
||||
)
|
||||
val customItem= SettingPageBean(
|
||||
10,
|
||||
resources.getString(R.string.OnlineCustomerService),
|
||||
R.drawable.onlinecustomerservice_icon,
|
||||
)
|
||||
|
||||
|
||||
settingPageList.add(settingItem)
|
||||
|
|
@ -203,6 +209,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc
|
|||
settingPageList.add(upLoadData)
|
||||
settingPageList.add(privacyPolicyItem)
|
||||
settingPageList.add(initializationItem)
|
||||
settingPageList.add(customItem)
|
||||
|
||||
val settingAdapter= SettingPageAdapter()
|
||||
settingAdapter.setTagList(settingPageList,requireContext())
|
||||
|
|
@ -305,6 +312,9 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc
|
|||
9->{
|
||||
initializationRepair()
|
||||
}
|
||||
10->{
|
||||
startActivity(Intent(requireContext(), CustomerServiceWebView::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.yingmao.clash.fragment.activity
|
||||
package com.yingmao.clash.fragment.vip
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
|
|
@ -11,7 +11,6 @@ import android.widget.FrameLayout
|
|||
import android.widget.ImageView
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.net.toUri
|
||||
|
|
@ -36,6 +35,7 @@ import com.yingmao.clash.BuildConfig
|
|||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.ExpensesRecordActivity
|
||||
import com.yingmao.clash.act.LoginActivity
|
||||
import com.yingmao.clash.act.MainActivity
|
||||
import com.yingmao.clash.act.MainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
|
|
@ -78,7 +78,7 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
private lateinit var rvRechargeList:RecyclerView
|
||||
private lateinit var tvPay:TextView
|
||||
private lateinit var tvRechargeRecord:AppCompatImageView
|
||||
private lateinit var clCustom: ConstraintLayout
|
||||
private lateinit var clCustomTxt: ConstraintLayout
|
||||
private var selectedGrade: Grade? = null
|
||||
|
||||
private lateinit var rxDialogShapeLoading: RxDialogShapeLoading
|
||||
|
|
@ -96,6 +96,9 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
PaymentConfiguration.getInstance(requireContext()).publishableKey
|
||||
)
|
||||
}
|
||||
companion object {
|
||||
var isTopup = false
|
||||
}
|
||||
|
||||
private val mPageInfo = ExpensesRecordActivity.PageInfo()
|
||||
|
||||
|
|
@ -138,7 +141,7 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
rvRechargeList=view.findViewById(R.id.rvRechargeList)
|
||||
tvPay=view.findViewById(R.id.tvPay)
|
||||
tvRechargeRecord=view.findViewById(R.id.tvRechargeRecord)
|
||||
clCustom=view.findViewById(R.id.clCustom)
|
||||
clCustomTxt=view.findViewById(R.id.clCustomTxt)
|
||||
|
||||
tvUserName=view.findViewById(R.id.tvUserName)
|
||||
tvUserTimeEnd=view.findViewById(R.id.tvUserTimeEnd)
|
||||
|
|
@ -176,7 +179,7 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
viewModel.pay("1", selectedGrade!!, "pointCard")
|
||||
|
||||
}
|
||||
clCustom.setOnClickListener {
|
||||
clCustomTxt.setOnClickListener {
|
||||
startActivity(Intent(requireActivity(), CustomerServiceWebView::class.java))
|
||||
}
|
||||
}
|
||||
|
|
@ -242,6 +245,7 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
if (rsp.data != null) {
|
||||
when (rsp.data.payModel) {
|
||||
1000 -> {
|
||||
isTopup=true
|
||||
val orderInfo = rsp.data.appFormat
|
||||
if(orderInfo!=null){
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
|
|
@ -276,6 +280,7 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
}
|
||||
}
|
||||
0->{
|
||||
isTopup=true
|
||||
startActivity(Intent(Intent.ACTION_VIEW, rsp.data.payUrl?.toUri()))
|
||||
}
|
||||
}
|
||||
|
|
@ -641,4 +646,17 @@ class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers
|
|||
return true
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(isTopup){
|
||||
goMainCheck()
|
||||
isTopup=false
|
||||
}
|
||||
}
|
||||
private fun goMainCheck() {
|
||||
if (activity != null) {
|
||||
val uiMainActivity = activity as MainActivity
|
||||
uiMainActivity.goCheckLogin()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -30,11 +30,9 @@ class NodeListAdapter(layoutResId: Int) :
|
|||
val nodeListItem = holder.getView<ConstraintLayout>(R.id.rl_node_list_item)
|
||||
val nodeCheckMrb = holder.getView<AppCompatImageView>(R.id.mrb_node_checked)
|
||||
if (holder.layoutPosition == selectedPosition) {
|
||||
nodeListItem.isSelected = true
|
||||
nodeCheckMrb.isSelected = true
|
||||
nodeCheckMrb.setImageResource(R.drawable.check_img_select)
|
||||
} else {
|
||||
nodeListItem.isSelected = false
|
||||
nodeCheckMrb.isSelected = false
|
||||
nodeCheckMrb.setImageResource(R.drawable.check_img)
|
||||
}
|
||||
|
||||
val nodeNameTv = holder.getView<TextView>(R.id.node_list_item_tv_node_name)
|
||||
|
|
@ -45,7 +43,7 @@ class NodeListAdapter(layoutResId: Int) :
|
|||
signal.visibility=View.GONE
|
||||
}else{
|
||||
|
||||
signal.visibility=View.VISIBLE
|
||||
signal.visibility=View.GONE
|
||||
if (item.delay > 0) {
|
||||
if (item.delay >= 65535) {
|
||||
item.delay = Utils.generateRandomTwoDigitNumber(99, 300)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,30 @@
|
|||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- This is the main color -->
|
||||
<item>
|
||||
<shape>
|
||||
<!-- 边框颜色 -->
|
||||
<gradient
|
||||
android:angle="0"
|
||||
android:endColor="#FFE9E7E7"
|
||||
android:startColor="#FFE9E7E7" />
|
||||
<corners android:radius="21dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<!-- 给View的上 左 右设置8dp的边框 -->
|
||||
<item
|
||||
android:bottom="3dp"
|
||||
android:left="1dp"
|
||||
android:right="3dp"
|
||||
android:top="1dp">
|
||||
<shape>
|
||||
<!-- View填充颜色 -->
|
||||
<solid android:color="#FF8A04" />
|
||||
<gradient
|
||||
android:angle="0"
|
||||
android:endColor="#FFE9E7E7"
|
||||
android:startColor="#FFE9E7E7" />
|
||||
<corners android:radius="21dp" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="22dp"
|
||||
android:height="22dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M511.9,991c-64.7,0 -127.4,-12.7 -186.5,-37.7 -57,-24.2 -108.3,-58.7 -152.3,-102.7 -44,-44 -78.5,-95.2 -102.7,-152.3C45.5,639.3 32.8,576.5 32.8,511.8c0,-64.7 12.7,-127.4 37.7,-186.5 24.2,-57 58.7,-108.3 102.7,-152.3 44,-44 95.2,-78.5 152.3,-102.7 59.1,-25 121.9,-37.7 186.5,-37.7 64.7,0 127.4,12.7 186.5,37.7 57,24.2 108.3,58.7 152.3,102.7 44,44 78.5,95.2 102.7,152.3 25,59.1 37.7,121.9 37.7,186.5 0,64.7 -12.7,127.4 -37.7,186.5 -24.2,57 -58.7,108.3 -102.7,152.3 -44,44 -95.2,78.5 -152.3,102.7C639.4,978.3 576.6,991 511.9,991L511.9,991zM511.9,71.4c-59.5,0 -117.1,11.7 -171.4,34.6 -52.4,22.2 -99.5,54 -140,94.4 -40.4,40.4 -72.2,87.6 -94.4,140 -22.9,54.3 -34.6,111.9 -34.6,171.4 0,59.5 11.7,117.1 34.6,171.4 22.2,52.4 54,99.5 94.4,140 40.4,40.4 87.6,72.2 140,94.4 54.3,22.9 111.9,34.6 171.4,34.6 59.5,0 117.1,-11.7 171.4,-34.6 52.4,-22.2 99.5,-54 140,-94.4 40.4,-40.4 72.2,-87.6 94.4,-140 22.9,-54.3 34.6,-111.9 34.6,-171.4 0,-59.5 -11.7,-117.1 -34.6,-171.4 -22.2,-52.4 -54,-99.5 -94.4,-140 -40.4,-40.4 -87.6,-72.2 -140,-94.4C629,83 571.4,71.4 511.9,71.4L511.9,71.4zM511.9,71.4"
|
||||
android:fillColor="#000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M512,162.1C319.1,162.1 162.1,319.1 162.1,512S319.1,861.9 512,861.9 861.9,704.9 861.9,512 704.9,162.1 512,162.1zM445.4,682.7l-129.7,-121.2 42.7,-44.4 88.7,83.6L662.2,392.5l46.1,41L445.4,682.7z"
|
||||
android:fillColor="#FFFF6C03"/>
|
||||
</vector>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@mipmap/check_img_select"/>
|
||||
<item android:drawable="@mipmap/check_img"/>
|
||||
<item android:state_selected="true" android:drawable="@drawable/check_img_select"/>
|
||||
<item android:drawable="@drawable/check_img"/>
|
||||
</selector>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="25dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="25"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M21.157,10.614C21.157,5.875 16.761,2.021 11.359,2.021C5.957,2.021 1.562,5.875 1.562,10.614C1.562,13.263 2.966,15.777 5.335,17.398V19.236C5.335,19.774 5.643,20.281 6.112,20.523C6.331,20.643 6.578,20.705 6.826,20.705C7.122,20.705 7.408,20.62 7.619,20.474L8.75,19.733C8.776,19.717 8.813,19.693 8.855,19.659L9.728,19.084C10.276,19.166 10.824,19.208 11.359,19.208C16.761,19.208 21.157,15.353 21.157,10.614ZM11.359,18.082C10.814,18.082 10.254,18.034 9.694,17.939C9.552,17.915 9.406,17.945 9.286,18.024L8.197,18.742C8.175,18.756 8.154,18.772 8.134,18.79C8.135,18.789 8.135,18.789 8.135,18.789C8.134,18.789 8.126,18.794 8.109,18.804L6.983,19.543C6.945,19.568 6.79,19.609 6.644,19.53C6.54,19.476 6.467,19.355 6.467,19.236V17.096C6.467,16.905 6.369,16.726 6.207,16.623C4.007,15.22 2.694,12.973 2.694,10.614C2.694,6.496 6.581,3.146 11.359,3.146C16.137,3.146 20.024,6.496 20.024,10.614C20.024,14.732 16.137,18.082 11.359,18.082ZM7.933,9.48C7.395,9.48 6.957,9.914 6.957,10.446C6.957,10.978 7.395,11.412 7.933,11.412C8.47,11.412 8.908,10.978 8.908,10.446C8.908,9.914 8.47,9.48 7.933,9.48ZM11.579,9.48C11.041,9.48 10.603,9.914 10.603,10.446C10.603,10.978 11.041,11.412 11.579,11.412C12.116,11.412 12.554,10.978 12.554,10.446C12.554,9.914 12.116,9.48 11.579,9.48ZM15.225,9.48C14.687,9.48 14.249,9.914 14.249,10.446C14.249,10.978 14.687,11.412 15.225,11.412C15.762,11.412 16.2,10.978 16.2,10.446C16.2,9.914 15.762,9.48 15.225,9.48ZM23.268,13.604C23.166,13.186 23.014,12.768 22.816,12.36C22.678,12.075 22.336,11.956 22.051,12.094C21.766,12.233 21.647,12.576 21.785,12.861C21.948,13.197 22.072,13.538 22.154,13.875C22.246,14.253 22.292,14.653 22.292,15.063C22.292,16.805 21.343,18.484 19.752,19.555C19.674,19.607 19.61,19.678 19.566,19.761C19.522,19.844 19.499,19.937 19.499,20.031V21.495C19.499,21.614 19.439,21.723 19.338,21.794C19.161,21.851 19.045,21.844 18.938,21.772L18.127,21.239C18.106,21.219 18.083,21.201 18.06,21.185L17.355,20.71C17.234,20.629 17.087,20.597 16.944,20.62C15.344,20.878 13.783,20.63 12.43,19.902C12.364,19.866 12.291,19.844 12.216,19.836C12.141,19.828 12.066,19.836 11.994,19.857C11.922,19.879 11.854,19.915 11.796,19.963C11.738,20.01 11.69,20.069 11.654,20.136C11.504,20.415 11.609,20.763 11.887,20.913C13.4,21.727 15.128,22.027 16.899,21.787L17.359,22.097C17.417,22.152 17.475,22.188 17.515,22.21L18.306,22.73C18.551,22.893 18.838,22.98 19.136,22.98C19.341,22.98 19.552,22.939 19.781,22.855C19.811,22.845 19.839,22.831 19.866,22.816C20.346,22.545 20.644,22.038 20.644,21.495V20.329C22.399,19.04 23.438,17.092 23.438,15.063C23.438,14.562 23.381,14.071 23.268,13.604Z"
|
||||
android:fillColor="#0387FD"/>
|
||||
<path
|
||||
android:pathData="M3,28.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#0387FD"/>
|
||||
</vector>
|
||||
|
|
@ -5,8 +5,8 @@ android:color="#BFD5D5D5" >
|
|||
<shape>
|
||||
<gradient android:type="linear"
|
||||
android:angle="180"
|
||||
android:startColor="#FFF3E5"
|
||||
android:endColor="#FFF3E5"
|
||||
android:startColor="#FFABD6FB"
|
||||
android:endColor="#FF94A4FE"
|
||||
/>
|
||||
</shape>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -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="2dp" android:left="2dp" android:right="2dp" android:bottom="2dp" >
|
||||
<shape>
|
||||
<!-- View填充颜色 -->
|
||||
<solid android:color="#FFFFE6D5" />
|
||||
<corners android:radius="16dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
|
|
@ -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="#FFFFFFFF"
|
||||
android:startColor="#FFFFFFFF" />
|
||||
<corners android:radius="16dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<!-- This is the main color -->
|
||||
<item>
|
||||
<shape>
|
||||
<!-- 边框颜色 -->
|
||||
<solid android:color="#FFCBCBCB"/>
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="24dp" android:bottomRightRadius="24dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
<!-- 给View的上 左 右设置8dp的边框 -->
|
||||
<item android:top="1dp" android:left="1dp" android:right="4dp" android:bottom="4dp" >
|
||||
<shape>
|
||||
<!-- View填充颜色 -->
|
||||
<solid android:color="#FFCBCBCB" />
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="24dp" android:bottomRightRadius="24dp"/>
|
||||
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<!-- This is the main color -->
|
||||
<item>
|
||||
<shape>
|
||||
<!-- 边框颜色 -->
|
||||
<solid android:color="#FFFFFFFF"/>
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="24dp" android:bottomRightRadius="24dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
<!-- 给View的上 左 右设置8dp的边框 -->
|
||||
<item android:top="1dp" android:left="1dp" android:right="4dp" android:bottom="4dp" >
|
||||
<shape>
|
||||
<!-- View填充颜色 -->
|
||||
<solid android:color="#FFFFFFFF" />
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="24dp" android:bottomRightRadius="24dp"/>
|
||||
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M512,930c-230.4,0 -418,-187.6 -418,-418s187.6,-418 418,-418 418,187.6 418,418 -187.6,418 -418,418zM512,135.8c-207.4,0 -376.2,168.8 -376.2,376.2s168.8,376.2 376.2,376.2 376.2,-168.8 376.2,-376.2 -168.8,-376.2 -376.2,-376.2z"
|
||||
android:fillColor="#333333"/>
|
||||
<path
|
||||
android:pathData="M355.3,689.6c-5.2,0 -10.4,-2.1 -14.6,-6.3 -8.4,-8.4 -8.4,-21.4 0,-29.8l313.5,-313.5c8.4,-8.4 21.4,-8.4 29.8,0 8.4,8.4 8.4,21.4 0,29.8l-313.5,313.5c-4.7,4.2 -9.9,6.3 -15.2,6.3z"
|
||||
android:fillColor="#333333"/>
|
||||
<path
|
||||
android:pathData="M668.7,689.6c-5.2,0 -10.4,-2.1 -14.6,-6.3l-313.5,-313.5c-8.4,-8.4 -8.4,-21.4 0,-29.8 8.4,-8.4 21.4,-8.4 29.8,0l313.5,313.5c8.4,8.4 8.4,21.4 0,29.8 -4.7,4.2 -9.9,6.3 -15.2,6.3z"
|
||||
android:fillColor="#333333"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="34dp"
|
||||
android:height="59dp"
|
||||
android:viewportWidth="34"
|
||||
android:viewportHeight="59">
|
||||
<path
|
||||
android:pathData="M14.116,51.06V55.442H13.136V54.84H7.116V55.442H6.136V51.06H14.116ZM7.116,53.93H13.136V51.97H7.116V53.93ZM8.236,44.816L9.216,45.026C9.006,45.348 8.796,45.656 8.572,45.95H13.738V46.762C13.164,47.56 12.338,48.26 11.26,48.876C12.786,49.478 14.494,49.842 16.384,49.982L16.16,50.892C13.92,50.724 11.946,50.234 10.21,49.394C8.558,50.15 6.472,50.738 3.952,51.172L3.574,50.276C5.828,49.912 7.704,49.45 9.188,48.862C8.474,48.442 7.816,47.966 7.214,47.434C6.668,47.924 6.08,48.358 5.464,48.75L4.82,47.966C6.206,47.168 7.34,46.118 8.236,44.816ZM10.224,48.414C11.19,47.938 11.96,47.392 12.534,46.804H7.844L7.802,46.846C8.544,47.462 9.356,47.98 10.224,48.414ZM15.684,43.612V46.258H14.662V44.522H5.338V46.258H4.316V43.612H9.44C9.272,43.248 9.104,42.926 8.922,42.632L10.028,42.464C10.196,42.8 10.35,43.192 10.518,43.612H15.684ZM19.548,47.35V49.688H21.802V47.35H19.548ZM21.802,46.44V44.074H19.548V46.44H21.802ZM19.534,50.598C19.45,52.558 19.114,54.168 18.54,55.428L17.784,54.728C18.344,53.468 18.624,51.844 18.638,49.884V43.164H22.726V54.084C22.726,54.924 22.334,55.358 21.55,55.358H20.43L20.192,54.462C20.584,54.49 20.934,54.518 21.27,54.518C21.62,54.518 21.802,54.266 21.802,53.762V50.598H19.534ZM24.854,49.212V55.414H23.902V43.15H29.572C29.572,44.886 29.488,46.034 29.32,46.594C29.152,47.168 28.634,47.462 27.752,47.462H26.618L26.352,46.594C26.59,46.594 26.898,46.608 27.29,46.608C27.626,46.608 27.864,46.58 28.032,46.538C28.2,46.482 28.326,46.342 28.41,46.132C28.508,45.824 28.564,45.138 28.592,44.074H24.854V48.316H29.614V49.17C29.348,50.612 28.886,51.844 28.242,52.852C28.872,53.468 29.614,54.014 30.468,54.504L29.964,55.358C29.068,54.84 28.312,54.266 27.668,53.636C27.052,54.35 26.338,54.924 25.498,55.372L24.966,54.56C25.764,54.126 26.436,53.58 26.996,52.908C26.1,51.816 25.498,50.584 25.19,49.212H24.854ZM26.058,49.212C26.352,50.29 26.856,51.256 27.57,52.124C28.088,51.284 28.466,50.318 28.718,49.212H26.058Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path
|
||||
android:pathData="M29.5,4.884C26.248,1.685 21.68,-0.144 17.112,0.009C12.39,-0.067 7.822,1.685 4.57,4.884C1.551,7.93 -0.075,11.891 0.003,16.004C0.003,18.823 0.777,21.565 2.093,23.926L1.009,27.049C0.622,28.191 0.854,29.41 1.706,30.324C2.403,31.086 3.254,31.467 4.261,31.467C4.493,31.467 4.648,31.467 4.88,31.391L9.68,30.553C11.925,31.543 14.403,32 16.958,32H17.345C21.912,32 26.248,30.248 29.422,27.125C32.519,24.078 34.145,20.118 33.99,16.004C34.145,11.815 32.519,7.93 29.5,4.884ZM17.035,24.383C12.235,24.383 8.364,20.651 8.364,16.004C8.364,15.167 9.061,14.481 9.912,14.481C10.764,14.481 11.461,15.167 11.461,16.004C11.461,18.975 13.938,21.336 17.035,21.336C20.132,21.336 22.609,18.975 22.609,16.004C22.609,15.167 23.306,14.481 24.158,14.481C25.009,14.481 25.706,15.167 25.706,16.004C25.706,20.651 21.835,24.383 17.035,24.383Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="17"
|
||||
android:startY="0"
|
||||
android:endX="17"
|
||||
android:endY="32"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF5788FF"/>
|
||||
<item android:offset="1" android:color="#FF00C9F0"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- This is the main color -->
|
||||
<item>
|
||||
<shape>
|
||||
<!-- 边框颜色 -->
|
||||
<gradient android:startColor="#fff" android:endColor="#fff" android:angle="0"/>
|
||||
<corners android:radius="15dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
<!-- 给View的上 左 右设置8dp的边框 -->
|
||||
<item
|
||||
android:bottom="3dp"
|
||||
android:left="1dp"
|
||||
android:right="3dp"
|
||||
android:top="1dp">
|
||||
<shape>
|
||||
<!-- View填充颜色 -->
|
||||
<solid android:color="#FF8A04" />
|
||||
<gradient android:startColor="#fff" android:endColor="#fff" android:angle="0"/>
|
||||
<corners android:radius="15dp" />
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/oc_index_bg"
|
||||
android:background="#FF6FA2FA"
|
||||
tools:context=".act.ChangeNodeActivity"
|
||||
android:padding="@dimen/dp_10">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
|
@ -27,16 +27,17 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:tint="@color/white"
|
||||
/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#B36C1B"
|
||||
android:textColor="#FFFFFFFF"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/changeLocation"
|
||||
android:text="@string/LineChoose"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
|
@ -66,17 +67,17 @@
|
|||
android:layout_marginTop="18dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/node_user_traffic"
|
||||
android:orientation="horizontal"
|
||||
android:background="@drawable/oc_proxy_bg"
|
||||
android:background="@drawable/yil_node_proxy_bg"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvProA"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/oc_proxy_choose_bg"
|
||||
android:background="@drawable/yil_node_proxy_choose_bg"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/anqpro"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textColor="#FF2D2D2D"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
/>
|
||||
|
|
@ -87,7 +88,7 @@
|
|||
android:layout_weight="1"
|
||||
android:text="@string/jsmpri"
|
||||
android:gravity="center"
|
||||
android:textColor="#B36C1B"
|
||||
android:textColor="#FF2D2D2D"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
/>
|
||||
|
|
@ -102,6 +103,8 @@
|
|||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:layout_marginStart="11dp"
|
||||
android:layout_marginEnd="11dp"
|
||||
>
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_node_list"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/oc_index_bg"
|
||||
android:background="@drawable/yjl_setting_bg"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTitle"
|
||||
|
|
@ -24,11 +24,12 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:tint="#000"
|
||||
/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/orange_B36C1B"
|
||||
android:textColor="#000"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
|
|
|
|||
|
|
@ -16,11 +16,6 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
|
||||
android:layout_marginLeft="0dp"
|
||||
android:layout_marginStart="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:layout_marginRight="0dp"
|
||||
android:layout_marginBottom="0dp"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
>
|
||||
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
android:layout_marginRight="20dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/DeviceBinding"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="18sp"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -26,27 +26,10 @@
|
|||
android:layout_margin="@dimen/dp_10"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_pay_cancle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:textColor="@color/white"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingBottom="@dimen/dp_10"
|
||||
android:text="@string/cancel"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_pay_finish"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="50dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
|
|
@ -58,5 +41,21 @@
|
|||
android:paddingBottom="@dimen/dp_10"
|
||||
android:text="@string/binding"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_pay_cancle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginLeft="50dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/bing_bg"
|
||||
android:textColor="#FF333333"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingTop="@dimen/dp_10"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingBottom="@dimen/dp_10"
|
||||
android:text="@string/cancel"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@mipmap/oc_index_bg"
|
||||
android:background="@drawable/yjl_setting_bg"
|
||||
android:id="@+id/root_view"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,21 +1,36 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/pay_dialog_bg"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivClose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:src="@drawable/yjl_close_vbg"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvShowTime"
|
||||
android:textStyle="bold"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp"
|
||||
android:textColor="#B36C1B"
|
||||
android:textColor="#FF000000"
|
||||
android:text="@string/TimeOver"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginBottom="20dp" />
|
||||
android:layout_marginTop="20dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/aivClose"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_pay_finish"
|
||||
|
|
@ -24,6 +39,7 @@
|
|||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:textColor="@color/white"
|
||||
android:gravity="center"
|
||||
|
|
@ -32,5 +48,9 @@
|
|||
android:paddingRight="20dp"
|
||||
android:paddingBottom="@dimen/dp_10"
|
||||
android:text="@string/GORecharge"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvShowTime"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -19,9 +19,7 @@
|
|||
android:id="@+id/clUserCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="48dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:background="@drawable/yjl_home_user_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
@ -73,7 +71,7 @@
|
|||
android:maxLines="1"
|
||||
android:text=""
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="12dp" />
|
||||
android:textSize="14sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -174,8 +172,8 @@
|
|||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/ivAccelerate"
|
||||
android:layout_width="250dp"
|
||||
android:layout_height="250dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="300dp"
|
||||
android:src="@mipmap/yjl_home_clink_bg"
|
||||
/>
|
||||
|
||||
|
|
@ -270,7 +268,7 @@
|
|||
android:id="@+id/tvNodeName"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/CurrentRoute"
|
||||
android:text="@string/AutomaticSelection"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginStart="10dp"
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_login_tv_login_start_margin"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="@dimen/layout_login_tv_login_end_margin"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
|
|
@ -237,7 +237,7 @@
|
|||
android:id="@+id/tvRegister"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/yjl_register_login_bg"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
|
|
@ -249,7 +249,6 @@
|
|||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="@+id/tv_login"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_login"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_login" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -261,10 +260,13 @@
|
|||
android:text="@string/loginTips"
|
||||
android:textColor="#828282"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvRegister" />
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvRegister"
|
||||
android:layout_marginTop="10dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_kefu"
|
||||
|
|
@ -292,9 +294,22 @@
|
|||
android:visibility="visible"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llPassword" />
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/customService"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:contentDescription="@string/OnlineCustomerService"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:srcCompat="@drawable/yjl_logoing_cust"
|
||||
app:backgroundTint="#fff"
|
||||
app:tint="@null"
|
||||
app:maxImageSize="40dp"
|
||||
app:useCompatPadding="false"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -4,8 +4,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:ignore="MissingConstraints"
|
||||
android:background="@mipmap/oc_index_bg">
|
||||
android:background="#FFF">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTitle"
|
||||
|
|
@ -30,129 +29,65 @@
|
|||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#B36C1B"
|
||||
android:textColor="#FF333333"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/SharingTime"
|
||||
android:text="@string/share"
|
||||
android:textSize="18sp"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_gif"
|
||||
android:layout_width="0dp"
|
||||
android:contentDescription="@string/share"
|
||||
app:layout_constraintWidth_percent="0.55"
|
||||
app:layout_constraintHeight_percent="0.25"
|
||||
android:layout_height="0dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="20dp"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/oc_dog"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="500dp"
|
||||
android:background="@mipmap/yjl_share_bg"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle"
|
||||
/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTXT"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_gif"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:background="@drawable/oc_language_bg"
|
||||
android:layout_marginStart="31dp"
|
||||
android:layout_marginEnd="31dp"
|
||||
android:layout_marginTop="21dp"
|
||||
android:layout_marginTop="50dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tv_share_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/RecommendFriends"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_share_conetent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_share_title"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_below="@id/tv_share_title"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="11dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:textSize="12sp" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/gray_828282"
|
||||
android:layout_marginStart="31dp"
|
||||
android:layout_marginEnd="31dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTXT"
|
||||
android:layout_marginTop="21dp"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_share_url"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/line"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:textColor="@color/gray_828282"
|
||||
android:textSize="12sp"
|
||||
android:layout_marginStart="31dp"
|
||||
android:visibility="gone"
|
||||
android:layout_marginEnd="31dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tv_share_btn"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:textColor="#FFF"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="32dp"
|
||||
android:layout_marginTop="150dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:textSize="14sp"
|
||||
android:ellipsize="end"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_share_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="46dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
android:paddingTop="@dimen/layout_login_tv_login_top_padding"
|
||||
android:paddingBottom="@dimen/layout_login_tv_login_bottom_padding"
|
||||
android:text="@string/ShareLink"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:text="@string/shareNow"
|
||||
android:textSize="16sp"
|
||||
android:textColor="#FFFF961C"
|
||||
android:textStyle="bold"
|
||||
android:visibility="visible"
|
||||
android:shadowColor="#9AB4FE"
|
||||
android:layout_marginStart="31dp"
|
||||
android:layout_marginEnd="31dp"
|
||||
android:paddingStart="62dp"
|
||||
android:paddingEnd="62dp"
|
||||
android:paddingTop="13dp"
|
||||
android:paddingBottom="13dp"
|
||||
android:background="@drawable/yjl_share_bt_bg"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -38,23 +38,7 @@
|
|||
android:layout_centerInParent="true"
|
||||
android:indeterminateTint="@color/blue_0136CB"
|
||||
android:visibility="invisible" />
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/oc_pdy"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_centerInParent="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/jmTips"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/jumapStr"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerInParent="true"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerInParent="true"
|
||||
|
|
@ -160,7 +144,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_marginBottom="80dp"
|
||||
android:layout_marginBottom="180dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<ProgressBar
|
||||
|
|
|
|||
|
|
@ -106,14 +106,14 @@
|
|||
app:layout_constraintTop_toTopOf="@+id/userIcon"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userIcon"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="108dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvUserName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:text=""
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
android:id="@+id/tvUserTimeEnd"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:text=""
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="14sp"
|
||||
android:layout_marginTop="5dp"
|
||||
|
|
@ -173,9 +173,9 @@
|
|||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="350dp"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_height="280dp"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginBottom="13dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/clCustomTxt"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView3"
|
||||
tools:layout_editor_absoluteX="10dp">
|
||||
|
|
@ -222,15 +222,17 @@
|
|||
android:id="@+id/tvTxtShowLink"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:padding="5dp"
|
||||
android:text="@string/LinekCustom"
|
||||
android:textColor="#FFFC4863"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toEndOf="@+id/tvTxtShow"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.0" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<TextView
|
||||
android:id="@+id/tvPay"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@drawable/home_node_bg"
|
||||
android:background="@drawable/yil_home_node_bg"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
|
|
@ -26,15 +26,17 @@
|
|||
|
||||
<TextView
|
||||
android:id="@+id/node_list_item_tv_node_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_toEndOf="@id/node_list_item_iv_country"
|
||||
android:text=""
|
||||
android:textColor="#0136CB"
|
||||
android:textColor="#FF000000"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/node_list_item_iv_country"
|
||||
app:layout_constraintEnd_toStartOf="@+id/tv_ping_time"
|
||||
app:layout_constraintStart_toEndOf="@+id/node_list_item_iv_country"
|
||||
app:layout_constraintTop_toTopOf="@+id/node_list_item_iv_country" />
|
||||
|
||||
|
|
@ -43,7 +45,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:layout_marginEnd="30dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/mrb_node_checked"
|
||||
android:textColor="#0136CB"
|
||||
|
|
@ -56,6 +58,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/qr_pay_note_wx"
|
||||
android:src="@drawable/ic_wifi_powerful"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/node_list_item_tv_node_name"
|
||||
|
|
@ -66,10 +69,8 @@
|
|||
android:id="@+id/mrb_node_checked"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:background="@drawable/home_node_img_bg"
|
||||
android:src="@drawable/check_img"
|
||||
android:clickable="false"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
|||
|
|
@ -34,11 +34,8 @@
|
|||
android:id="@+id/clUserPage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="17dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle">
|
||||
|
||||
|
|
@ -46,8 +43,8 @@
|
|||
android:id="@+id/userIcon"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:src="@mipmap/yjl_usericon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
|
@ -73,7 +70,7 @@
|
|||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:text=""
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp" />
|
||||
|
||||
|
|
@ -86,9 +83,9 @@
|
|||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:text=""
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="16sp" />
|
||||
android:textSize="14sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -184,9 +181,9 @@
|
|||
android:id="@+id/goGetVip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/givip_bg"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingTop="8dp"
|
||||
|
|
@ -263,9 +260,9 @@
|
|||
android:id="@+id/goSee"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/givip_see_bg"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingTop="8dp"
|
||||
|
|
@ -315,7 +312,7 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout 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/rl_item_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="5dp">
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -21,19 +24,19 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@drawable/vip_item_nochoose_bg"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginTop="10dp"
|
||||
>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginTop="23dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginStart="49dp"
|
||||
android:layout_marginEnd="49dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
>
|
||||
<TextView
|
||||
|
|
@ -51,6 +54,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="8dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
|
|
@ -70,7 +74,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:textColor="#FFF89F25"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="36.8"
|
||||
android:text=""
|
||||
android:textSize="18sp"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
|
|
@ -82,9 +86,9 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#FF9EA3A5"
|
||||
android:text="¥36.8/月"
|
||||
android:text=""
|
||||
android:textSize="14sp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:drawablePadding="@dimen/dp_10"
|
||||
|
|
@ -105,17 +109,17 @@
|
|||
|
||||
<TextView
|
||||
android:id="@+id/tvRandomlySend"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="84dp"
|
||||
android:layout_height="15dp"
|
||||
android:layout_marginStart="7dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="7dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
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:text=""
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp"
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 215 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 324 KiB After Width: | Height: | Size: 507 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 713 KiB |
|
|
@ -463,7 +463,7 @@
|
|||
<string name="openqy">开通立即享三大权益</string>
|
||||
<string name="jstime">加速时间</string>
|
||||
<string name="jstimeStr">不限时间</string>
|
||||
<string name="VipSerTxt">你的专属客服当前在线, </string>
|
||||
<string name="VipSerTxt">你的专属客服当前在线,</string>
|
||||
<string name="LinekCustom">点击为你解答</string>
|
||||
<string name="NewNotice">最新通知</string>
|
||||
<string name="vipTimeStrEd">你的会员还有$天到期</string>
|
||||
|
|
@ -473,4 +473,7 @@
|
|||
<string name="liuliangStrAA">解锁流媒体</string>
|
||||
<string name="liuliangStrEdAAA">智能连接</string>
|
||||
<string name="PAYiNG">¥</string>
|
||||
<string name="currentVersionNumber">版本号</string>
|
||||
<string name="LineChoose">线路选择</string>
|
||||
<string name="shareNow">立即分享</string>
|
||||
</resources>
|
||||
|
|
@ -3,19 +3,16 @@
|
|||
<!-- <style name="BootstrapTheme" parent="AppThemeLight" />-->
|
||||
|
||||
<style name="Theme.Octopus" parent="Theme.MaterialComponents.DayNight.NoActionBar">
|
||||
<!-- Primary brand color. -->
|
||||
<item name="colorPrimary">@color/purple_500</item>
|
||||
<item name="colorPrimaryVariant">@color/purple_700</item>
|
||||
<!-- Primary brand color -->
|
||||
<item name="colorPrimary">@color/white</item>
|
||||
<item name="colorPrimaryVariant">@color/white</item>
|
||||
<item name="colorOnPrimary">@color/white</item>
|
||||
|
||||
<!-- Secondary brand color. -->
|
||||
<item name="colorSecondary">@color/teal_200</item>
|
||||
<item name="colorSecondaryVariant">@color/teal_700</item>
|
||||
<item name="colorSecondary">@color/white</item>
|
||||
<item name="colorSecondaryVariant">@color/white</item>
|
||||
<item name="colorOnSecondary">@color/black</item>
|
||||
<item name="android:textAllCaps">false</item>
|
||||
<!-- Status bar color. -->
|
||||
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:windowAnimationStyle">@style/activityAnim</item>
|
||||
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue