一键连新UI
|
|
@ -116,7 +116,7 @@
|
|||
android:name=".act.ActivityActivity"
|
||||
android:process=":background"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity android:name=".act.NewMainActivity"
|
||||
<activity android:name=".act.MainActivity"
|
||||
android:process=":background"
|
||||
android:screenOrientation="portrait"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ class BandPhoneActivity : BaseActivity() {
|
|||
private lateinit var etSmsCode: EditText
|
||||
private var phoneNumber: String = ""
|
||||
var isBandPhone = false
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
|
@ -45,10 +44,6 @@ class BandPhoneActivity : BaseActivity() {
|
|||
tvAccount = findViewById(R.id.tv_account)
|
||||
tvTitle = findViewById(R.id.tv_title)
|
||||
etSmsCode = findViewById(R.id.et_sms_code)
|
||||
aiBack=findViewById(R.id.aiBack)
|
||||
aiBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
|
||||
tvSmsCode = findViewById(R.id.tv_sms_code)
|
||||
tvSmsCode.setOnClickListener {
|
||||
|
|
|
|||
|
|
@ -28,18 +28,17 @@ import com.google.gson.JsonParser
|
|||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.clashBinder
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.act.MainActivity.Companion.clashBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.app.MainApplication
|
||||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.conf.Conf
|
||||
import com.yingmao.clash.entity.ClashNodebBean
|
||||
import com.yingmao.clash.fragment.NewAccFragment
|
||||
import com.yingmao.clash.fragment.NewAccFragment.Companion.CHECK_NODE_REQUEST_CODE
|
||||
import com.yingmao.clash.fragment.NewAccFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.fragment.NewAccFragment.Companion.isGlo
|
||||
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.remote.Resource
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.view.RxToast
|
||||
|
|
@ -323,7 +322,7 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
showLoading("正在获取...", this@ChangeNodeActivity)
|
||||
startTimer()
|
||||
launch(Dispatchers.IO) {
|
||||
NewMainActivity.setSub2(nowSubUrl)
|
||||
MainActivity.setSub2(nowSubUrl)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -338,7 +337,7 @@ class ChangeNodeActivity : BaseActivity(), View.OnClickListener {
|
|||
|
||||
val reloadLock = Semaphore(10)
|
||||
private fun setPing() {
|
||||
if (!NewAccFragment.clashRunning) {
|
||||
if (!clashRunning) {
|
||||
RxToast.info("请先开启加速后,再进行测试.")
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,14 +5,12 @@ import android.content.Intent
|
|||
import android.os.Bundle
|
||||
import android.text.method.HideReturnsTransformationMethod
|
||||
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.CheckBox
|
||||
import android.widget.CompoundButton
|
||||
import android.widget.EditText
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
|
|
@ -20,9 +18,8 @@ import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
|||
import com.orhanobut.logger.Logger
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.base.BaseNotTitleActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
|
|
@ -36,26 +33,16 @@ import kotlinx.coroutines.launch
|
|||
|
||||
class ChangePwdActivity : BaseActivity() {
|
||||
private lateinit var rxDialogShapeLoading : RxDialogShapeLoading
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_change_pwd)
|
||||
//点击输入框外边隐藏输入法 必须在setContentView之后调用
|
||||
setupUI(findViewById<ViewGroup>(android.R.id.content).getChildAt(0))
|
||||
initView()
|
||||
}
|
||||
private fun initView() {
|
||||
aiBack=findViewById(R.id.aiBack)
|
||||
aiBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
val originalPasswordEt = findViewById<EditText>(R.id.et_original_password)
|
||||
val originalPasswordErrorTv = findViewById<TextView>(R.id.tv_original_password_error)
|
||||
val newPasswordEt = findViewById<EditText>(R.id.et_new_password)
|
||||
val newPasswordErrorTv = findViewById<TextView>(R.id.tv_new_password_error)
|
||||
val changeTv = findViewById<TextView>(R.id.tv_change)
|
||||
|
||||
val originalPasswordHideCb = findViewById<CheckBox>(R.id.cb_original_password_hide)
|
||||
|
|
@ -69,15 +56,12 @@ class ChangePwdActivity : BaseActivity() {
|
|||
|
||||
val originalPassword = originalPasswordEt.text.toString().trim()
|
||||
if (originalPassword.isBlank()) {
|
||||
originalPasswordErrorTv.visibility = View.VISIBLE
|
||||
originalPasswordErrorTv.text = getString(R.string.please_input_original_password)
|
||||
getFocusAndShowSoftInput(originalPasswordEt)
|
||||
return@setOnClickListener
|
||||
}
|
||||
val newPassword = newPasswordEt.text.toString().trim()
|
||||
if (newPassword.isBlank()) {
|
||||
newPasswordErrorTv.visibility = View.VISIBLE
|
||||
newPasswordErrorTv.text = getString(R.string.please_input_new_password)
|
||||
|
||||
getFocusAndShowSoftInput(newPasswordEt)
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,10 +87,6 @@ class ForGetPwdActivity : BaseActivity(),
|
|||
RxToast.error(resources.getString(R.string.enterPhoneNumber))
|
||||
}
|
||||
}
|
||||
|
||||
findViewById<AppCompatImageView>(R.id.aiBack).setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.yingmao.clash.act
|
|||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
|
|
@ -11,7 +10,6 @@ import android.text.SpannableStringBuilder
|
|||
import android.text.TextUtils
|
||||
import android.text.method.HideReturnsTransformationMethod
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.text.style.BackgroundColorSpan
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
|
@ -30,15 +28,12 @@ import com.yingmao.clash.app.MainApplication
|
|||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.CheckLoginRsp
|
||||
import com.yingmao.clash.listener.AsyncBodyCallback
|
||||
import com.yingmao.clash.listener.AsyncCallback
|
||||
import com.yingmao.clash.listener.DownLoadListener
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.entity.AppVersionCheckRsp
|
||||
import com.yingmao.clash.util.AESUtil
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.view.PasswordTransformationMethodBigDot
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.DialogAppVersion
|
||||
|
|
@ -240,7 +235,7 @@ class LoginActivity : BaseActivity(), View.OnClickListener {
|
|||
}
|
||||
|
||||
private fun toMain() {
|
||||
startActivity(Intent(this, NewMainActivity::class.java))
|
||||
startActivity(Intent(this, MainActivity::class.java))
|
||||
finish()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,734 @@
|
|||
package com.yingmao.clash.act
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
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
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
import com.afollestad.materialdialogs.customview.getCustomView
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.cncat.vpn.core.model.LogMessage
|
||||
import com.cncat.vpn.service.ClashManager
|
||||
import com.cncat.vpn.service.ProfileManager
|
||||
import com.cncat.vpn.service.model.Profile
|
||||
import com.cncat.vpn.service.remote.IClashManager
|
||||
import com.cncat.vpn.service.remote.ILogObserver
|
||||
import com.cncat.vpn.service.remote.IProfileManager
|
||||
import com.cncat.vpn.service.remote.wrap
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonObject
|
||||
import com.orhanobut.logger.Logger
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.app.MainApplication
|
||||
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.home.HomeFragment
|
||||
import com.yingmao.clash.fragment.setting.SettingFragment
|
||||
import com.yingmao.clash.net.http.HttpApi
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.NetService
|
||||
import com.yingmao.clash.net.http.entity.AppVersionCheckRsp
|
||||
import com.yingmao.clash.net.http.entity.ExpensesRecordRsp
|
||||
import com.yingmao.clash.net.http.entity.GetActivityRsp
|
||||
import com.yingmao.clash.net.http.entity.PhDownloadUrlRsp
|
||||
import com.yingmao.clash.net.http.entity.SubscriptionRsp
|
||||
import com.yingmao.clash.remote.Remote
|
||||
import com.yingmao.clash.util.AESUtil
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.ActivityViewDialog
|
||||
import com.yingmao.clash.view.dialog.ActivityViewDialog.OnDialogClickListener
|
||||
import com.yingmao.clash.view.dialog.DialogBandChoose
|
||||
import com.yingmao.clash.view.dialog.NoticeViewDialog
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
import com.yingmao.clash.vm.MainAtyVM
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||
import okhttp3.RequestBody
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Timer
|
||||
import java.util.TimerTask
|
||||
import java.util.UUID
|
||||
|
||||
|
||||
class MainActivity : BaseActivity() {
|
||||
|
||||
|
||||
val fragments = arrayListOf<Fragment>()
|
||||
private lateinit var mainAtyVM: MainAtyVM
|
||||
private var payResultLoading: RxDialogShapeLoading? = null
|
||||
private val clashRunning: Boolean
|
||||
get() = Remote.broadcasts.clashRunning
|
||||
|
||||
private var timer: Timer? = null
|
||||
private var uTimerTask: TimerTask? = null
|
||||
private var newMainActGlo: Boolean = false
|
||||
private var homeFragment: HomeFragment? = null
|
||||
private var settingFragment: SettingFragment? = null
|
||||
|
||||
private var activityFragment: vipFragment? = null
|
||||
|
||||
private lateinit var aivHome:AppCompatImageView
|
||||
private lateinit var aivCenter:AppCompatImageView
|
||||
private lateinit var aivVip: AppCompatImageView
|
||||
|
||||
@SuppressLint("SimpleDateFormat")
|
||||
private val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
||||
private var activityDialog: ActivityViewDialog? = null
|
||||
private var checkPayResultDia: MaterialDialog? = null
|
||||
private var checkBindAccountDia: MaterialDialog? = null
|
||||
private var currentTag = TAG_HOME
|
||||
|
||||
private val mPageInfo = ExpensesRecordActivity.PageInfo()
|
||||
companion object {
|
||||
var isVip:Boolean=false
|
||||
//记录心跳失败次数
|
||||
var HEART_BEAT_FAILURE_FREQUENCY = 0
|
||||
const val REQUEST_CODE_PAY_WEB_VIEW_ACTIVITY = 1000
|
||||
var isSubed = false
|
||||
var isSubbed = false
|
||||
var subUrl: String? = null
|
||||
|
||||
var isUpload: Boolean = false
|
||||
var hostsMem: ArrayList<String> = kotlin.collections.ArrayList()
|
||||
var profileBinder: IProfileManager? = null
|
||||
var newMainActGlo: Boolean = false
|
||||
var newUuid: String? = null
|
||||
var clashBinder: IClashManager? = null
|
||||
|
||||
private const val TAG_HOME = "home"
|
||||
private const val TAG_PROFILE = "profile"
|
||||
private const val TAG_RECHARGE = "recharge"
|
||||
suspend fun setSub2(url: String) {
|
||||
profileBinder?.let { pm ->
|
||||
pm.queryAll().forEach { itemPro ->
|
||||
if (itemPro.name != Conf.getClashConfName(MainApplication.getApp()?.applicationContext)) {
|
||||
pm.delete(itemPro.uuid)
|
||||
}
|
||||
}
|
||||
val pro = pm.queryAll().find {
|
||||
it.name == Conf.getClashConfName(MainApplication.getApp()?.applicationContext)
|
||||
}
|
||||
pro?.let {
|
||||
pm.setActive(it)
|
||||
delay(500)
|
||||
//判断配置文件source
|
||||
if (!TextUtils.isEmpty(pro.source)) {
|
||||
Log.d("setSub2 pro.source==>${pro.source}, url==>${url}")
|
||||
//订阅链接不同就更换
|
||||
if (pro.source != url) {
|
||||
pm.patch(
|
||||
pro.uuid, pro.name,
|
||||
url, 1800000L
|
||||
)
|
||||
pm.commit(pro.uuid) { status ->
|
||||
android.util.Log.d(
|
||||
Conf.TAG,
|
||||
"new updateStatus: " + Gson().toJson(status.args) + ", pro==>" + status.progress
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
pm.update(it.uuid)
|
||||
newUuid = pro.uuid.toString()
|
||||
isSubbed = true
|
||||
} ?: run {
|
||||
val uuid: UUID = pm.create(
|
||||
Profile.Type.Url,
|
||||
Conf.getClashConfName(MainApplication.getApp()?.applicationContext)
|
||||
)
|
||||
delay(500)
|
||||
pm.queryByUUID(uuid)?.let { qPro ->
|
||||
pm.setActive(qPro)
|
||||
pm.patch(
|
||||
qPro.uuid, qPro.name,
|
||||
url, 1800000L
|
||||
)
|
||||
pm.commit(qPro.uuid) { status ->
|
||||
android.util.Log.d(
|
||||
Conf.TAG,
|
||||
"new updateStatus: " + Gson().toJson(status.args) + ", pro==>" + status.progress
|
||||
)
|
||||
}
|
||||
newUuid = qPro.uuid.toString()
|
||||
isSubbed = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_uimain)
|
||||
initView(savedInstanceState)
|
||||
initData()
|
||||
|
||||
mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java]
|
||||
observe(this, mainAtyVM)
|
||||
mainAtyVM.startHeartBeat()
|
||||
MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
mainAtyVM.getAirNodes()
|
||||
val isGlobal = MMKV.defaultMMKV().decodeBool(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
newMainActGlo = isGlobal
|
||||
startLog()
|
||||
firstEntry()
|
||||
mainAtyVM.getExpensesRecord(mPageInfo)
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
clashBinder = MainApplication.getApp()?.let { ClashManager(it).wrap() as IClashManager }
|
||||
profileBinder =
|
||||
MainApplication.getApp()?.let { ProfileManager(it).wrap() as IProfileManager }
|
||||
}
|
||||
|
||||
private fun initView(savedInstanceState: Bundle?) {
|
||||
aivHome=findViewById(R.id.aivHome)
|
||||
aivCenter=findViewById(R.id.aivCenter)
|
||||
aivVip=findViewById(R.id.aivVip)
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
homeFragment = HomeFragment()
|
||||
supportFragmentManager.beginTransaction()
|
||||
.add(R.id.fragmentContainer, homeFragment!!)
|
||||
.commit()
|
||||
}
|
||||
aivHome.setOnClickListener {
|
||||
if (homeFragment == null) homeFragment = HomeFragment()
|
||||
showFragment(homeFragment!!)
|
||||
aivHome.setImageResource(R.drawable.yjl_vip_page_choose)
|
||||
aivCenter.setImageResource(R.drawable.yjl_user_page)
|
||||
aivVip.setImageResource(R.drawable.yjl_vip_page)
|
||||
}
|
||||
|
||||
aivCenter.setOnClickListener {
|
||||
if (settingFragment == null) settingFragment = SettingFragment()
|
||||
showFragment(settingFragment!!)
|
||||
aivHome.setImageResource(R.drawable.yjl_home_page)
|
||||
aivCenter.setImageResource(R.drawable.yjl_user_page_choose)
|
||||
aivVip.setImageResource(R.drawable.yjl_vip_page)
|
||||
}
|
||||
|
||||
aivVip.setOnClickListener {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showFragment(fragment: Fragment) {
|
||||
val fragmentManager = supportFragmentManager
|
||||
val transaction = fragmentManager.beginTransaction()
|
||||
|
||||
// 隐藏所有 Fragment
|
||||
fragmentManager.fragments.forEach {
|
||||
transaction.hide(it)
|
||||
}
|
||||
|
||||
if (!fragment.isAdded) {
|
||||
transaction.add(R.id.fragmentContainer, fragment)
|
||||
} else {
|
||||
transaction.show(fragment)
|
||||
}
|
||||
transaction.commit()
|
||||
}
|
||||
|
||||
override fun httpLoading(httpStatus: HttpStatus.Loading) {
|
||||
if (httpStatus.reqType == HttpReqType.HEARTBEAT) {
|
||||
Logger.d("心跳中")
|
||||
} else if (httpStatus.reqType == HttpReqType.CHECK_LOGIN) {
|
||||
showLoadingDialog(resources.getString(R.string.QueryingPaymentResults))
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.GET_AIRNODES -> {
|
||||
val data = httpStatus.rsp as SubscriptionRsp
|
||||
if (data.code != "1000") {
|
||||
RxToast.error(resources.getString(R.string.NodeAcquisitionFailed) + "${data.msg}")
|
||||
}
|
||||
data.data.let { url ->
|
||||
android.util.Log.e("Data", "机场URL:=${url}")
|
||||
if (url.isNotEmpty()) {
|
||||
//todo 判断订阅地址是否修改过,未修改就用接口返回的地址反之使用本地修改的地址
|
||||
var pro_sub_url =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.PROFILE_SUB_URL, "")
|
||||
// Log.d("pro_sub_url==>${pro_sub_url}")
|
||||
if (!TextUtils.isEmpty(pro_sub_url)) {
|
||||
if (pro_sub_url == url) {
|
||||
subUrl = url
|
||||
} else {
|
||||
subUrl = pro_sub_url
|
||||
}
|
||||
} else {
|
||||
subUrl = url
|
||||
}
|
||||
launch(Dispatchers.IO) {
|
||||
subUrl?.let { setSub2(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
HttpReqType.GetActivity -> {
|
||||
val data = httpStatus.rsp as GetActivityRsp
|
||||
if (data.code == 200) {
|
||||
if (data.data.data.list.isNotEmpty()) {
|
||||
data.data.data.list[0].redirectLink.let {
|
||||
if (activityDialog == null) {
|
||||
activityDialog =
|
||||
ActivityViewDialog(this, data.data.data.list[0].redirectLink)
|
||||
activityDialog?.setOnDialogClickListener(object :
|
||||
OnDialogClickListener {
|
||||
override fun onRechargeClickListener() {
|
||||
//跳转到支付界面
|
||||
goBackupRechargeWeb()
|
||||
}
|
||||
|
||||
override fun onCancelClickListener() {
|
||||
activityDialog?.dismiss()
|
||||
}
|
||||
})
|
||||
activityDialog?.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HttpReqType.CHECK_LOGIN -> {
|
||||
(httpStatus.rsp as CheckLoginRsp).let { checkLoginRsp ->
|
||||
if (checkLoginRsp.code == 0) {
|
||||
val mmkv = MMKV.defaultMMKV()
|
||||
val oldExpireTime =
|
||||
mmkv.decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD, 0)
|
||||
val nowExpireTime = checkLoginRsp.data!!.vpnExpireTime
|
||||
|
||||
if (nowExpireTime > oldExpireTime) {
|
||||
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()
|
||||
checkPayResultDia?.dismiss()
|
||||
mainAtyVM.getAirNodes()
|
||||
RxToast.info(resources.getString(R.string.SuccessfullyUpdatedUserInformation))
|
||||
}
|
||||
}else if(checkLoginRsp.code == -2){
|
||||
RxToast.info(resources.getString(R.string.LoginOut))
|
||||
cleanUserInfo()
|
||||
}else {
|
||||
RxToast.info(resources.getString(R.string.QueryFailed))
|
||||
}
|
||||
payResultLoading?.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
HttpReqType.PHDOWNLOADURL -> {
|
||||
(httpStatus.rsp as PhDownloadUrlRsp).let {
|
||||
if (it.code == 1000) {
|
||||
val lastNotice =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_NOTICE_READ, "")
|
||||
val data = it.data
|
||||
if (data?.notice != null && lastNotice != data.notice) {
|
||||
|
||||
val userName ="AAA"+MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
|
||||
android.util.Log.i("data::::","notice::"+data.notice)
|
||||
if(data.notice.isEmpty()){
|
||||
val homeNoticeDialog = NoticeViewDialog(this@MainActivity, "暂无新通知",userName)
|
||||
homeNoticeDialog.show()
|
||||
|
||||
homeNoticeDialog.setOnDialogClickListener {
|
||||
MMKV.defaultMMKV()
|
||||
.encode(BZYConstants.MMKV_KEY_NOTICE_READ, data.notice)
|
||||
homeNoticeDialog.dismiss()
|
||||
}
|
||||
}else{
|
||||
val homeNoticeDialog = NoticeViewDialog(this@MainActivity, data.notice,userName)
|
||||
homeNoticeDialog.show()
|
||||
|
||||
homeNoticeDialog.setOnDialogClickListener {
|
||||
MMKV.defaultMMKV()
|
||||
.encode(BZYConstants.MMKV_KEY_NOTICE_READ, data.notice)
|
||||
homeNoticeDialog.dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.EXPENSES_RECORD ->{
|
||||
if(httpStatus.rsp is ExpensesRecordRsp){
|
||||
httpStatus.rsp.let { expensesRecordRsp ->
|
||||
if(expensesRecordRsp.code == "1000"){
|
||||
if(expensesRecordRsp.data != null) {
|
||||
val expensesRecordList = expensesRecordRsp.data.expensesRecords
|
||||
if(expensesRecordList!=null){
|
||||
val filterData = expensesRecordList.filter { it.rechargeMoney != null }
|
||||
|
||||
android.util.Log.i("EXPENSES_RECORD:","filterData:::"+filterData.size)
|
||||
if(filterData.size==1){
|
||||
val orderID = filterData[0].id
|
||||
val report = filterData[0].reportFlag
|
||||
android.util.Log.i("UPLoad:","data:::"+report+"orderId:"+orderID)
|
||||
if(report == null){
|
||||
//调用上报日志 记录数据
|
||||
if (orderID != null) {
|
||||
mainAtyVM.getReport(orderID)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(filterData.size>0){
|
||||
isVip=true
|
||||
}else{
|
||||
isVip=false
|
||||
}
|
||||
}else{
|
||||
isVip=false
|
||||
}
|
||||
}else{
|
||||
isVip=false
|
||||
}
|
||||
}else{
|
||||
isVip=false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.Report->{
|
||||
(httpStatus.rsp as AppVersionCheckRsp).let {
|
||||
android.util.Log.i("reqType:","data:::"+it.code)
|
||||
if(it.code==200){
|
||||
//上报百度支付功能
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun httpFailure(httpStatus: HttpStatus.Failure) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.HEARTBEAT -> {
|
||||
Logger.d("心跳失败")
|
||||
if (5 <= HEART_BEAT_FAILURE_FREQUENCY) {
|
||||
HEART_BEAT_FAILURE_FREQUENCY = 0
|
||||
Logger.d("心跳失败次数超过10次,退出登录")
|
||||
cleanUserInfo()
|
||||
}
|
||||
HEART_BEAT_FAILURE_FREQUENCY++
|
||||
}
|
||||
|
||||
HttpReqType.CHECK_LOGIN -> {
|
||||
payResultLoading?.dismiss()
|
||||
RxToast.error(resources.getString(R.string.QueryFailed))
|
||||
}
|
||||
|
||||
HttpReqType.GET_AIRNODES -> {
|
||||
Logger.e("获取节点异常:${httpStatus.msg}")
|
||||
}
|
||||
|
||||
HttpReqType.VIPSIGN -> {
|
||||
RxToast.error(resources.getString(R.string.CheckFailed) + httpStatus.msg)
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showLoadingDialog(msg: String) {
|
||||
payResultLoading = RxDialogShapeLoading(this)
|
||||
payResultLoading!!.setMessage(msg)
|
||||
payResultLoading!!.show()
|
||||
}
|
||||
|
||||
public fun cleanUserInfo() {
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_PH_TOKEN)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_CURRENT_NODE)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_SELECTED_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_VPN_UserCommand)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_Switch_Finsh_Set)
|
||||
Log.d("cleanUserInfo clashRunning==>${clashRunning}")
|
||||
//清除源切换记录
|
||||
|
||||
if (clashRunning) {
|
||||
fragments.filterIsInstance<HomeFragment>().forEach { it.stopClash() }
|
||||
}
|
||||
isSubed=false
|
||||
stopUploadTimer()
|
||||
mainAtyVM.stopHeartBeat()
|
||||
cleanProfile()
|
||||
startActivity(Intent(CommonUtils.getApp(), LoginActivity::class.java))
|
||||
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
finish()
|
||||
}
|
||||
|
||||
fun startUploadTimer() {
|
||||
stopUploadTimer()
|
||||
if (timer == null) {
|
||||
timer = Timer()
|
||||
uTimerTask = object : TimerTask() {
|
||||
override fun run() {
|
||||
uploadLogHttp()
|
||||
}
|
||||
}
|
||||
}
|
||||
timer?.schedule(uTimerTask, 60000, 60000)
|
||||
}
|
||||
|
||||
fun stopUploadTimer() {
|
||||
timer?.cancel()
|
||||
timer = null
|
||||
uTimerTask?.cancel()
|
||||
uTimerTask = null
|
||||
}
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
private fun cleanProfile() {
|
||||
Log.d("cleanProfile start")
|
||||
GlobalScope.launch(Dispatchers.IO) {
|
||||
profileBinder?.let { pm ->
|
||||
pm.queryAll().forEach { profile ->
|
||||
Log.d("cleanProfile go delete name==>${profile.name}, uuid==>${profile.uuid}")
|
||||
pm.release(profile.uuid)
|
||||
pm.delete(profile.uuid)
|
||||
}
|
||||
} ?: let {
|
||||
Log.d("profileBinder is null")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private fun startLog() {
|
||||
|
||||
launch(Dispatchers.IO) {
|
||||
val observer = object : ILogObserver {
|
||||
override fun newItem(log: LogMessage) {
|
||||
val msg = log.message
|
||||
if (BuildConfig.DEBUG) {
|
||||
Log.i("startLog msg==>${msg}")
|
||||
}
|
||||
val domain = Utils.getDomainNameFromString(msg)
|
||||
if (!TextUtils.isEmpty(domain)) {
|
||||
addOrSendHost(domain!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
clashBinder?.setLogObserver(observer)
|
||||
}
|
||||
}
|
||||
|
||||
fun addOrSendHost(host: String) {
|
||||
Log.d("hostsMem size==>${hostsMem.size}")
|
||||
if (!hostsMem.contains(host) && !isApiHost(host)) {
|
||||
hostsMem.add(host + "{" + dateFormat.format(Date()))
|
||||
}
|
||||
}
|
||||
|
||||
private fun isApiHost(host: String): Boolean {
|
||||
val mmkv = MMKV.defaultMMKV()
|
||||
var isApiHost = false
|
||||
val originalUrl =
|
||||
mmkv.decodeString(BZYConstants.MMKV_KEY_CURRENT_HOST, BuildConfig.service_url)
|
||||
val routerHost = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_ROUTER_HOST,
|
||||
kotlin.collections.HashSet()
|
||||
)
|
||||
if (originalUrl?.contains(host) == true) {
|
||||
isApiHost = originalUrl.contains(host)
|
||||
return isApiHost
|
||||
}
|
||||
routerHost?.forEach { rh ->
|
||||
isApiHost = rh.contains(host)
|
||||
}
|
||||
return isApiHost
|
||||
}
|
||||
|
||||
private fun firstEntry() {
|
||||
val decodeBool =
|
||||
MMKV.defaultMMKV().decodeBool(BZYConstants.INITIALIZATION, false)
|
||||
if (decodeBool) {
|
||||
MaterialDialog(this).show {
|
||||
cornerRadius(res = R.dimen.dp_10)
|
||||
customView(
|
||||
R.layout.first_entry_layout,
|
||||
scrollable = false,
|
||||
noVerticalPadding = true,
|
||||
horizontalPadding = false
|
||||
)
|
||||
getCustomView().findViewById<TextView>(R.id.determine).setOnClickListener {
|
||||
MMKV.defaultMMKV().encode(BZYConstants.INITIALIZATION, false)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mainAtyVM.getNoticeInfo()
|
||||
activityPopupWindow()
|
||||
}
|
||||
}
|
||||
|
||||
private fun activityPopupWindow() {
|
||||
mainAtyVM.getActivity()
|
||||
}
|
||||
public fun goCheckLogin() {
|
||||
mainAtyVM.checkLogin()
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
if (requestCode == REQUEST_CODE_PAY_WEB_VIEW_ACTIVITY) {
|
||||
if (activityDialog != null) {
|
||||
activityDialog?.dismiss()
|
||||
}
|
||||
goCheckLogin()
|
||||
showBindAccount()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
if (activityDialog != null) {
|
||||
if (activityDialog!!.isShowing) {
|
||||
activityDialog!!.dismiss()
|
||||
}
|
||||
|
||||
}
|
||||
super.onDestroy()
|
||||
stopUploadTimer()
|
||||
mainAtyVM.stopHeartBeat()
|
||||
clashBinder?.setLogObserver(null)
|
||||
}
|
||||
|
||||
|
||||
private fun showBindAccount() {
|
||||
val userAccount =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
if (Utils.isEmail(userAccount) || Utils.isPhoneNumber(userAccount)) {
|
||||
return
|
||||
}
|
||||
|
||||
checkBindAccountDia = MaterialDialog(this).show {
|
||||
this.cancelable(false)
|
||||
cornerRadius(res = R.dimen.dp_10)
|
||||
customView(
|
||||
R.layout.bind_account_dialog_layout,
|
||||
scrollable = false,
|
||||
noVerticalPadding = true,
|
||||
horizontalPadding = false
|
||||
)
|
||||
getCustomView().findViewById<TextView>(R.id.tv_pay_finish).setOnClickListener {
|
||||
//跳转到绑定邮箱界面
|
||||
showBingDialogChoose()
|
||||
dismiss()
|
||||
}
|
||||
getCustomView().findViewById<TextView>(R.id.tv_pay_cancle).setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showBingDialogChoose() {
|
||||
val dialog = DialogBandChoose(this@MainActivity)
|
||||
dialog.setOnBandClickListener(object : DialogBandChoose.OnBandClickListener {
|
||||
override fun onBandClick(isPhone: Boolean) {
|
||||
val intent = Intent(CommonUtils.getApp(), BandPhoneActivity::class.java)
|
||||
intent.putExtra("isPhone", isPhone)
|
||||
startActivity(intent)
|
||||
}
|
||||
})
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
fun uploadLogHttp() {
|
||||
if (hostsMem.size <= 0) {
|
||||
return
|
||||
}
|
||||
if (isUpload) {
|
||||
return
|
||||
}
|
||||
isUpload = true
|
||||
GlobalScope.launch {
|
||||
try {
|
||||
val hostsJsonArray = JsonArray()
|
||||
for (hostItem in hostsMem) {
|
||||
val hostAndTime = hostItem.split("{")
|
||||
val hostJsonObject = JsonObject()
|
||||
hostJsonObject.addProperty(
|
||||
"id", MMKV.defaultMMKV().decodeInt(BZYConstants.MMKV_KEY_NOTE_NODE_ID, 0)
|
||||
)
|
||||
hostJsonObject.addProperty("requestHosts", hostAndTime[0])
|
||||
hostJsonObject.addProperty("requestTime", hostAndTime[1])
|
||||
hostsJsonArray.add(hostJsonObject)
|
||||
}
|
||||
val httpApi = NetService.instances.createHttps(HttpApi::class.java)
|
||||
val hostsJsonArrayStr = hostsJsonArray.toString()
|
||||
val hostsJsonArrayStrObject = JsonObject()
|
||||
hostsJsonArrayStrObject.addProperty("requestLogs", hostsJsonArrayStr)
|
||||
val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")
|
||||
hostsJsonArrayStrObject.addProperty("phToken", phToken)
|
||||
|
||||
val encryptHostsJsonArrayStrObject = AESUtil.byteArrayToHexStr(
|
||||
AESUtil.encrypt(hostsJsonArrayStrObject.toString())
|
||||
)
|
||||
val requestBody: RequestBody = encryptHostsJsonArrayStrObject
|
||||
.toRequestBody("text/plain".toMediaTypeOrNull())
|
||||
val uploadRequestLogs = httpApi.uploadRequestLogs(requestBody)
|
||||
Log.d("uploadRequestLogs==>${uploadRequestLogs}")
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
hostsMem.clear()
|
||||
isUpload = false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun goBackupRechargeWeb() {
|
||||
startActivityForResult(
|
||||
Intent(this@MainActivity, MemberRechargeActivity::class.java),
|
||||
REQUEST_CODE_PAY_WEB_VIEW_ACTIVITY
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,9 @@
|
|||
package com.yingmao.clash.act
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
|
@ -34,16 +27,13 @@ import com.stripe.android.model.StripeIntent
|
|||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.app.MainApplication
|
||||
import com.yingmao.clash.act.MainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.CheckLoginRsp
|
||||
import com.yingmao.clash.entity.PayUploadParamData
|
||||
import com.yingmao.clash.entity.RechargeModelEntity
|
||||
import com.yingmao.clash.fragment.NewAccFragment
|
||||
import com.yingmao.clash.fragment.NewAccFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.fragment.recharge.RechargeViewModel
|
||||
import com.yingmao.clash.fragment.recharge.adapter.RechargeModelAdapter
|
||||
import com.yingmao.clash.fragment.recharge.adapter.VIPRechargeAdapter
|
||||
|
|
@ -60,20 +50,15 @@ import com.yingmao.clash.util.ThreadUtils
|
|||
import com.yingmao.clash.util.stopClashService
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.DialogDoMainChoose
|
||||
import com.yingmao.clash.view.dialog.PayConfirmDialog
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
import com.yingmao.clash.view.dialog.SplashDialog
|
||||
import com.yingmao.clash.vm.MainAtyVM
|
||||
import com.yingmao.clash.webview.CustomerServiceWebView
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.launch
|
||||
import java.text.DecimalFormat
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
class MemberRechargeActivity : BaseActivity() {
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
|
|
@ -81,7 +66,7 @@ class MemberRechargeActivity : BaseActivity() {
|
|||
private lateinit var swipeLayout: SwipeRefreshLayout
|
||||
private lateinit var rvRechargeList:RecyclerView
|
||||
private lateinit var tvPay:TextView
|
||||
private lateinit var tvRechargeRecord:TextView
|
||||
private lateinit var tvRechargeRecord:AppCompatImageView
|
||||
private lateinit var clCustom: ConstraintLayout
|
||||
private var selectedGrade: Grade? = null
|
||||
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import androidx.lifecycle.ViewModelProvider
|
|||
import com.cncat.vpn.common.log.Log
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
|
|
@ -65,7 +65,7 @@ class MineInfoActivity: BaseActivity() {
|
|||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_Switch_Finsh_Set)
|
||||
isSubbed =false
|
||||
NewMainActivity().stopUploadTimer()
|
||||
MainActivity().stopUploadTimer()
|
||||
mainAtyVM.stopHeartBeat()
|
||||
cleanProfile()
|
||||
val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java)
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@ class RegisterActivity : BaseActivity(), View.OnClickListener {
|
|||
private lateinit var usernameEt: EditText
|
||||
private lateinit var passwordEt: EditText
|
||||
private lateinit var passwordEtCheck: EditText
|
||||
private lateinit var usernameErrorTv: TextView
|
||||
private lateinit var passwordErrorTv: TextView
|
||||
|
||||
private lateinit var username: String
|
||||
private lateinit var password: String
|
||||
|
|
@ -152,8 +150,6 @@ class RegisterActivity : BaseActivity(), View.OnClickListener {
|
|||
passwordEtCheck = findViewById(R.id.et_password_check)
|
||||
passwordEt.transformationMethod = PasswordTransformationMethodBigDot()
|
||||
passwordEtCheck.transformationMethod = PasswordTransformationMethodBigDot()
|
||||
usernameErrorTv = findViewById(R.id.tv_username_error)
|
||||
passwordErrorTv = findViewById(R.id.tv_password_error)
|
||||
tvSmSCode=findViewById(R.id.tv_sms_code)
|
||||
etSmSCode=findViewById(R.id.et_sms_code)
|
||||
|
||||
|
|
@ -220,42 +216,31 @@ class RegisterActivity : BaseActivity(), View.OnClickListener {
|
|||
private fun checkInput(): Boolean {
|
||||
username = usernameEt.text.toString().trim()
|
||||
if (username.isBlank()) {
|
||||
usernameErrorTv.visibility = View.VISIBLE
|
||||
usernameErrorTv.text = getString(R.string.please_input_username)
|
||||
|
||||
getFocusAndShowSoftInput(usernameEt)
|
||||
return false
|
||||
}
|
||||
if (!CommonUtils.checkUsername(username)) {
|
||||
usernameErrorTv.visibility = View.VISIBLE
|
||||
// usernameErrorTv.text = getString(R.string.username_input_error)
|
||||
usernameErrorTv.text = getString(R.string.username_input_error1)
|
||||
|
||||
getFocusAndShowSoftInput(usernameEt)
|
||||
return false
|
||||
}
|
||||
usernameErrorTv.visibility = View.INVISIBLE
|
||||
usernameErrorTv.text = ""
|
||||
|
||||
password = passwordEt.text.toString().trim()
|
||||
if (password.isBlank()) {
|
||||
passwordErrorTv.visibility = View.VISIBLE
|
||||
passwordErrorTv.text = getString(R.string.please_input_password)
|
||||
|
||||
getFocusAndShowSoftInput(passwordEt)
|
||||
return false
|
||||
}
|
||||
passwordCheck = passwordEtCheck.text.toString().trim()
|
||||
if (password.isBlank()) {
|
||||
passwordErrorTv.visibility = View.VISIBLE
|
||||
passwordErrorTv.text = getString(R.string.please_input_password_check)
|
||||
|
||||
getFocusAndShowSoftInput(passwordEtCheck)
|
||||
return false
|
||||
}
|
||||
if (password != passwordCheck) {
|
||||
passwordErrorTv.visibility = View.VISIBLE
|
||||
passwordErrorTv.text = getString(R.string.please_input_password_double_err)
|
||||
return false
|
||||
}
|
||||
passwordErrorTv.visibility = View.INVISIBLE
|
||||
passwordErrorTv.text = ""
|
||||
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,17 +31,16 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
|
|||
import com.google.gson.Gson
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.newUuid
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.act.MainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.MainActivity.Companion.newUuid
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.app.MainApplication
|
||||
import com.yingmao.clash.base.BaseActivity
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.conf.Conf
|
||||
import com.yingmao.clash.entity.LanguageInfoEntity
|
||||
import com.yingmao.clash.fragment.NewAccFragment
|
||||
import com.yingmao.clash.fragment.NewAccFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.entity.AppVersionCheckRsp
|
||||
|
|
@ -72,43 +71,42 @@ import java.util.UUID
|
|||
|
||||
@Suppress("DEPRECATION")
|
||||
class SettingActivity : BaseActivity() {
|
||||
private lateinit var tvUserName:TextView
|
||||
private lateinit var clChanPsw:ConstraintLayout
|
||||
private lateinit var clFowdPsw:ConstraintLayout
|
||||
private lateinit var clDeletePsw:ConstraintLayout
|
||||
private lateinit var tvExit:TextView
|
||||
|
||||
private lateinit var mainAtyVM: MainAtyVM
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
private lateinit var clLanguageSwitching: ConstraintLayout
|
||||
private lateinit var clVerSionUpdate: ConstraintLayout
|
||||
private lateinit var clServiceTerms: ConstraintLayout
|
||||
private lateinit var clPrivacyPolicy: ConstraintLayout
|
||||
private lateinit var clApplicationModeTitleStr: ConstraintLayout
|
||||
private lateinit var llControlApplication: ConstraintLayout
|
||||
private lateinit var clSwitching:ConstraintLayout
|
||||
private lateinit var clDelete: ConstraintLayout
|
||||
private lateinit var tVApplicationModeTxt:TextView
|
||||
private var popupWindow: CommonPopupWindow? = null
|
||||
private var layoutGravity: CommonPopupWindow.LayoutGravity? = null
|
||||
var dialogDoMainChoose: DialogDoMainChoose? = null
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_setting)
|
||||
initView()
|
||||
initData()
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java]
|
||||
observe(this, mainAtyVM)
|
||||
tvUserName.text=MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
private fun initView() {
|
||||
aiBack=findViewById(R.id.aiBack)
|
||||
clLanguageSwitching=findViewById(R.id.clLanguageSwitchingStr)
|
||||
clVerSionUpdate=findViewById(R.id.clVerSionUpdate)
|
||||
clServiceTerms=findViewById(R.id.clServiceTerms)
|
||||
clPrivacyPolicy=findViewById(R.id.clyszc)
|
||||
clApplicationModeTitleStr=findViewById(R.id.clApplicationModeTitleStr)
|
||||
llControlApplication=findViewById(R.id.llControlApplication)
|
||||
tVApplicationModeTxt=findViewById(R.id.TVApplicationModeTxt)
|
||||
clSwitching=findViewById(R.id.clSwitching)
|
||||
clDelete=findViewById(R.id.clDelete)
|
||||
tvUserName=findViewById(R.id.tvUserName)
|
||||
clChanPsw=findViewById(R.id.clChanPsw)
|
||||
clFowdPsw=findViewById(R.id.clFowdPsw)
|
||||
clDeletePsw=findViewById(R.id.clDeletePsw)
|
||||
tvExit=findViewById(R.id.tvExit)
|
||||
|
||||
clDelete.setOnClickListener {
|
||||
clChanPsw.setOnClickListener {
|
||||
startActivity(Intent(this@SettingActivity, ChangePwdActivity::class.java))
|
||||
}
|
||||
clFowdPsw.setOnClickListener {
|
||||
startActivity(Intent(this@SettingActivity, ForGetPwdActivity::class.java))
|
||||
}
|
||||
clDeletePsw.setOnClickListener {
|
||||
val splashDialog =
|
||||
DialogSureCancelLogOut(this)
|
||||
splashDialog.showDialog(this@SettingActivity)
|
||||
|
|
@ -123,419 +121,11 @@ class SettingActivity : BaseActivity() {
|
|||
|
||||
})
|
||||
}
|
||||
|
||||
clSwitching.setOnClickListener {
|
||||
android.util.Log.i("SourceSwitching","clashRunning::"+ clashRunning)
|
||||
if(clashRunning){
|
||||
RxToast.info(getString(R.string.SwitchingSource))
|
||||
}else{
|
||||
RxToast.info(getString(R.string.Switching))
|
||||
//源切换
|
||||
showDomainList()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
clApplicationModeTitleStr.setOnClickListener {
|
||||
if (clashRunning) {
|
||||
RxToast.info("请关闭加速后再选择.")
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
popupWindow = object : CommonPopupWindow(
|
||||
this,
|
||||
R.layout.applicationmode_popwindow_item,
|
||||
500,
|
||||
LayoutParams.WRAP_CONTENT
|
||||
) {
|
||||
override fun initView() {
|
||||
|
||||
val view = getContentView()
|
||||
val allApp = view.findViewById<LinearLayout>(R.id.LLAll)
|
||||
val tvAllApp = view.findViewById<TextView>(R.id.TVAllApp)
|
||||
|
||||
val chooseApp = view.findViewById<LinearLayout>(R.id.LLChoose)
|
||||
val tvChooseApp = view.findViewById<TextView>(R.id.TVChoose)
|
||||
|
||||
val noChooseApp = view.findViewById<LinearLayout>(R.id.LLNoChoose)
|
||||
val tvNoChooseApp = view.findViewById<TextView>(R.id.TVNoChoose)
|
||||
|
||||
val applicationModeStr =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.applicationMode)
|
||||
if (applicationModeStr.isNullOrEmpty()) {
|
||||
allApp.setBackgroundResource(R.color.color_clash)
|
||||
tvAllApp.setTextColor(resources.getColor(R.color.white))
|
||||
} else if (applicationModeStr == "AllApp") {
|
||||
allApp.setBackgroundResource(R.color.color_clash)
|
||||
tvAllApp.setTextColor(resources.getColor(R.color.white))
|
||||
} else if (applicationModeStr == "ChooseApp") {
|
||||
chooseApp.setBackgroundResource(R.color.color_clash)
|
||||
tvChooseApp.setTextColor(resources.getColor(R.color.white))
|
||||
} else if (applicationModeStr == "noChooseApp") {
|
||||
noChooseApp.setBackgroundResource(R.color.color_clash)
|
||||
tvNoChooseApp.setTextColor(resources.getColor(R.color.white))
|
||||
}
|
||||
allApp.setOnClickListener {
|
||||
serStore.accessControlMode = AccessControlMode.AcceptAll
|
||||
MMKV.defaultMMKV().encode(BZYConstants.applicationMode, "AllApp")
|
||||
tVApplicationModeTxt.setText(R.string.allow_all_apps)
|
||||
popupWindow.dismiss()
|
||||
}
|
||||
chooseApp.setOnClickListener {
|
||||
serStore.accessControlMode = AccessControlMode.AcceptSelected
|
||||
MMKV.defaultMMKV().encode(BZYConstants.applicationMode, "ChooseApp")
|
||||
tVApplicationModeTxt.setText(R.string.allow_selected_apps)
|
||||
popupWindow.dismiss()
|
||||
}
|
||||
noChooseApp.setOnClickListener {
|
||||
serStore.accessControlMode = AccessControlMode.DenySelected
|
||||
MMKV.defaultMMKV().encode(BZYConstants.applicationMode, "noChooseApp")
|
||||
tVApplicationModeTxt.setText(R.string.deny_selected_apps)
|
||||
popupWindow.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
override fun initEvent() {}
|
||||
}
|
||||
layoutGravity =
|
||||
CommonPopupWindow.LayoutGravity(CommonPopupWindow.LayoutGravity.ALIGN_LEFT or CommonPopupWindow.LayoutGravity.TO_BOTTOM)
|
||||
(popupWindow as CommonPopupWindow).showBashOfAnchor(
|
||||
tVApplicationModeTxt,
|
||||
layoutGravity,
|
||||
0,
|
||||
0
|
||||
)
|
||||
|
||||
}
|
||||
llControlApplication.setOnClickListener {
|
||||
startActivity(Intent(this, InstallApplicationActivity::class.java))
|
||||
}
|
||||
|
||||
|
||||
clPrivacyPolicy.setOnClickListener {
|
||||
val intent = Intent(this, AgreementAndPrivacyActivity::class.java)
|
||||
intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_PRIVACY_AGREEMENT)
|
||||
startActivity(intent)
|
||||
}
|
||||
clServiceTerms.setOnClickListener {
|
||||
val intent = Intent(this, AgreementAndPrivacyActivity::class.java)
|
||||
intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_USER_AGREEMENT)
|
||||
startActivity(intent)
|
||||
}
|
||||
clVerSionUpdate.setOnClickListener {
|
||||
|
||||
}
|
||||
|
||||
clLanguageSwitching.setOnClickListener {
|
||||
val decodeString = MMKV.defaultMMKV().decodeString(BZYConstants.languageInfo, "")
|
||||
val languageInfoList = mutableListOf<LanguageInfoEntity>()
|
||||
if (decodeString.isNullOrEmpty()) {
|
||||
//获取当前系统语言
|
||||
val config = resources.configuration
|
||||
val language = config.locale.language
|
||||
val country = config.locale.country
|
||||
if (language.equals("en")) {
|
||||
val languageInfoEntity1 = LanguageInfoEntity(1, "中文简体", "Chinese CN", false)
|
||||
val languageInfoEntity2 =
|
||||
LanguageInfoEntity(2, "中文繁体", "Traditional Chinese(Hong Kong)", false)
|
||||
val languageInfoEntity3 =
|
||||
LanguageInfoEntity(3, "English", "Current language", true)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
} else if (language.equals("zh") && country.equals("HK")) {
|
||||
val languageInfoEntity1 = LanguageInfoEntity(1, "中文简体", "中文簡體", true)
|
||||
val languageInfoEntity2 = LanguageInfoEntity(2, "中文繁体", "當前語言", false)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英语", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
} else {
|
||||
val languageInfoEntity1 = LanguageInfoEntity(1, "中文简体", "当前语言", true)
|
||||
val languageInfoEntity2 = LanguageInfoEntity(2, "中文繁体", "中文繁体", false)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英文", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
}
|
||||
|
||||
} else {
|
||||
when (decodeString) {
|
||||
"Chinese-CN" -> {
|
||||
val languageInfoEntity1 =
|
||||
LanguageInfoEntity(1, "中文简体", "当前语言", true)
|
||||
val languageInfoEntity2 =
|
||||
LanguageInfoEntity(2, "中文繁体", "中文繁体", false)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英文", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
}
|
||||
|
||||
"Chinese-HK" -> {
|
||||
val languageInfoEntity1 =
|
||||
LanguageInfoEntity(1, "中文简体", "中文簡體", false)
|
||||
val languageInfoEntity2 =
|
||||
LanguageInfoEntity(2, "中文繁体", "當前語言", true)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英语", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
|
||||
}
|
||||
|
||||
"English" -> {
|
||||
val languageInfoEntity1 =
|
||||
LanguageInfoEntity(1, "中文简体", "Chinese-CN", false)
|
||||
val languageInfoEntity2 = LanguageInfoEntity(
|
||||
2,
|
||||
"中文繁体",
|
||||
"Traditional Chinese(Hong Kong)",
|
||||
false
|
||||
)
|
||||
val languageInfoEntity3 =
|
||||
LanguageInfoEntity(3, "English", "Current language", true)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
showBottomDialog(languageInfoList)
|
||||
}
|
||||
aiBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
findViewById<View>(R.id.clChushihua).setOnClickListener {
|
||||
if (checkExpire()) {
|
||||
RxToast.info(resources.getString(R.string.AccountExpired))
|
||||
return@setOnClickListener
|
||||
}
|
||||
if(clashRunning){
|
||||
RxToast.info("请关闭加速后在进行初始化操作")
|
||||
return@setOnClickListener
|
||||
}
|
||||
if (TextUtils.isEmpty(subUrl)){
|
||||
RxToast.success(resources.getString(R.string.tooFast))
|
||||
return@setOnClickListener
|
||||
}
|
||||
cleanNodeMmkv()
|
||||
showLoading(resources.getString(R.string.UnderRepair), this@SettingActivity)
|
||||
|
||||
launch(Dispatchers.IO) {
|
||||
profileBinder?.let { pm ->
|
||||
pm.queryAll().forEach { profile ->
|
||||
Log.d("setting profile delete ==>${profile.name}")
|
||||
pm.delete(profile.uuid)
|
||||
}
|
||||
delay(1000)
|
||||
if (subUrl?.isNotEmpty() == true) {
|
||||
startTimer()
|
||||
setSub2(subUrl!!, pm)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
clLanguageSwitching=findViewById(R.id.clLanguageSwitchingStr)
|
||||
clLanguageSwitching.setOnClickListener {
|
||||
val decodeString = MMKV.defaultMMKV().decodeString(BZYConstants.languageInfo, "")
|
||||
val languageInfoList = mutableListOf<LanguageInfoEntity>()
|
||||
if (decodeString.isNullOrEmpty()) {
|
||||
//获取当前系统语言
|
||||
val config = resources.configuration
|
||||
val language = config.locale.language
|
||||
val country = config.locale.country
|
||||
if (language.equals("en")) {
|
||||
val languageInfoEntity1 = LanguageInfoEntity(1, "中文简体", "Chinese CN", false)
|
||||
val languageInfoEntity2 =
|
||||
LanguageInfoEntity(2, "中文繁体", "Traditional Chinese(Hong Kong)", false)
|
||||
val languageInfoEntity3 =
|
||||
LanguageInfoEntity(3, "English", "Current language", true)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
} else if (language.equals("zh") && country.equals("HK")) {
|
||||
val languageInfoEntity1 = LanguageInfoEntity(1, "中文简体", "中文簡體", true)
|
||||
val languageInfoEntity2 = LanguageInfoEntity(2, "中文繁体", "當前語言", false)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英语", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
} else {
|
||||
val languageInfoEntity1 = LanguageInfoEntity(1, "中文简体", "当前语言", true)
|
||||
val languageInfoEntity2 = LanguageInfoEntity(2, "中文繁体", "中文繁体", false)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英文", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
}
|
||||
|
||||
} else {
|
||||
when (decodeString) {
|
||||
"Chinese-CN" -> {
|
||||
val languageInfoEntity1 =
|
||||
LanguageInfoEntity(1, "中文简体", "当前语言", true)
|
||||
val languageInfoEntity2 =
|
||||
LanguageInfoEntity(2, "中文繁体", "中文繁体", false)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英文", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
}
|
||||
|
||||
"Chinese-HK" -> {
|
||||
val languageInfoEntity1 =
|
||||
LanguageInfoEntity(1, "中文简体", "中文簡體", false)
|
||||
val languageInfoEntity2 =
|
||||
LanguageInfoEntity(2, "中文繁体", "當前語言", true)
|
||||
val languageInfoEntity3 = LanguageInfoEntity(3, "English", "英语", false)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
|
||||
}
|
||||
|
||||
"English" -> {
|
||||
val languageInfoEntity1 =
|
||||
LanguageInfoEntity(1, "中文简体", "Chinese-CN", false)
|
||||
val languageInfoEntity2 = LanguageInfoEntity(
|
||||
2,
|
||||
"中文繁体",
|
||||
"Traditional Chinese(Hong Kong)",
|
||||
false
|
||||
)
|
||||
val languageInfoEntity3 =
|
||||
LanguageInfoEntity(3, "English", "Current language", true)
|
||||
languageInfoList.add(languageInfoEntity1)
|
||||
languageInfoList.add(languageInfoEntity2)
|
||||
languageInfoList.add(languageInfoEntity3)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
showBottomDialog(languageInfoList)
|
||||
tvExit.setOnClickListener {
|
||||
cleanUserInfo()
|
||||
}
|
||||
}
|
||||
|
||||
private fun cleanNodeMmkv(){
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_SELECTED_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL)
|
||||
}
|
||||
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;
|
||||
}
|
||||
private suspend fun setSub2(url: String, pm: IProfileManager) {
|
||||
pm.queryAll().forEach { itemPro ->
|
||||
if (itemPro.name != Conf.getClashConfName(MainApplication.getApp())) {
|
||||
Log.d("setSub2 delete ==>${itemPro.name}")
|
||||
pm.delete(itemPro.uuid)
|
||||
}
|
||||
}
|
||||
val pro = pm.queryActive()
|
||||
pro?.let {
|
||||
val actName = it.name
|
||||
Log.d("new main actname==>" + actName)
|
||||
pm.setActive(it)
|
||||
newUuid = pro.uuid.toString();
|
||||
isSubbed = true
|
||||
Log.d("setSub2 setActive end")
|
||||
finishInit()
|
||||
} ?: run {
|
||||
val uuid: UUID = pm.create(
|
||||
Profile.Type.Url, Conf.getClashConfName(MainApplication.getApp())
|
||||
)
|
||||
delay(500)
|
||||
pm.queryByUUID(uuid)?.let { qPro ->
|
||||
pm.setActive(qPro)
|
||||
pm.patch(
|
||||
qPro.uuid, qPro.name,
|
||||
url, 1800000L
|
||||
)
|
||||
pm.commit(qPro.uuid) { status ->
|
||||
android.util.Log.d(
|
||||
Conf.TAG,
|
||||
"new updateStatus: " + Gson().toJson(status.args) + ", pro==>" + status.progress
|
||||
)
|
||||
}
|
||||
newUuid = qPro.uuid.toString()
|
||||
isSubbed = true
|
||||
|
||||
}
|
||||
finishInit()
|
||||
}
|
||||
}
|
||||
private fun showBottomDialog(data: List<LanguageInfoEntity>) {
|
||||
//1、使用Dialog、设置style
|
||||
val bottomSheetDialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
|
||||
// 底部弹出的布局
|
||||
val bottomView = View.inflate(this, R.layout.language_switching_layout, null)
|
||||
|
||||
bottomSheetDialog.setContentView(bottomView)
|
||||
//设置点击dialog外部不消失
|
||||
//bottomSheetDialog.setCanceledOnTouchOutside(false);
|
||||
bottomSheetDialog.show()
|
||||
bottomView.findViewById<View>(R.id.IVClose).setOnClickListener { bottomSheetDialog.dismiss() }
|
||||
val abRecharge = bottomSheetDialog.findViewById<RecyclerView>(R.id.RvLanguage)
|
||||
abRecharge!!.layoutManager=LinearLayoutManager(this)
|
||||
val languageAdapter = LanguageAdapter()
|
||||
languageAdapter.notifyAdapter(data, this)
|
||||
abRecharge.adapter=languageAdapter
|
||||
|
||||
val config = resources.configuration
|
||||
languageAdapter.setListener(object:LanguageAdapter.onItemClickListener{
|
||||
override fun onItemClick(languageInfoList: List<LanguageInfoEntity>, isPosition: Int) {
|
||||
val languageItem = languageInfoList[isPosition]
|
||||
if(!languageItem.isChoose){
|
||||
when(languageItem.id){
|
||||
1->{
|
||||
languageItem.isChoose=true
|
||||
config.locale = Locale.CHINA
|
||||
updateActivity("Chinese-CN", Locale.CHINA)
|
||||
Toast.makeText(this@SettingActivity, "切换为简体中文!", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
2->{
|
||||
languageItem.isChoose=true
|
||||
config.locale = Locale("zh","HK")
|
||||
updateActivity("Chinese-HK", Locale("zh","HK"))
|
||||
Toast.makeText(this@SettingActivity, "切換爲中文繁體!", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
3->{
|
||||
languageItem.isChoose=true
|
||||
config.locale = Locale.ENGLISH
|
||||
updateActivity("English",Locale.ENGLISH)
|
||||
Toast.makeText(this@SettingActivity, "Switch to English!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
bottomSheetDialog.dismiss()
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
fun updateActivity(language:String,locale: Locale){
|
||||
MMKV.defaultMMKV().encode(BZYConstants.languageInfo, language)
|
||||
val resources =this.resources
|
||||
val metrics = resources.displayMetrics
|
||||
val config = resources.configuration
|
||||
config.locale=locale
|
||||
resources.updateConfiguration(config,metrics)
|
||||
//设置好选择的语言以后,需要清除任务栈中的所有activity,打开首页,确保以后进入的页面都是当前选择的语言
|
||||
val intent = Intent(this, SplashActivity::class.java)
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun httpLoading(httpStatus: HttpStatus.Loading) {
|
||||
super.httpLoading(httpStatus)
|
||||
|
|
@ -545,35 +135,7 @@ class SettingActivity : BaseActivity() {
|
|||
hideLoading()
|
||||
}
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
if (httpStatus.reqType == HttpReqType.UploadParameters) {
|
||||
val upLoadData = httpStatus.rsp as UploadParamData
|
||||
if (upLoadData.code == 1000) {
|
||||
val directory: File? = this.getExternalFilesDir("CrashLog")
|
||||
//多文件上传
|
||||
if (directory != null) {
|
||||
val allFilePath = getAllFilePath(directory.path)
|
||||
if (upLoadData.data != null) {
|
||||
if (allFilePath.isNotEmpty()) {
|
||||
val username =
|
||||
MMKV.defaultMMKV()
|
||||
.decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
val nowTime = SimpleDateFormat(
|
||||
"yyyyMMddkkmmss",
|
||||
Locale.getDefault()
|
||||
).format(Date())
|
||||
uploadForAliOss(
|
||||
upLoadData.data,
|
||||
allFilePath,
|
||||
"app/errlog/" + username + "_" + nowTime + ".txt"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
hideLoading()
|
||||
}
|
||||
}else if(httpStatus.reqType == HttpReqType.LogOutDel){
|
||||
if(httpStatus.reqType == HttpReqType.LogOutDel){
|
||||
val logOutDel = httpStatus.rsp as AppVersionCheckRsp
|
||||
if(logOutDel.code==200){
|
||||
Log.d("back data::${httpStatus.rsp}")
|
||||
|
|
@ -584,154 +146,7 @@ class SettingActivity : BaseActivity() {
|
|||
|
||||
}
|
||||
}
|
||||
private fun finishInit() {
|
||||
timerJob?.cancel()
|
||||
|
||||
runOnUiThread {
|
||||
hideLoading()
|
||||
RxToast.info(resources.getString(R.string.RepairCompletedInit))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun errInit(){
|
||||
runOnUiThread {
|
||||
hideLoading()
|
||||
RxToast.error(resources.getString(R.string.FixTimeout))
|
||||
}
|
||||
}
|
||||
|
||||
private var timerJob: Job? = null
|
||||
var GetNodeTimeOutNum = 10
|
||||
private fun startTimer() {
|
||||
GetNodeTimeOutNum = 10
|
||||
timerJob = launch {
|
||||
repeat(10) {
|
||||
GetNodeTimeOutNum--
|
||||
Log.d("GetNodeTimeOutNum==>$GetNodeTimeOutNum")
|
||||
delay(1000)
|
||||
}
|
||||
errInit()
|
||||
}
|
||||
}
|
||||
private fun uploadForAliOss(data: ParamData, filePath: List<String>, dirStr: String) {
|
||||
val endpoint = "oss-cn-hongkong.aliyuncs.com"
|
||||
val accessKeyId = data.credentials?.accessKeyId
|
||||
val accessKeySecret = data.credentials?.accessKeySecret
|
||||
// 从STS服务获取的安全令牌(SecurityToken)。
|
||||
val securityToken = data.credentials?.securityToken
|
||||
val credentialProvider =
|
||||
OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken)
|
||||
val oss = OSSClient(applicationContext, endpoint, credentialProvider)
|
||||
|
||||
android.util.Log.i("uploadForAliOss", "filePath::::${filePath[0]}")
|
||||
val put = PutObjectRequest("yingmao", dirStr, filePath[0])
|
||||
// 异步上传时可以设置进度回调。
|
||||
put.progressCallback =
|
||||
OSSProgressCallback { request, currentSize, totalSize ->
|
||||
android.util.Log.d(
|
||||
"PutObject",
|
||||
"currentSize: $currentSize totalSize: $totalSize"
|
||||
)
|
||||
}
|
||||
|
||||
oss.asyncPutObject(put,
|
||||
object : OSSCompletedCallback<PutObjectRequest?, PutObjectResult> {
|
||||
override fun onSuccess(request: PutObjectRequest?, result: PutObjectResult) {
|
||||
if (result.statusCode == 200) {
|
||||
//删除文件
|
||||
DataUtils.deleteFile(filePath[0])
|
||||
}
|
||||
|
||||
runOnUiThread {
|
||||
hideLoading()
|
||||
RxToast.info(resources.getString(R.string.LogUploadedSuccessfully))
|
||||
}
|
||||
|
||||
android.util.Log.d("PutObjectRequest", "$request")
|
||||
android.util.Log.d("PutObjectResult", "$result")
|
||||
android.util.Log.d("PutObject", "UploadSuccess")
|
||||
android.util.Log.d("ETag", result.eTag)
|
||||
android.util.Log.d("RequestId", result.requestId)
|
||||
}
|
||||
|
||||
override fun onFailure(
|
||||
request: PutObjectRequest?,
|
||||
clientExcepion: ClientException,
|
||||
serviceException: ServiceException
|
||||
) {
|
||||
runOnUiThread {
|
||||
hideLoading()
|
||||
RxToast.error(resources.getString(R.string.LogUploadedFiler))
|
||||
}
|
||||
// 请求异常。
|
||||
clientExcepion.printStackTrace()
|
||||
// 服务异常。
|
||||
android.util.Log.e("ErrorCode", serviceException.errorCode)
|
||||
android.util.Log.e("RequestId", serviceException.requestId)
|
||||
android.util.Log.e("HostId", serviceException.hostId)
|
||||
android.util.Log.e("RawMessage", serviceException.rawMessage)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
private fun showDomainList() {
|
||||
try {
|
||||
SplashHelper(mainAtyVM).getHostWithFallback { success ->
|
||||
MainScope().launch {
|
||||
if (success) {
|
||||
if (dialogDoMainChoose == null) {
|
||||
dialogDoMainChoose = DialogDoMainChoose(this@SettingActivity)
|
||||
}
|
||||
if (dialogDoMainChoose?.isShowing == false) {
|
||||
dialogDoMainChoose?.setOnTryButtonListener(object :
|
||||
DialogDoMainChoose.OnTryButtonListener {
|
||||
override fun tryButton() {
|
||||
RxToast.info(getString(R.string.ModificationFailed))
|
||||
dialogDoMainChoose?.dismiss()
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
dialogDoMainChoose?.dismiss()
|
||||
}
|
||||
})
|
||||
dialogDoMainChoose?.setOnListItemListener(object :
|
||||
DialogDoMainChoose.OnListItemListener {
|
||||
override fun listItemClick() {
|
||||
RxToast.info(getString(R.string.StorageSuccessful))
|
||||
MainApplication.restartApp(this@SettingActivity,object:MainApplication.OnRestartButtonListener{
|
||||
|
||||
override fun enterButton() {
|
||||
|
||||
}
|
||||
|
||||
override fun cancelButton() {
|
||||
dialogDoMainChoose?.dismiss()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
dialogDoMainChoose?.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
if(dialogDoMainChoose!=null){
|
||||
if(dialogDoMainChoose!!.isShowing){
|
||||
dialogDoMainChoose!!.dismiss()
|
||||
dialogDoMainChoose=null
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
private fun cleanUserInfo() {
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_PH_TOKEN)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import android.content.Intent
|
|||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
|
|
@ -27,7 +26,6 @@ import com.cncat.vpn.service.remote.IClashManager
|
|||
import com.cncat.vpn.service.remote.wrap
|
||||
import com.github.gzuliyujiang.oaid.DeviceID
|
||||
import com.github.gzuliyujiang.oaid.DeviceIdentifier
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonObject
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
|
|
@ -508,13 +506,13 @@ class SplashActivity : BaseActivity() {
|
|||
}
|
||||
} else {
|
||||
val intent =
|
||||
Intent(this@SplashActivity, NewMainActivity::class.java)
|
||||
Intent(this@SplashActivity, MainActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val intent = Intent(this@SplashActivity, NewMainActivity::class.java)
|
||||
val intent = Intent(this@SplashActivity, MainActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
|
|
@ -653,7 +651,7 @@ class SplashActivity : BaseActivity() {
|
|||
}
|
||||
|
||||
override fun cancel() {
|
||||
val intent = Intent(this@SplashActivity, NewMainActivity::class.java)
|
||||
val intent = Intent(this@SplashActivity, MainActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
package com.yingmao.clash.entity
|
||||
|
||||
data class SettingPageBean(
|
||||
var type: Int,
|
||||
var name: String,
|
||||
var imgSrc: Int
|
||||
)
|
||||
|
|
@ -140,4 +140,8 @@ class AccelerateViewModel : PublicViewMode() {
|
|||
)
|
||||
doAsync(HttpReqType.EXPENSES_RECORD){httpApi.phOrderList(params)}
|
||||
}
|
||||
fun getSelectNodeInfo() {
|
||||
val httpApi = NetService.instances.createHttps(HttpApi::class.java)
|
||||
doAsync(HttpReqType.SelectNode) { httpApi.selectNodeInfo(com.yingmao.clash.BuildConfig.productId) }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
package com.yingmao.clash.fragment
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
|
|
@ -17,10 +19,12 @@ import com.yingmao.clash.base.BaseViewMode
|
|||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.conf.Conf
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
import java.util.HashSet
|
||||
|
||||
|
||||
abstract class BaseFragment :Fragment() {
|
||||
var baseLoading: RxDialogShapeLoading? = null
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
|
|
@ -64,4 +68,64 @@ abstract class BaseFragment :Fragment() {
|
|||
open fun httpSuccess(httpStatus: HttpStatus.Success){}
|
||||
|
||||
open fun httpFailure(httpStatus: HttpStatus.Failure){}
|
||||
fun showLoading(str: String, context: Context) {
|
||||
val message = if (TextUtils.isEmpty(str)) "进行中..." else str
|
||||
if (baseLoading == null) {
|
||||
baseLoading = RxDialogShapeLoading(context)
|
||||
}
|
||||
baseLoading?.setMessage(message)
|
||||
if (baseLoading?.isShowing == false) {
|
||||
baseLoading?.show()
|
||||
}
|
||||
}
|
||||
fun hideLoading() {
|
||||
if (baseLoading != null && baseLoading?.isShowing == true) {
|
||||
baseLoading?.cancel()
|
||||
}
|
||||
}
|
||||
@Synchronized
|
||||
fun switchServer2(): Boolean {
|
||||
var isChange = false
|
||||
val mmkv = MMKV.defaultMMKV()
|
||||
val originalUrl =
|
||||
mmkv.decodeString(BZYConstants.MMKV_KEY_CURRENT_HOST, BuildConfig.service_url)
|
||||
var newUrlString = originalUrl
|
||||
val routerHost = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_ROUTER_HOST, HashSet())
|
||||
val switchFinishSet = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_Switch_Finsh_Set, HashSet())
|
||||
routerHost?.let {
|
||||
if (it.isEmpty()) {
|
||||
Log.d(Conf.TAG, "routerHost isEmpty")
|
||||
return false
|
||||
}
|
||||
com.cncat.vpn.common.log.Log.d("switchFinshSet.size==>${switchFinishSet?.size!!} , routerHost.size==>${routerHost.size}")
|
||||
//次数已满
|
||||
if (switchFinishSet.size >= routerHost.size) {
|
||||
return false
|
||||
}
|
||||
|
||||
Log.d(Conf.TAG, "routerHost not empty")
|
||||
for (url in it) {
|
||||
|
||||
if (url == originalUrl) {
|
||||
switchFinishSet.add(url)
|
||||
mmkv.encode(BZYConstants.MMKV_KEY_Switch_Finsh_Set, switchFinishSet)
|
||||
continue
|
||||
}
|
||||
|
||||
if (switchFinishSet.contains(url)) {
|
||||
continue
|
||||
} else {
|
||||
isChange = true
|
||||
Log.e("Retry", "切换到新url:$url")
|
||||
newUrlString = url
|
||||
switchFinishSet.add(newUrlString)
|
||||
mmkv.encode(BZYConstants.MMKV_KEY_Switch_Finsh_Set, switchFinishSet)
|
||||
break
|
||||
}
|
||||
}
|
||||
mmkv.encode(BZYConstants.MMKV_KEY_CURRENT_HOST, newUrlString)
|
||||
}
|
||||
|
||||
return isChange
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +1,28 @@
|
|||
package com.yingmao.clash.fragment
|
||||
package com.yingmao.clash.fragment.home
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.ResultReceiver
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.TextView
|
||||
import androidx.activity.result.contract.ActivityResultContract
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AppCompatActivity.RESULT_OK
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.graphics.toColorInt
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
|
|
@ -30,33 +35,40 @@ import com.cncat.vpn.core.model.TunnelState
|
|||
import com.orhanobut.logger.Logger
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.ChangeNodeActivity
|
||||
import com.yingmao.clash.act.ChangeNodeActivity.ProxyMode
|
||||
import com.yingmao.clash.act.ExpensesRecordActivity
|
||||
import com.yingmao.clash.act.NewMainActivity
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.clashBinder
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.newUuid
|
||||
import com.yingmao.clash.act.MainActivity
|
||||
import com.yingmao.clash.act.MainActivity.Companion.clashBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.isSubbed
|
||||
import com.yingmao.clash.act.MainActivity.Companion.newMainActGlo
|
||||
import com.yingmao.clash.act.MainActivity.Companion.newUuid
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.conf.BZYConstants.Companion.ScreenFlag
|
||||
import com.yingmao.clash.conf.Conf
|
||||
import com.yingmao.clash.entity.ClashNodebBean
|
||||
import com.yingmao.clash.fragment.AccelerateViewModel
|
||||
import com.yingmao.clash.fragment.BaseFragment
|
||||
import com.yingmao.clash.listener.AsyncCallBackListener
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.entity.AppStartupStatus
|
||||
import com.yingmao.clash.net.http.entity.ExpensesRecordRsp
|
||||
import com.yingmao.clash.net.http.entity.ShowNode
|
||||
import com.yingmao.clash.util.ActivityResultLifecycle
|
||||
import com.yingmao.clash.util.UiStore
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
import com.yingmao.clash.util.Utils
|
||||
import com.yingmao.clash.util.startClashService
|
||||
import com.yingmao.clash.util.stopClashService
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
|
||||
import com.yingmao.clash.view.dialog.RxDialogSureCancel
|
||||
import com.yingmao.clash.webview.CustomerServiceWebView
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Semaphore
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.Response
|
||||
import java.text.SimpleDateFormat
|
||||
|
|
@ -66,7 +78,7 @@ import kotlin.coroutines.resume
|
|||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
|
||||
open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers.IO), View.OnClickListener{
|
||||
open class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers.IO){
|
||||
companion object {
|
||||
const val REQUEST_CONNECT = 1
|
||||
const val CHECK_NODE_REQUEST_CODE = 2
|
||||
|
|
@ -80,7 +92,7 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
clashRec?.let {
|
||||
try {
|
||||
context.unregisterReceiver(clashRec)
|
||||
}catch (e: Exception){
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
|
|
@ -88,18 +100,31 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
lateinit var accelerateViewModel: AccelerateViewModel
|
||||
private lateinit var rxDialogShapeLoading: RxDialogShapeLoading
|
||||
private lateinit var accelerateIv: ImageView
|
||||
private lateinit var tvEndTime: TextView
|
||||
private lateinit var tvTimeInfo:TextView
|
||||
private lateinit var tvDelayMs:TextView
|
||||
private lateinit var tvUserName: TextView
|
||||
private lateinit var tvUserTimeEnd: TextView
|
||||
private lateinit var clGetVip: ConstraintLayout
|
||||
private lateinit var aivCustomService: AppCompatImageView
|
||||
private lateinit var ivAccelerate: AppCompatImageView
|
||||
private lateinit var tvClick: TextView
|
||||
private lateinit var clProxy: LinearLayout
|
||||
private lateinit var tvIntelligentMode: TextView
|
||||
private lateinit var tvGlobalMode: TextView
|
||||
|
||||
|
||||
private lateinit var clNode: ConstraintLayout
|
||||
private lateinit var aivNodeImg: AppCompatImageView
|
||||
private lateinit var tvNodeName: TextView
|
||||
private lateinit var clLinks: ConstraintLayout
|
||||
|
||||
|
||||
private val mPageInfo = ExpensesRecordActivity.PageInfo()
|
||||
private var reConnection = false
|
||||
private var connectId=-1
|
||||
private var connectId = -1
|
||||
var proList: MutableList<ClashNodebBean>? = null
|
||||
private var baseLoading: RxDialogShapeLoading? = null
|
||||
private var baseLoadingView: RxDialogShapeLoading? = null
|
||||
|
||||
override fun init(
|
||||
titleBarRl: RelativeLayout,
|
||||
|
|
@ -117,9 +142,32 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
)
|
||||
|
||||
initViews(accelerateFragmentView)
|
||||
initData()
|
||||
container.addView(accelerateFragmentView)
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initData() {
|
||||
val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!!
|
||||
tvUserName.text= "ID:$username"
|
||||
setExpireDate()
|
||||
|
||||
val isGlobal = MMKV.defaultMMKV().decodeBool(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
newMainActGlo = isGlobal
|
||||
val px: ProxyMode = if (isGlobal) {
|
||||
ProxyMode.GLOBAL
|
||||
} else {
|
||||
ProxyMode.PAC
|
||||
}
|
||||
setProxyModeView(px)
|
||||
|
||||
val selectedName =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, "")
|
||||
if (!TextUtils.isEmpty(selectedName)) {
|
||||
setNodeNameAndImg(selectedName!!)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
|
|
@ -128,7 +176,7 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
accelerateViewModel = ViewModelProvider(this)[AccelerateViewModel::class.java]
|
||||
observe(this, accelerateViewModel)
|
||||
initSS()
|
||||
accelerateViewModel.getExpensesRecord(mPageInfo)
|
||||
accelerateViewModel.getSelectNodeInfo()
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -139,7 +187,7 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
intentFilter.addAction(Intents.ACTION_CLASH_REQUEST_STOP)
|
||||
intentFilter.addAction(Intents.ACTION_Glo_Mode)
|
||||
intentFilter.addAction(Intents.ACTION_OVERRIDE_CHANGED)
|
||||
clashRec=ClashBP()
|
||||
clashRec = ClashBP()
|
||||
if (Build.VERSION.SDK_INT >= 34 && requireContext().applicationInfo.targetSdkVersion >= 34) {
|
||||
requireContext().registerReceiver(
|
||||
clashRec, intentFilter, Context.RECEIVER_EXPORTED
|
||||
|
|
@ -152,101 +200,152 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
|
||||
private fun initViews(view: View) {
|
||||
tvEndTime = view.findViewById(R.id.tv_end_time)
|
||||
tvTimeInfo=view.findViewById(R.id.tvTimeInfo)
|
||||
accelerateIv = view.findViewById(R.id.iv_accelerate)
|
||||
accelerateIv.setOnClickListener(this)
|
||||
tvDelayMs=view.findViewById(R.id.tvDelayMs)
|
||||
tvEndTime.setOnClickListener {
|
||||
tvUserName = view.findViewById(R.id.tvUserName)
|
||||
tvUserTimeEnd= view.findViewById(R.id.tvUserTimeEnd)
|
||||
clGetVip= view.findViewById(R.id.clGetVip)
|
||||
aivCustomService= view.findViewById(R.id.aivCustomService)
|
||||
ivAccelerate= view.findViewById(R.id.ivAccelerate)
|
||||
tvClick= view.findViewById(R.id.tvClick)
|
||||
|
||||
clProxy= view.findViewById(R.id.clProxy)
|
||||
tvIntelligentMode= view.findViewById(R.id.tvIntelligentMode)
|
||||
tvGlobalMode= view.findViewById(R.id.tvGlobalMode)
|
||||
|
||||
|
||||
clNode= view.findViewById(R.id.clNode)
|
||||
aivNodeImg= view.findViewById(R.id.aivNodeImg)
|
||||
tvNodeName= view.findViewById(R.id.tvNodeName)
|
||||
clLinks= view.findViewById(R.id.clLinks)
|
||||
|
||||
clNode.setOnClickListener {
|
||||
if (checkExpire()) {
|
||||
RxToast.info(resources.getString(R.string.AccountExpired))
|
||||
return@setOnClickListener
|
||||
}
|
||||
val intent = Intent(CommonUtils.getApp(), ChangeNodeActivity::class.java)
|
||||
if (!TextUtils.isEmpty(newUuid)) {
|
||||
intent.putExtra(BZYConstants.MMKV_KEY_CURRENT_NODE, newUuid)
|
||||
intent.putExtra(BZYConstants.EXTRA_KEY_IS_RUNING, clashRunning)
|
||||
}
|
||||
startActivityForResult(intent, 2)
|
||||
}
|
||||
tvIntelligentMode.setOnClickListener {
|
||||
if(clashRunning){
|
||||
RxToast.info(resources.getString(R.string.SwitchingSourceModel))
|
||||
return@setOnClickListener
|
||||
}
|
||||
setProxyModeView(ProxyMode.PAC)
|
||||
MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_GLOBAL_MODEL, false)
|
||||
checkGlo()
|
||||
}
|
||||
tvGlobalMode.setOnClickListener {
|
||||
if(clashRunning){
|
||||
RxToast.info(resources.getString(R.string.SwitchingSourceModel))
|
||||
return@setOnClickListener
|
||||
}
|
||||
setProxyModeView(ProxyMode.GLOBAL)
|
||||
MMKV.defaultMMKV().encode(BZYConstants.MMKV_KEY_GLOBAL_MODEL, true)
|
||||
checkGlo()
|
||||
}
|
||||
clLinks.setOnClickListener {
|
||||
if (clashRunning) {
|
||||
val rxDialogSureCancel = RxDialogSureCancel(activity)
|
||||
if (isAdded) {
|
||||
rxDialogSureCancel.setContent(requireActivity().resources.getString(R.string.StopAccelerating))
|
||||
}
|
||||
rxDialogSureCancel.setCancelListener {
|
||||
rxDialogSureCancel.cancel()
|
||||
}
|
||||
rxDialogSureCancel.setSureListener {
|
||||
stopUTimer()
|
||||
stopClash()
|
||||
reConnection = false
|
||||
tvClick.text=resources.getString(R.string.LinkJS)
|
||||
ivAccelerate.setImageResource(R.mipmap.yjl_home_clink_bg)
|
||||
rxDialogSureCancel.cancel()
|
||||
Log.d("NewAccFragment connectId:::${connectId}")
|
||||
if (connectId != -1) {
|
||||
accelerateViewModel.appStopStatus(connectId)
|
||||
}
|
||||
|
||||
}
|
||||
rxDialogSureCancel.show()
|
||||
|
||||
} else {
|
||||
if (checkExpire()) {
|
||||
if (isAdded) {
|
||||
MaterialDialog(requireContext()).show {
|
||||
this.cancelable(false)
|
||||
cornerRadius(res = R.dimen.dp_10)
|
||||
customView(
|
||||
R.layout.expired_recharge__layout,
|
||||
scrollable = false,
|
||||
noVerticalPadding = true,
|
||||
horizontalPadding = false
|
||||
)
|
||||
getCustomView().findViewById<TextView>(R.id.tv_pay_finish)
|
||||
.setOnClickListener {
|
||||
goNewRecharge()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
return@setOnClickListener
|
||||
}
|
||||
showLoad(resources.getString(R.string.Starting), requireContext())
|
||||
startClash(true)
|
||||
}
|
||||
}
|
||||
aivCustomService.setOnClickListener {
|
||||
startActivity(Intent(requireContext(), CustomerServiceWebView::class.java))
|
||||
}
|
||||
|
||||
clGetVip.setOnClickListener{
|
||||
goNewRecharge()
|
||||
}
|
||||
tvUserName.setOnClickListener {
|
||||
val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
|
||||
val clipboardManager =
|
||||
requireActivity().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
val clipData = ClipData.newPlainText("text", userName)
|
||||
clipboardManager.setPrimaryClip(clipData)
|
||||
RxToast.info(resources.getString(R.string.CopyToClipboard))
|
||||
}
|
||||
tvUserTimeEnd.setOnClickListener {
|
||||
updateUserInfo()
|
||||
}
|
||||
setExpireDate()
|
||||
//测试测速
|
||||
getDelayData()
|
||||
}
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun getDelayData() {
|
||||
tvDelayMs.text=resources.getString(R.string.delayMS).replace("$","${Utils.generateRandomTwoDigitNumber(30, 100)}")
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
lifecycleScope.launch {
|
||||
Log.d("clashRunning==>$clashRunning")
|
||||
if (clashRunning) {
|
||||
stateChanged(CLASH_STARTED, false)
|
||||
getDelayData()
|
||||
} else {
|
||||
stateChanged(CLASH_STOP, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
override fun onClick(v: View?) {
|
||||
when (v?.id) {
|
||||
R.id.iv_accelerate -> {
|
||||
if (clashRunning) {
|
||||
val rxDialogSureCancel = RxDialogSureCancel(activity)
|
||||
if (isAdded) {
|
||||
rxDialogSureCancel.setContent(requireActivity().resources.getString(R.string.StopAccelerating))
|
||||
}
|
||||
rxDialogSureCancel.setCancelListener {
|
||||
rxDialogSureCancel.cancel()
|
||||
}
|
||||
rxDialogSureCancel.setSureListener {
|
||||
stopUTimer()
|
||||
stopClash()
|
||||
rxDialogSureCancel.cancel()
|
||||
reConnection = false
|
||||
Log.d("NewAccFragment connectId:::${connectId}")
|
||||
if(connectId!=-1){
|
||||
accelerateViewModel.appStopStatus(connectId)
|
||||
}
|
||||
|
||||
}
|
||||
rxDialogSureCancel.show()
|
||||
|
||||
} else {
|
||||
if (checkExpire()) {
|
||||
if (isAdded) {
|
||||
MaterialDialog(requireContext()).show {
|
||||
this.cancelable(false)
|
||||
cornerRadius(res = R.dimen.dp_10)
|
||||
customView(
|
||||
R.layout.expired_recharge__layout,
|
||||
scrollable = false,
|
||||
noVerticalPadding = true,
|
||||
horizontalPadding = false
|
||||
)
|
||||
getCustomView().findViewById<TextView>(R.id.tv_pay_finish).setOnClickListener {
|
||||
goNewRecharge()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
showLoading(resources.getString(R.string.Starting), requireContext())
|
||||
startClash(true)
|
||||
getDelayData()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun stopClash() {
|
||||
context?.stopClashService()
|
||||
}
|
||||
private fun startClash(isStart:Boolean) {
|
||||
|
||||
private fun startClash(isStart: Boolean) {
|
||||
launch {
|
||||
if(isStart){
|
||||
if (isStart) {
|
||||
delay(2000)
|
||||
}
|
||||
NewMainActivity.profileBinder?.let { pm ->
|
||||
MainActivity.profileBinder?.let { pm ->
|
||||
val active = pm.queryActive()
|
||||
if (active == null) {
|
||||
Log.d("startClash: 未选择")
|
||||
val pro = pm.queryAll().find {
|
||||
it.name == Conf.getClashConfName(this@NewAccFragment.context)
|
||||
it.name == Conf.getClashConfName(this@HomeFragment.context)
|
||||
}
|
||||
|
||||
pro?.let { profile ->
|
||||
|
|
@ -276,19 +375,22 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
ActivityResultContracts.StartActivityForResult(), vpnRequest
|
||||
)
|
||||
if (result.resultCode == RESULT_OK) {
|
||||
hideLoading()
|
||||
stateChanged(CLASH_STARTING, true)
|
||||
context?.startClashService()
|
||||
accelerateViewModel.appStartupStatus()
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
accelerateViewModel.appStartupStatus()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
stopUTimer()
|
||||
e.printStackTrace()
|
||||
}
|
||||
withContext(Dispatchers.Main){
|
||||
hideLoading()
|
||||
withContext(Dispatchers.Main) {
|
||||
tvClick.text=resources.getString(R.string.Accelerating)
|
||||
ivAccelerate.setImageResource(R.mipmap.yjl_home_clink_select_bg)
|
||||
hideLoad()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -320,7 +422,6 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
if (::rxDialogShapeLoading.isInitialized) {
|
||||
rxDialogShapeLoading.cancel()
|
||||
}
|
||||
accelerateIv.isSelected = true
|
||||
clashRunning = true
|
||||
|
||||
if (isAdded) {
|
||||
|
|
@ -333,7 +434,6 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
if (::rxDialogShapeLoading.isInitialized) {
|
||||
rxDialogShapeLoading.cancel()
|
||||
}
|
||||
accelerateIv.isSelected = false
|
||||
clashRunning = false
|
||||
stopUTimer()
|
||||
}
|
||||
|
|
@ -367,7 +467,6 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
if (::rxDialogShapeLoading.isInitialized) {
|
||||
rxDialogShapeLoading.cancel()
|
||||
}
|
||||
accelerateIv.isSelected = true
|
||||
if (isShowToast) {
|
||||
if (isAdded) {
|
||||
RxToast.success(resources.getString(R.string.AccelerateSuccess))
|
||||
|
|
@ -379,7 +478,6 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
if (::rxDialogShapeLoading.isInitialized) {
|
||||
rxDialogShapeLoading.cancel()
|
||||
}
|
||||
accelerateIv.isSelected = false
|
||||
}
|
||||
|
||||
CLASH_STARTING -> {
|
||||
|
|
@ -396,7 +494,8 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
else -> {}
|
||||
}
|
||||
}
|
||||
fun nodeChooseBase(data: Intent?){
|
||||
|
||||
fun nodeChooseBase(data: Intent?) {
|
||||
val node = data?.extras?.getString(BZYConstants.MMKV_KEY_SELECT_NODE_NAME)
|
||||
val isRunning = data?.extras?.getBoolean(BZYConstants.EXTRA_KEY_IS_RUNING)
|
||||
Log.d("onActivityResult ==>>> Node:${node}")
|
||||
|
|
@ -413,27 +512,11 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
}
|
||||
}
|
||||
fun changeUserState(){
|
||||
tvTimeInfo.text=resources.getString(R.string.HYDq)
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (requestCode == REQUEST_CONNECT) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
if (clashRunning) {
|
||||
Log.d("clashRunning $clashRunning")
|
||||
} else {
|
||||
startClash(false)
|
||||
}
|
||||
} else {
|
||||
if (::rxDialogShapeLoading.isInitialized || rxDialogShapeLoading.isShowing) {
|
||||
rxDialogShapeLoading.cancel()
|
||||
}
|
||||
}
|
||||
} else if (requestCode == CHECK_NODE_REQUEST_CODE) {
|
||||
getDelayData()
|
||||
} else if (requestCode == 4) {
|
||||
checkGlo()
|
||||
if (requestCode == 2) {
|
||||
nodeChooseBase(data)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -495,7 +578,7 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
}
|
||||
|
||||
tvEndTime.text = endTimeInfo
|
||||
tvUserTimeEnd.text = endTimeInfo
|
||||
}
|
||||
|
||||
private fun checkExpire(): Boolean {
|
||||
|
|
@ -509,23 +592,24 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private fun updateUserInfo() {
|
||||
if (activity != null) {
|
||||
val mainAct = activity as NewMainActivity
|
||||
val mainAct = activity as MainActivity
|
||||
mainAct.goCheckLogin()
|
||||
}
|
||||
}
|
||||
|
||||
private fun startUTimer() {
|
||||
if (activity != null) {
|
||||
val mainAct = activity as NewMainActivity
|
||||
val mainAct = activity as MainActivity
|
||||
mainAct.startUploadTimer()
|
||||
}
|
||||
}
|
||||
|
||||
private fun stopUTimer() {
|
||||
if (activity != null) {
|
||||
val mainAct = activity as NewMainActivity
|
||||
val mainAct = activity as MainActivity
|
||||
mainAct.stopUploadTimer()
|
||||
}
|
||||
}
|
||||
|
|
@ -535,6 +619,13 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
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
|
||||
}
|
||||
setProxyModeView(px)
|
||||
|
||||
launch(Dispatchers.IO) {
|
||||
if (isGlobal) {
|
||||
if (clashRunning) {
|
||||
|
|
@ -573,13 +664,14 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)) {
|
||||
NewMainActivity.subUrl?.let {
|
||||
MainActivity.subUrl?.let {
|
||||
accelerateViewModel.getNodeOther(it, object : AsyncCallBackListener {
|
||||
override fun suc(obj: Any?) {
|
||||
proList = obj as MutableList<ClashNodebBean>
|
||||
|
|
@ -656,65 +748,101 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun httpLoading(httpStatus: HttpStatus.Loading) {
|
||||
|
||||
}
|
||||
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
when(httpStatus.reqType){
|
||||
HttpReqType.AppStartupStatus ->{
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.AppStartupStatus -> {
|
||||
Log.d("AppStartupStatus is Success ${httpStatus.rsp}")
|
||||
val dataInfo = httpStatus.rsp as AppStartupStatus
|
||||
if(dataInfo.data!=null){
|
||||
if(dataInfo.data.id!=null){
|
||||
connectId= dataInfo.data.id
|
||||
if (dataInfo.data != null) {
|
||||
if (dataInfo.data.id != null) {
|
||||
connectId = dataInfo.data.id
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.AppStopStatus ->{
|
||||
|
||||
HttpReqType.AppStopStatus -> {
|
||||
Log.d("AppStopStatus is Success ${httpStatus.rsp}")
|
||||
}
|
||||
HttpReqType.EXPENSES_RECORD->{
|
||||
if(httpStatus.rsp is ExpensesRecordRsp){
|
||||
|
||||
HttpReqType.EXPENSES_RECORD -> {
|
||||
if (httpStatus.rsp is ExpensesRecordRsp) {
|
||||
httpStatus.rsp.let { expensesRecordRsp ->
|
||||
if(expensesRecordRsp.code == "1000"){
|
||||
if(expensesRecordRsp.data != null){
|
||||
if (expensesRecordRsp.code == "1000") {
|
||||
if (expensesRecordRsp.data != null) {
|
||||
val expensesRecordList = expensesRecordRsp.data.expensesRecords
|
||||
if(expensesRecordList!=null){
|
||||
if(expensesRecordList.size>0){
|
||||
tvTimeInfo.text=resources.getString(R.string.HYDq)
|
||||
}else{
|
||||
tvTimeInfo.text=resources.getString(R.string.YkStr)
|
||||
if (expensesRecordList != null) {
|
||||
if (expensesRecordList.size > 0) {
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
RxToast.error("${expensesRecordRsp.code}${expensesRecordRsp.message}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else->{
|
||||
HttpReqType.SelectNode -> {
|
||||
(httpStatus.rsp as ShowNode).let {
|
||||
if (it.code == 200) {
|
||||
val countryFlag = it.data?.countryFlag
|
||||
if (countryFlag == true) {
|
||||
clProxy.visibility=View.VISIBLE
|
||||
clNode.visibility=View.VISIBLE
|
||||
}
|
||||
val screenshotFlag = it.data?.screenshotFlag
|
||||
screenshotFlag.let {
|
||||
if (screenshotFlag == true) {
|
||||
// 在 Activity 中取消禁止截屏/录屏
|
||||
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
|
||||
MMKV.defaultMMKV().encode(
|
||||
ScreenFlag, screenshotFlag
|
||||
)
|
||||
} else {
|
||||
requireActivity().window.setFlags(
|
||||
WindowManager.LayoutParams.FLAG_SECURE,
|
||||
WindowManager.LayoutParams.FLAG_SECURE
|
||||
)
|
||||
MMKV.defaultMMKV().encode(
|
||||
ScreenFlag, screenshotFlag!!
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun httpFailure(httpStatus: HttpStatus.Failure) {
|
||||
when(httpStatus.reqType){
|
||||
HttpReqType.AppStartupStatus ->{
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.AppStartupStatus -> {
|
||||
Log.d("AppStartupStatus is Failure ${httpStatus.msg}")
|
||||
}
|
||||
HttpReqType.AppStopStatus ->{
|
||||
|
||||
HttpReqType.AppStopStatus -> {
|
||||
Log.d("AppStopStatus is Failure ${httpStatus.msg}")
|
||||
}
|
||||
else->{
|
||||
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
fun showLoading(str: String, context: Context) {
|
||||
|
||||
fun showLoad(str: String, context: Context) {
|
||||
val message = if (TextUtils.isEmpty(str)) "进行中..." else str
|
||||
if (baseLoading == null) {
|
||||
baseLoading = RxDialogShapeLoading(context)
|
||||
if (baseLoadingView == null) {
|
||||
baseLoadingView = RxDialogShapeLoading(context)
|
||||
}
|
||||
baseLoading?.setMessage(message)
|
||||
if (baseLoading?.isShowing == false) {
|
||||
|
|
@ -722,19 +850,133 @@ open class NewAccFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dis
|
|||
}
|
||||
}
|
||||
|
||||
fun hideLoading() {
|
||||
if (baseLoading != null && baseLoading?.isShowing == true) {
|
||||
baseLoading?.cancel()
|
||||
fun hideLoad() {
|
||||
if (baseLoadingView != null && baseLoadingView?.isShowing == true) {
|
||||
baseLoadingView?.cancel()
|
||||
}
|
||||
}
|
||||
|
||||
private fun goNewRecharge() {
|
||||
if (activity != null) {
|
||||
val newMain = activity as NewMainActivity
|
||||
val newMain = activity as MainActivity
|
||||
newMain.goBackupRechargeWeb()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
cleanRec(requireContext())
|
||||
}
|
||||
private fun setProxyModeView(proxyMode: ProxyMode) {
|
||||
|
||||
when (proxyMode) {
|
||||
ProxyMode.PAC -> {
|
||||
isGlo = false
|
||||
tvIntelligentMode.setBackgroundResource(R.drawable.oc_proxy_choose_bg)
|
||||
tvGlobalMode.setBackgroundResource(0)
|
||||
tvIntelligentMode.setTextColor("#FF006AFB".toColorInt())
|
||||
tvGlobalMode.setTextColor("#FF000000".toColorInt())
|
||||
sendMode(false)
|
||||
}
|
||||
|
||||
ProxyMode.GLOBAL -> {
|
||||
isGlo = true
|
||||
tvIntelligentMode.setBackgroundResource(0)
|
||||
tvGlobalMode.setBackgroundResource(R.drawable.oc_proxy_choose_bg)
|
||||
|
||||
tvIntelligentMode.setTextColor("#FF000000".toColorInt())
|
||||
tvGlobalMode.setTextColor("#FF006AFB".toColorInt())
|
||||
sendMode(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun sendMode(type: Boolean) {
|
||||
val intent = Intent(Intents.ACTION_Glo_Mode)
|
||||
intent.putExtra("mode", type)
|
||||
requireContext().sendBroadcast(
|
||||
intent.setPackage(requireContext().packageName)
|
||||
)
|
||||
}
|
||||
|
||||
private fun setNodeNameAndImg(name: String) {
|
||||
launch(Dispatchers.Main) {
|
||||
tvNodeName.text = name
|
||||
name.let {
|
||||
when {
|
||||
it.contains("中国", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_china)
|
||||
}
|
||||
|
||||
it.contains("香港", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_china)
|
||||
}
|
||||
|
||||
it.contains("日本", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_japan)
|
||||
}
|
||||
|
||||
it.contains("韩国", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_korea)
|
||||
}
|
||||
|
||||
it.contains("美国", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_usa)
|
||||
}
|
||||
|
||||
it.contains("德国", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_germany)
|
||||
}
|
||||
|
||||
it.contains("法国", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_france)
|
||||
}
|
||||
|
||||
it.contains("俄罗斯", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_russia)
|
||||
}
|
||||
|
||||
it.contains("新加坡", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_singapore)
|
||||
}
|
||||
|
||||
it.contains("英国", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_uk)
|
||||
}
|
||||
|
||||
it.contains("澳大利亚", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_australia)
|
||||
}
|
||||
|
||||
it.contains("印度", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_india)
|
||||
}
|
||||
|
||||
it.contains("加拿大", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.flag_canada)
|
||||
}
|
||||
|
||||
it.contains("以色列", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.ic_s_il)
|
||||
}
|
||||
it.contains("西班牙", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.ic_xibanya)
|
||||
}
|
||||
it.contains("荷兰", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.ic_henan)
|
||||
}
|
||||
it.contains("意大利", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.ic_yidali)
|
||||
}
|
||||
it.contains("塞尔维亚", true) -> {
|
||||
aivNodeImg.setImageResource(R.drawable.ic_sewy)
|
||||
}
|
||||
else -> {
|
||||
aivNodeImg.setImageResource(R.drawable.yjl_node_icon)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,750 @@
|
|||
package com.yingmao.clash.fragment.setting
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.view.View
|
||||
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.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
import com.afollestad.materialdialogs.customview.getCustomView
|
||||
import com.alibaba.sdk.android.oss.ClientException
|
||||
import com.alibaba.sdk.android.oss.OSSClient
|
||||
import com.alibaba.sdk.android.oss.ServiceException
|
||||
import com.alibaba.sdk.android.oss.callback.OSSCompletedCallback
|
||||
import com.alibaba.sdk.android.oss.callback.OSSProgressCallback
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSStsTokenCredentialProvider
|
||||
import com.alibaba.sdk.android.oss.internal.OSSAsyncTask
|
||||
import com.alibaba.sdk.android.oss.model.PutObjectRequest
|
||||
import com.alibaba.sdk.android.oss.model.PutObjectResult
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.orhanobut.logger.Logger
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.ActivityActivity
|
||||
import com.yingmao.clash.act.AgreementAndPrivacyActivity
|
||||
import com.yingmao.clash.act.BandPhoneActivity
|
||||
import com.yingmao.clash.act.MainActivity
|
||||
import com.yingmao.clash.act.MainActivity.Companion.isVip
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.act.MainActivity.Companion.setSub2
|
||||
import com.yingmao.clash.act.MainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.act.SettingActivity
|
||||
import com.yingmao.clash.act.ShareActivity
|
||||
import com.yingmao.clash.act.SplashHelper
|
||||
import com.yingmao.clash.app.MainApplication
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.SettingPageBean
|
||||
import com.yingmao.clash.fragment.BaseFragment
|
||||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.entity.ParamData
|
||||
import com.yingmao.clash.net.http.entity.SubscriptionRsp
|
||||
import com.yingmao.clash.net.http.entity.UploadParamData
|
||||
import com.yingmao.clash.net.http.entity.VipSignRsp
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
import com.yingmao.clash.util.DataUtils
|
||||
import com.yingmao.clash.util.DataUtils.getAllFilePath
|
||||
import com.yingmao.clash.util.PayUtils
|
||||
import com.yingmao.clash.view.RxToast
|
||||
import com.yingmao.clash.view.dialog.DialogBandChoose
|
||||
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
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
import java.time.Instant
|
||||
import java.time.temporal.ChronoUnit
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
|
||||
class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers.IO) {
|
||||
private lateinit var tvUserName:TextView
|
||||
|
||||
private lateinit var tvVipGet: TextView
|
||||
private lateinit var goSee: TextView
|
||||
|
||||
private lateinit var tvEndTimes: TextView
|
||||
private lateinit var goGetVip: TextView
|
||||
private lateinit var clVipCard: ConstraintLayout
|
||||
private lateinit var shareCard: ConstraintLayout
|
||||
private lateinit var tvVersion: TextView
|
||||
private lateinit var tvUserTimeEnd: TextView
|
||||
|
||||
|
||||
|
||||
private lateinit var rvSettingTab:RecyclerView
|
||||
|
||||
|
||||
private var baseLoad: RxDialogShapeLoading? = null
|
||||
private lateinit var mainAtyVM: MainAtyVM
|
||||
|
||||
private var settingPageList = mutableListOf<SettingPageBean>()
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
override fun init(
|
||||
titleBarRl: RelativeLayout,
|
||||
backIv: ImageView,
|
||||
moreIv: TextView,
|
||||
titleTv: TextView,
|
||||
container: FrameLayout,
|
||||
) {
|
||||
titleBarRl.visibility = View.GONE
|
||||
titleTv.visibility = View.GONE
|
||||
backIv.visibility = View.GONE
|
||||
val view = View.inflate(CommonUtils.getApp(), R.layout.setting_fragment_layout, null)
|
||||
initView(view)
|
||||
initData()
|
||||
container.addView(view)
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initData() {
|
||||
val userName =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
|
||||
|
||||
tvUserName.text=userName
|
||||
if (!(PayUtils.isEmail(userName) || PayUtils.isPhoneNumber(userName))) {
|
||||
tvVipGet.visibility = View.VISIBLE
|
||||
} else {
|
||||
tvVipGet.visibility = View.GONE
|
||||
}
|
||||
|
||||
|
||||
setExpireDate()
|
||||
tvVersion.text=requireActivity().resources.getString(R.string.edition) + "${BuildConfig.VERSION_NAME}." + BuildConfig.productId
|
||||
|
||||
val settingItem= SettingPageBean(
|
||||
1,
|
||||
resources.getString(R.string.setting),
|
||||
R.drawable.home_setting_cion,
|
||||
)
|
||||
val noticeItem= SettingPageBean(
|
||||
2,
|
||||
resources.getString(R.string.notice),
|
||||
R.drawable.ic_s_notice,
|
||||
)
|
||||
val activityItem= SettingPageBean(
|
||||
3,
|
||||
resources.getString(R.string.activity),
|
||||
R.drawable.activity_item_tag,
|
||||
)
|
||||
|
||||
val singItem= SettingPageBean(
|
||||
4,
|
||||
resources.getString(R.string.SignIn),
|
||||
R.drawable.user_sing_icon,
|
||||
)
|
||||
val serviceTermsItem= SettingPageBean(
|
||||
5,
|
||||
resources.getString(R.string.ServiceTerms),
|
||||
R.drawable.user_agreement_icon,
|
||||
)
|
||||
|
||||
|
||||
val sourceSwitchItem= SettingPageBean(
|
||||
6,
|
||||
resources.getString(R.string.source_switch),
|
||||
R.drawable.switching_item_tag,
|
||||
)
|
||||
|
||||
|
||||
val upLoadData= SettingPageBean(
|
||||
7,
|
||||
resources.getString(R.string.UploadLog),
|
||||
R.drawable.user_uplog_icon,
|
||||
)
|
||||
val privacyPolicyItem= SettingPageBean(
|
||||
8,
|
||||
resources.getString(R.string.PrivacyPolicy),
|
||||
R.drawable.user_privacypolicy_icon,
|
||||
)
|
||||
|
||||
val initializationItem= SettingPageBean(
|
||||
9,
|
||||
resources.getString(R.string.InitializationRepair),
|
||||
R.drawable.user_init_icon,
|
||||
)
|
||||
|
||||
|
||||
settingPageList.add(settingItem)
|
||||
settingPageList.add(noticeItem)
|
||||
settingPageList.add(activityItem)
|
||||
settingPageList.add(singItem)
|
||||
settingPageList.add(serviceTermsItem)
|
||||
settingPageList.add(sourceSwitchItem)
|
||||
settingPageList.add(upLoadData)
|
||||
settingPageList.add(privacyPolicyItem)
|
||||
settingPageList.add(initializationItem)
|
||||
|
||||
val settingAdapter= SettingPageAdapter()
|
||||
settingAdapter.setTagList(settingPageList,requireContext())
|
||||
rvSettingTab.layoutManager =GridLayoutManager(CommonUtils.getApp(), 4, GridLayoutManager.VERTICAL, false)
|
||||
rvSettingTab.adapter=settingAdapter
|
||||
|
||||
settingAdapter.setListener(object: SettingPageAdapter.SettingPageAdapterItemClick {
|
||||
override fun onItemClick(itemData: SettingPageBean?) {
|
||||
if(itemData!=null){
|
||||
when(itemData.type){
|
||||
1->{
|
||||
startActivity(Intent(requireContext(), SettingActivity::class.java))
|
||||
}
|
||||
2->{
|
||||
val notice =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_NOTICE_READ, "暂无新通知")!!
|
||||
val userName =MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
|
||||
android.util.Log.i("data::::","notice::"+notice)
|
||||
if(notice.isEmpty()){
|
||||
val homeNoticeDialog = NoticeViewDialog(requireActivity(), "暂无新通知",userName)
|
||||
homeNoticeDialog.show()
|
||||
|
||||
homeNoticeDialog.setOnDialogClickListener {
|
||||
MMKV.defaultMMKV()
|
||||
.encode(BZYConstants.MMKV_KEY_NOTICE_READ, notice)
|
||||
homeNoticeDialog.dismiss()
|
||||
}
|
||||
}else{
|
||||
val homeNoticeDialog = NoticeViewDialog(requireActivity(), notice,userName)
|
||||
homeNoticeDialog.show()
|
||||
|
||||
homeNoticeDialog.setOnDialogClickListener {
|
||||
MMKV.defaultMMKV()
|
||||
.encode(BZYConstants.MMKV_KEY_NOTICE_READ, notice)
|
||||
homeNoticeDialog.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
3->{
|
||||
|
||||
startActivity(Intent(requireContext(), ActivityActivity::class.java))
|
||||
}
|
||||
4->{
|
||||
mainAtyVM.vipSign()
|
||||
}
|
||||
5->{
|
||||
val intent = Intent(requireContext(), AgreementAndPrivacyActivity::class.java)
|
||||
intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_USER_AGREEMENT)
|
||||
startActivity(intent)
|
||||
|
||||
}
|
||||
6->{
|
||||
initializationRepair()
|
||||
|
||||
|
||||
}
|
||||
7->{
|
||||
|
||||
|
||||
}
|
||||
8->{
|
||||
val intent = Intent(requireContext(),AgreementAndPrivacyActivity::class.java)
|
||||
intent.putExtra(BZYConstants.EXTRA_KEY_AGREEMENT, BZYConstants.EXTRA_PRIVACY_AGREEMENT)
|
||||
startActivity(intent)
|
||||
}
|
||||
9->{
|
||||
if(clashRunning){
|
||||
RxToast.info(getString(R.string.SwitchingSource))
|
||||
}else{
|
||||
RxToast.info(getString(R.string.Switching))
|
||||
//源切换
|
||||
showDomainList()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
public fun initializationRepair(){
|
||||
if (checkExpire()) {
|
||||
RxToast.info(resources.getString(R.string.AccountExpired))
|
||||
return
|
||||
}
|
||||
if(clashRunning){
|
||||
RxToast.info("请关闭加速后在进行初始化操作")
|
||||
return
|
||||
}
|
||||
cleanNodeMmkv()
|
||||
if (TextUtils.isEmpty(subUrl)){
|
||||
RxToast.success(resources.getString(R.string.tooFast))
|
||||
return
|
||||
}
|
||||
showLoading(resources.getString(R.string.UnderRepair), requireActivity())
|
||||
launch(Dispatchers.IO){
|
||||
profileBinder?.let { pm ->
|
||||
pm.queryAll().forEach { profile ->
|
||||
Log.d("setting profile delete ==>${profile.name}")
|
||||
pm.delete(profile.uuid)
|
||||
}
|
||||
subUrl.let {
|
||||
val result=withTimeoutOrNull(8.seconds) {
|
||||
subUrl?.let { url -> setSub2(url) }
|
||||
}
|
||||
if(result==null){
|
||||
android.util.Log.d(
|
||||
"resultData",
|
||||
"resultData:$result"
|
||||
)
|
||||
withContext(Dispatchers.Main){
|
||||
hideLoad()
|
||||
RxToast.error(resources.getString(R.string.FixTimeout))
|
||||
}
|
||||
}else{
|
||||
android.util.Log.d(
|
||||
"resultData",
|
||||
"resultData:$result"
|
||||
)
|
||||
withContext(Dispatchers.Main){
|
||||
hideLoad()
|
||||
RxToast.info(resources.getString(R.string.RepairCompletedInit))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun initView(view: View) {
|
||||
tvUserName=view.findViewById(R.id.tvUserName)
|
||||
tvUserTimeEnd=view.findViewById(R.id.tvUserTimeEnd)
|
||||
tvVipGet =view.findViewById(R.id.tvVipGet)
|
||||
tvEndTimes =view.findViewById(R.id.tvEndTimes)
|
||||
goGetVip =view.findViewById(R.id.goGetVip)
|
||||
goSee =view.findViewById(R.id.goSee)
|
||||
clVipCard =view.findViewById(R.id.clVipCard)
|
||||
shareCard =view.findViewById(R.id.shareCard)
|
||||
tvVersion=view.findViewById(R.id.tvVersion)
|
||||
|
||||
rvSettingTab=view.findViewById(R.id.rvSettingTab)
|
||||
|
||||
clVipCard.setOnClickListener {
|
||||
goNewRecharge()
|
||||
}
|
||||
shareCard.setOnClickListener {
|
||||
startActivity(Intent(requireContext(), ShareActivity::class.java))
|
||||
}
|
||||
|
||||
goSee.setOnClickListener {
|
||||
startActivity(Intent(requireContext(), ShareActivity::class.java))
|
||||
}
|
||||
goGetVip.setOnClickListener {
|
||||
goNewRecharge()
|
||||
}
|
||||
|
||||
|
||||
tvVipGet.setOnClickListener {
|
||||
showBingDialogChoose()
|
||||
}
|
||||
tvUserName.setOnClickListener {
|
||||
val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME)
|
||||
val clipboardManager =
|
||||
requireActivity().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
val clipData = ClipData.newPlainText("text", userName)
|
||||
clipboardManager.setPrimaryClip(clipData)
|
||||
RxToast.info(resources.getString(R.string.CopyToClipboard))
|
||||
}
|
||||
|
||||
|
||||
tvUserTimeEnd.setOnClickListener {
|
||||
goMainCheck()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun cleanNodeMmkv(){
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_SELECTED_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL)
|
||||
}
|
||||
|
||||
|
||||
var dialogDoMainChoose: DialogDoMainChoose? = null
|
||||
private fun showDomainList() {
|
||||
try {
|
||||
SplashHelper(mainAtyVM).getHostWithFallback { success ->
|
||||
MainScope().launch {
|
||||
if (success) {
|
||||
if (dialogDoMainChoose == null) {
|
||||
dialogDoMainChoose = DialogDoMainChoose(activity)
|
||||
}
|
||||
if (dialogDoMainChoose?.isShowing == false) {
|
||||
dialogDoMainChoose?.setOnTryButtonListener(object :
|
||||
DialogDoMainChoose.OnTryButtonListener {
|
||||
override fun tryButton() {
|
||||
RxToast.info(getString(R.string.ModificationFailed))
|
||||
dialogDoMainChoose?.dismiss()
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
dialogDoMainChoose?.dismiss()
|
||||
}
|
||||
})
|
||||
dialogDoMainChoose?.setOnListItemListener(object :
|
||||
DialogDoMainChoose.OnListItemListener {
|
||||
override fun listItemClick() {
|
||||
RxToast.info(getString(R.string.StorageSuccessful))
|
||||
|
||||
MainApplication.restartApp(requireActivity(),object:MainApplication.OnRestartButtonListener{
|
||||
|
||||
override fun enterButton() {
|
||||
|
||||
}
|
||||
|
||||
override fun cancelButton() {
|
||||
dialogDoMainChoose?.dismiss()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
dialogDoMainChoose?.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
@SuppressLint("SimpleDateFormat", "SetTextI18n")
|
||||
fun setExpireDate() {
|
||||
val isExpire = checkExpire()
|
||||
var endTimeInfo = "--"
|
||||
if (isExpire) {
|
||||
if (isAdded) {
|
||||
endTimeInfo = resources.getString(R.string.AccountExpired)
|
||||
tvEndTimes.text=resources.getString(R.string.AccountExpired)
|
||||
}
|
||||
} else {
|
||||
val validPeriod = MMKV.defaultMMKV().decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD)
|
||||
val daysDifference = getDaysDifference(validPeriod)
|
||||
if (daysDifference > 0) {
|
||||
tvEndTimes.text=daysDifference.toString()+"dat"
|
||||
} else if (daysDifference < 0) {
|
||||
tvEndTimes.text=daysDifference.toString()+"dat"
|
||||
} else {
|
||||
tvEndTimes.text=daysDifference.toString()+"dat"
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
super.onActivityCreated(savedInstanceState)
|
||||
Logger.d("onActivityCreated")
|
||||
mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java]
|
||||
observe(this, mainAtyVM)
|
||||
}
|
||||
private fun goMainCheck() {
|
||||
if (activity != null) {
|
||||
val uiMainActivity = activity as MainActivity
|
||||
uiMainActivity.goCheckLogin()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun httpLoading(httpStatus: HttpStatus.Loading) {
|
||||
super.httpLoading(httpStatus)
|
||||
}
|
||||
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
when (httpStatus.reqType) {
|
||||
|
||||
HttpReqType.VIPSIGN -> {
|
||||
val data = httpStatus.rsp as VipSignRsp
|
||||
if (data.code == "1000") {
|
||||
var gifMins = 30
|
||||
data.data?.let {
|
||||
if (it.signGiftmins != null) {
|
||||
gifMins = it.signGiftmins
|
||||
}
|
||||
}
|
||||
RxToast.success(
|
||||
resources.getString(R.string.SingInGive).replace("%d", "${gifMins}")
|
||||
)
|
||||
goMainCheck()
|
||||
} else {
|
||||
RxToast.error(resources.getString(R.string.CheckFailed) + "${data.message}")
|
||||
}
|
||||
}
|
||||
HttpReqType.GET_AIRNODES -> {
|
||||
val data = httpStatus.rsp as SubscriptionRsp
|
||||
if (data.code != "1000") {
|
||||
RxToast.error(resources.getString(R.string.NodeAcquisitionFailed) + "${data.msg}")
|
||||
}
|
||||
data.data.let { url ->
|
||||
android.util.Log.e("getAirPort", "AirPortURL:=${url}")
|
||||
if (url.isNotEmpty()) {
|
||||
val proSubUrl =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.PROFILE_SUB_URL, "")
|
||||
subUrl = if (!TextUtils.isEmpty(proSubUrl)){
|
||||
if (proSubUrl == url) {
|
||||
url
|
||||
} else {
|
||||
proSubUrl
|
||||
}
|
||||
}else{
|
||||
url
|
||||
}
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
subUrl?.let { setSub2(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HttpReqType.UploadParameters -> {
|
||||
val upLoadData = httpStatus.rsp as UploadParamData
|
||||
if (upLoadData.code == 1000) {
|
||||
val directory: File? = requireActivity().getExternalFilesDir("CrashLog")
|
||||
//多文件上传
|
||||
if (directory != null) {
|
||||
val allFilePath = getAllFilePath(directory.path)
|
||||
if (upLoadData.data != null) {
|
||||
if (allFilePath.isNotEmpty()) {
|
||||
val username =
|
||||
MMKV.defaultMMKV()
|
||||
.decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
val nowTime = SimpleDateFormat(
|
||||
"yyyyMMddkkmmss",
|
||||
Locale.getDefault()
|
||||
).format(Date())
|
||||
uploadForAliOss(
|
||||
upLoadData.data,
|
||||
allFilePath,
|
||||
"app/errlog/" + username + "_" + nowTime + ".txt"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
hideLoad()
|
||||
}
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun httpFailure(httpStatus: HttpStatus.Failure) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.VIPSIGN -> {
|
||||
RxToast.error(resources.getString(R.string.CheckFailed) + httpStatus.msg)
|
||||
}
|
||||
HttpReqType.CHECK_LOGIN -> {
|
||||
RxToast.error(resources.getString(R.string.QueryFailed))
|
||||
}
|
||||
|
||||
HttpReqType.UploadParameters -> {
|
||||
hideLoading()
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
fun showLoad(str: String, context: Context) {
|
||||
val message = if (TextUtils.isEmpty(str)) "进行中..." else str
|
||||
if (baseLoad == null) {
|
||||
baseLoad = RxDialogShapeLoading(context)
|
||||
}
|
||||
baseLoad?.setMessage(message)
|
||||
if (baseLoad?.isShowing == false) {
|
||||
baseLoad?.show()
|
||||
}
|
||||
}
|
||||
|
||||
fun hideLoad() {
|
||||
if (baseLoad != null && baseLoad?.isShowing == true) {
|
||||
baseLoad?.cancel()
|
||||
}
|
||||
}
|
||||
|
||||
private fun uploadForAliOss(data: ParamData, filePath: List<String>, dirStr: String) {
|
||||
val endpoint = "oss-cn-hongkong.aliyuncs.com"
|
||||
val accessKeyId = data.credentials?.accessKeyId
|
||||
val accessKeySecret = data.credentials?.accessKeySecret
|
||||
// 从STS服务获取的安全令牌(SecurityToken)。
|
||||
val securityToken = data.credentials?.securityToken
|
||||
val credentialProvider =
|
||||
OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken)
|
||||
val oss = OSSClient(requireActivity(), endpoint, credentialProvider)
|
||||
|
||||
android.util.Log.i("uploadForAliOss", "filePath::::${filePath[0]}")
|
||||
val put = PutObjectRequest("yingmao", dirStr, filePath[0])
|
||||
// 异步上传时可以设置进度回调。
|
||||
put.progressCallback =
|
||||
OSSProgressCallback { request, currentSize, totalSize ->
|
||||
android.util.Log.d(
|
||||
"PutObject",
|
||||
"currentSize: $currentSize totalSize: $totalSize"
|
||||
)
|
||||
}
|
||||
|
||||
val task: OSSAsyncTask<*> = oss.asyncPutObject(put,
|
||||
object : OSSCompletedCallback<PutObjectRequest?, PutObjectResult> {
|
||||
override fun onSuccess(request: PutObjectRequest?, result: PutObjectResult) {
|
||||
if (result.statusCode == 200) {
|
||||
//删除文件
|
||||
DataUtils.deleteFile(filePath[0])
|
||||
}
|
||||
|
||||
requireActivity().runOnUiThread {
|
||||
hideLoad()
|
||||
RxToast.info(resources.getString(R.string.LogUploadedSuccessfully))
|
||||
}
|
||||
|
||||
android.util.Log.d("PutObjectRequest", "$request")
|
||||
android.util.Log.d("PutObjectResult", "$result")
|
||||
android.util.Log.d("PutObject", "UploadSuccess")
|
||||
android.util.Log.d("ETag", result.eTag)
|
||||
android.util.Log.d("RequestId", result.requestId)
|
||||
}
|
||||
|
||||
override fun onFailure(
|
||||
request: PutObjectRequest?,
|
||||
clientExcepion: ClientException,
|
||||
serviceException: ServiceException,
|
||||
) {
|
||||
requireActivity().runOnUiThread {
|
||||
hideLoad()
|
||||
RxToast.error(resources.getString(R.string.LogUploadedFiler))
|
||||
}
|
||||
// 请求异常。
|
||||
if (clientExcepion != null) {
|
||||
// 本地异常,如网络异常等。
|
||||
clientExcepion.printStackTrace()
|
||||
}
|
||||
if (serviceException != null) {
|
||||
// 服务异常。
|
||||
android.util.Log.e("ErrorCode", serviceException.errorCode)
|
||||
android.util.Log.e("RequestId", serviceException.requestId)
|
||||
android.util.Log.e("HostId", serviceException.hostId)
|
||||
android.util.Log.e("RawMessage", serviceException.rawMessage)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
private fun showBingDialogChoose() {
|
||||
val dialog = DialogBandChoose(requireActivity())
|
||||
dialog.setOnBandClickListener(object : DialogBandChoose.OnBandClickListener {
|
||||
override fun onBandClick(isPhone: Boolean) {
|
||||
val intent = Intent(CommonUtils.getApp(), BandPhoneActivity::class.java)
|
||||
intent.putExtra("isPhone", isPhone)
|
||||
startActivity(intent)
|
||||
}
|
||||
})
|
||||
dialog.show()
|
||||
}
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
fun getDaysDifference(timestamp: Long): Long{
|
||||
var targetInstant = Instant.ofEpochMilli(timestamp)
|
||||
var nowInstant =Instant.now()
|
||||
return ChronoUnit.DAYS.between(targetInstant, nowInstant)
|
||||
}
|
||||
private fun goNewRecharge() {
|
||||
if (activity != null) {
|
||||
val newMain = activity as MainActivity
|
||||
newMain.goBackupRechargeWeb()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
package com.yingmao.clash.fragment.setting
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.entity.SettingPageBean
|
||||
|
||||
class SettingPageAdapter : RecyclerView.Adapter<SettingPageAdapter.SettingPageViewHolder>() {
|
||||
private lateinit var settingPageList: MutableList<SettingPageBean>
|
||||
//设置回调监听
|
||||
private var itemListener: SettingPageAdapterItemClick? = null
|
||||
private var context: Context? = null
|
||||
|
||||
//设置监听器
|
||||
fun setListener(listener: SettingPageAdapterItemClick) {
|
||||
this.itemListener = listener
|
||||
}
|
||||
|
||||
//设置显示的数据
|
||||
fun setTagList(settingPageList: MutableList<SettingPageBean>, context: Context) {
|
||||
this.settingPageList = settingPageList
|
||||
this.context = context
|
||||
}
|
||||
|
||||
inner class SettingPageViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
|
||||
|
||||
val llLine: LinearLayout = itemView.findViewById(R.id.llLine)
|
||||
val aivIcon: AppCompatImageView = itemView.findViewById(R.id.aivIcon)
|
||||
val itemName: TextView = itemView.findViewById(R.id.itemName)
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = SettingPageViewHolder(
|
||||
LayoutInflater.from(context)
|
||||
.inflate(R.layout.layout_item_setting_page, parent, false)
|
||||
)
|
||||
override fun getItemCount(): Int {
|
||||
return settingPageList.size
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged", "SetTextI18n", "DefaultLocale")
|
||||
override fun onBindViewHolder(holder: SettingPageViewHolder, @SuppressLint("RecyclerView") position: Int) {
|
||||
holder.aivIcon.setImageResource(settingPageList[position].imgSrc)
|
||||
holder.itemName.text=settingPageList[position].name
|
||||
holder.llLine.setOnClickListener {
|
||||
itemListener?.onItemClick(settingPageList[position])
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 内置监听回调
|
||||
* */
|
||||
interface SettingPageAdapterItemClick {
|
||||
fun onItemClick(itemData: SettingPageBean?)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,531 @@
|
|||
package com.yingmao.clash.fragment.activity
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.customview.customView
|
||||
import com.afollestad.materialdialogs.customview.getCustomView
|
||||
import com.alipay.sdk.app.PayTask
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.orhanobut.logger.Logger
|
||||
import com.stripe.android.PaymentConfiguration
|
||||
import com.stripe.android.Stripe
|
||||
import com.stripe.android.confirmAlipayPayment
|
||||
import com.stripe.android.model.ConfirmPaymentIntentParams
|
||||
import com.stripe.android.model.StripeIntent
|
||||
import com.tencent.mmkv.MMKV
|
||||
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.Companion.isSubbed
|
||||
import com.yingmao.clash.act.MainActivity.Companion.profileBinder
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.PayUploadParamData
|
||||
import com.yingmao.clash.entity.RechargeModelEntity
|
||||
import com.yingmao.clash.fragment.BaseFragment
|
||||
import com.yingmao.clash.fragment.home.HomeFragment.Companion.clashRunning
|
||||
import com.yingmao.clash.fragment.recharge.RechargeViewModel
|
||||
import com.yingmao.clash.fragment.recharge.adapter.RechargeModelAdapter
|
||||
import com.yingmao.clash.fragment.recharge.adapter.VIPRechargeAdapter
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.HttpStatus
|
||||
import com.yingmao.clash.net.http.entity.Grade
|
||||
import com.yingmao.clash.net.http.entity.PayRsp
|
||||
import com.yingmao.clash.net.http.entity.RechargeInfo
|
||||
import com.yingmao.clash.net.http.entity.RechargeInfoRsp
|
||||
import com.yingmao.clash.net.http.entity.Trade
|
||||
import com.yingmao.clash.util.CommonUtils
|
||||
import com.yingmao.clash.util.PayUtils
|
||||
import com.yingmao.clash.util.ThreadUtils
|
||||
import com.yingmao.clash.util.stopClashService
|
||||
import com.yingmao.clash.view.RxToast
|
||||
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.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import java.text.DecimalFormat
|
||||
|
||||
class vipFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatchers.IO) {
|
||||
|
||||
private lateinit var aiBack: AppCompatImageView
|
||||
private lateinit var viewModel: RechargeViewModel
|
||||
private lateinit var swipeLayout: SwipeRefreshLayout
|
||||
private lateinit var rvRechargeList:RecyclerView
|
||||
private lateinit var tvPay:TextView
|
||||
private lateinit var tvRechargeRecord:AppCompatImageView
|
||||
private lateinit var clCustom: ConstraintLayout
|
||||
private var selectedGrade: Grade? = null
|
||||
|
||||
private lateinit var rxDialogShapeLoading: RxDialogShapeLoading
|
||||
private var outTradeNo = ""
|
||||
private var selectedGradeID :Int=0
|
||||
//stripePay 支付
|
||||
private var paymentIntentClientSecret: String = ""
|
||||
private lateinit var mainAtyVM: MainAtyVM
|
||||
private val stripe: Stripe by lazy {
|
||||
Stripe(
|
||||
requireActivity(),
|
||||
PaymentConfiguration.getInstance(requireContext()).publishableKey
|
||||
)
|
||||
}
|
||||
|
||||
private val mPageInfo = ExpensesRecordActivity.PageInfo()
|
||||
override fun init(
|
||||
titleBarRl: RelativeLayout,
|
||||
backIv: ImageView,
|
||||
moreIv: TextView,
|
||||
titleTv: TextView,
|
||||
container: FrameLayout,
|
||||
) {
|
||||
titleBarRl.visibility = View.GONE
|
||||
titleTv.visibility = View.GONE
|
||||
backIv.visibility = View.GONE
|
||||
val view = View.inflate(CommonUtils.getApp(), R.layout.member_recharge_layout, null)
|
||||
initView(view)
|
||||
initdata()
|
||||
container.addView(view)
|
||||
}
|
||||
|
||||
private fun initdata() {
|
||||
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,"")!!
|
||||
val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!!
|
||||
val userId = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_USER_ID)!!
|
||||
viewModel.getPhRechargeInfo(username, phToken, userId)
|
||||
}
|
||||
|
||||
private fun initView(view: View) {
|
||||
aiBack=view.findViewById(R.id.aiBack)
|
||||
swipeLayout=view.findViewById(R.id.swipeLayout)
|
||||
rvRechargeList=view.findViewById(R.id.rvRechargeList)
|
||||
tvPay=view.findViewById(R.id.tvPay)
|
||||
tvRechargeRecord=view.findViewById(R.id.tvRechargeRecord)
|
||||
clCustom=view.findViewById(R.id.clCustom)
|
||||
swipeLayout.setColorSchemeColors(Color.rgb(47, 223, 189))
|
||||
swipeLayout.setOnRefreshListener {
|
||||
selectedGrade = null
|
||||
val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!!
|
||||
val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!!
|
||||
//获取充值列表
|
||||
val userId = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_USER_ID)!!
|
||||
viewModel.getPhRechargeInfo(username, phToken, userId)
|
||||
}
|
||||
|
||||
aiBack.setOnClickListener {
|
||||
// val intent=Intent()
|
||||
// this.setResult(1000,intent)
|
||||
// finish() // 关闭当前 Activity
|
||||
}
|
||||
tvRechargeRecord.setOnClickListener {
|
||||
startActivity(Intent(requireActivity(), ExpensesRecordActivity::class.java))
|
||||
}
|
||||
|
||||
tvPay.setOnClickListener {
|
||||
if (selectedGrade == null) {
|
||||
RxToast.info(resources.getString(R.string.selectRechargeAmount))
|
||||
return@setOnClickListener
|
||||
}
|
||||
viewModel.pay("1", selectedGrade!!, "pointCard")
|
||||
|
||||
}
|
||||
clCustom.setOnClickListener {
|
||||
startActivity(Intent(requireActivity(), CustomerServiceWebView::class.java))
|
||||
}
|
||||
}
|
||||
override fun httpLoading(httpStatus: HttpStatus.Loading) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.GET_RECHARGE_INFO -> {
|
||||
Logger.d("获取充值续费信息")
|
||||
swipeLayout.isRefreshing = true
|
||||
}
|
||||
HttpReqType.PAY -> {
|
||||
Logger.d("支付获取订单号")
|
||||
showLoadingDialog(resources.getString(R.string.GeneratingOrder))
|
||||
}
|
||||
else->{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun httpSuccess(httpStatus: HttpStatus.Success) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.GET_RECHARGE_INFO -> {
|
||||
Logger.d("获取充值续费信息请求成功")
|
||||
swipeLayout.isRefreshing = false
|
||||
(httpStatus.rsp as RechargeInfoRsp).let {
|
||||
when (it.code) {
|
||||
"1088" -> {
|
||||
RxToast.info(resources.getString(R.string.LoginOut))
|
||||
cleanUserInfo()
|
||||
}
|
||||
"1000" -> {
|
||||
it.data?.let { rechargeInfo ->
|
||||
initAdapter(rechargeInfo)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
RxToast.error(if (it.message.isNullOrBlank())resources.getString(R.string.FailedRechargeList)+ "(${it.code})" else "${it.code}:${it.message}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.PAY -> {
|
||||
hideLoadingDialog()
|
||||
Logger.d("生成订单请求成功")
|
||||
(httpStatus.rsp as PayRsp).let { rsp ->
|
||||
if (rsp.code != "1000") {
|
||||
RxToast.error(if (rsp.message.isNullOrBlank()) resources.getString(R.string.OrderGenerationFailed)+"(${rsp.code})" else "${rsp.code}:${rsp.message}")
|
||||
} else {
|
||||
let {
|
||||
outTradeNo = rsp.data?.outTradeNo!!
|
||||
val newUrl = rsp.data.payUrl.toString()
|
||||
orderPayment(rsp.data)
|
||||
Logger.e("支付url:${newUrl}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.unionPay -> {
|
||||
(httpStatus.rsp as PayRsp).let { rsp ->
|
||||
if (rsp.code != "1000") {
|
||||
RxToast.error(if (rsp.message.isNullOrBlank()) resources.getString(R.string.OrderGenerationFailed)+"(${rsp.code})" else "${rsp.code}:${rsp.message}")
|
||||
} else {
|
||||
if (rsp.data != null) {
|
||||
when (rsp.data.payModel) {
|
||||
1000 -> {
|
||||
val orderInfo = rsp.data.appFormat
|
||||
if(orderInfo!=null){
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val alipay = PayTask(requireActivity())
|
||||
val result = alipay.payV2(orderInfo, true)
|
||||
android.util.Log.i("payResult", "result::$result")
|
||||
launch(Dispatchers.Main) {
|
||||
val resultStatus = result["resultStatus"]
|
||||
val memo = result["memo"]
|
||||
if (resultStatus == "9000") {
|
||||
MaterialDialog(requireActivity()).show {
|
||||
this.cancelable(true)
|
||||
cornerRadius(res = R.dimen.dp_15)
|
||||
customView(
|
||||
R.layout.pay_sure_dialog_layout,
|
||||
scrollable = false,
|
||||
noVerticalPadding = true,
|
||||
horizontalPadding = false
|
||||
)
|
||||
val tvSure = findViewById<TextView>(R.id.tvSure)
|
||||
tvSure.setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
RxToast.info(resources.getString(R.string.PayError)+memo)
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
RxToast.error("订单支付异常,请更换支付方式!")
|
||||
}
|
||||
}
|
||||
0->{
|
||||
startActivity(Intent(Intent.ACTION_VIEW, rsp.data.payUrl?.toUri()))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.StripeType ->{
|
||||
(httpStatus.rsp as PayUploadParamData).let {
|
||||
if(it.data!=null){
|
||||
paymentIntentClientSecret= it.data.clientSecret.toString()
|
||||
startCheckout()
|
||||
}else{
|
||||
hideLoading()
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
}
|
||||
}
|
||||
HttpReqType.StripeWeChat ->{
|
||||
(httpStatus.rsp as PayUploadParamData).let {
|
||||
if(it.data!=null){
|
||||
paymentIntentClientSecret= it.data.clientSecret.toString()
|
||||
val serviceUrl = MMKV.defaultMMKV().decodeString(
|
||||
BZYConstants.MMKV_KEY_CURRENT_HOST,
|
||||
BuildConfig.service_url
|
||||
)!!
|
||||
val payUrl=serviceUrl+"/78zccgy0nsgknh9n4/iiii.html?s=${it.data.clientSecret.toString()}"
|
||||
val uri = payUrl.toUri()
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.data = uri
|
||||
startActivity(intent)
|
||||
}else{
|
||||
hideLoading()
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
}
|
||||
}
|
||||
else->{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun httpFailure(httpStatus: HttpStatus.Failure) {
|
||||
when (httpStatus.reqType) {
|
||||
HttpReqType.GET_RECHARGE_INFO -> {
|
||||
if (super.switchServer2()) {
|
||||
val username =
|
||||
MMKV.defaultMMKV()
|
||||
.decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "")!!
|
||||
val phToken =
|
||||
MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "")!!
|
||||
val userId = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_USER_ID)!!
|
||||
viewModel.getPhRechargeInfo(username, phToken, userId)
|
||||
}
|
||||
|
||||
Logger.d("获取充值续费信息异常${httpStatus.msg}")
|
||||
swipeLayout.isRefreshing = false
|
||||
RxToast.error(resources.getString(R.string.DataError))
|
||||
}
|
||||
|
||||
HttpReqType.PAY -> {
|
||||
Logger.d("获取支付订单号异常${httpStatus.msg}")
|
||||
RxToast.error(resources.getString(R.string.DataPayNumber))
|
||||
}
|
||||
HttpReqType.unionPay -> {
|
||||
Logger.d("OrderGenerationFailed${httpStatus.msg}")
|
||||
RxToast.error(resources.getString(R.string.OrderGenerationFailed))
|
||||
}
|
||||
HttpReqType.StripeType -> {
|
||||
hideLoading()
|
||||
RxToast.error(resources.getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
|
||||
else->{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun showLoadingDialog(content: String) {
|
||||
apply {
|
||||
if (!::rxDialogShapeLoading.isInitialized) {
|
||||
rxDialogShapeLoading = RxDialogShapeLoading(requireContext())
|
||||
}
|
||||
rxDialogShapeLoading.setLoadingText(content)
|
||||
rxDialogShapeLoading.setCancelable(false)
|
||||
if (!rxDialogShapeLoading.isShowing) {
|
||||
rxDialogShapeLoading.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun hideLoadingDialog() {
|
||||
if (::rxDialogShapeLoading.isInitialized && rxDialogShapeLoading.isShowing) {
|
||||
rxDialogShapeLoading.cancel()
|
||||
}
|
||||
}
|
||||
private fun cleanUserInfo() {
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_PH_TOKEN)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_CURRENT_NODE)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_SELECTED_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_VPN_UserCommand)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL)
|
||||
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_Switch_Finsh_Set)
|
||||
isSubbed =false
|
||||
Log.d("cleanUserInfo clashRunning==>$clashRunning")
|
||||
if (clashRunning) {
|
||||
requireContext().stopClashService()
|
||||
}
|
||||
mainAtyVM.stopHeartBeat()
|
||||
cleanProfile()
|
||||
val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
startActivity(intent)
|
||||
requireActivity().finish()
|
||||
}
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
private fun cleanProfile() {
|
||||
Log.d("cleanProfile start")
|
||||
GlobalScope.launch(Dispatchers.IO) {
|
||||
profileBinder?.let { pm ->
|
||||
pm.queryAll().forEach { profile ->
|
||||
Log.d("cleanProfile go delete name==>${profile.name}, uuid==>${profile.uuid}")
|
||||
pm.delete(profile.uuid)
|
||||
}
|
||||
} ?: let {
|
||||
Log.d("profileBinder is null")
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun initAdapter(recharge: RechargeInfo) {
|
||||
val rechargeListAdapter = VIPRechargeAdapter()
|
||||
rvRechargeList.layoutManager =GridLayoutManager(CommonUtils.getApp(), 2, GridLayoutManager.VERTICAL, false)
|
||||
rechargeListAdapter.setCloudServiceList(recharge,requireActivity())
|
||||
rvRechargeList.adapter=rechargeListAdapter
|
||||
rechargeListAdapter.setListener(object :VIPRechargeAdapter.VIPRechargeItemClickListener{
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onItemClick(noteItem: Grade?) {
|
||||
selectedGrade=noteItem
|
||||
val amount = selectedGrade!!.amount?.toFloat()
|
||||
if (amount != null) {
|
||||
if(selectedGrade!!.id!=null){
|
||||
selectedGradeID = selectedGrade!!.id!!
|
||||
}
|
||||
val decimalFormat = DecimalFormat("#0.00")
|
||||
tvPay.text =resources.getString(R.string.ActivateVIP)+"(¥${decimalFormat.format(amount)})"
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
private fun orderPayment(data: Trade) {
|
||||
Log.i("PayGradeIDTEST:${selectedGradeID}")
|
||||
val payList = mutableListOf<RechargeModelEntity>()
|
||||
if (data.payType != null) {
|
||||
let {
|
||||
MaterialDialog(requireContext()).show {
|
||||
this.cancelable(true)
|
||||
cornerRadius(res = R.dimen.dp_10)
|
||||
customView(
|
||||
R.layout.backup_payment_dialog,
|
||||
scrollable = false,
|
||||
noVerticalPadding = true,
|
||||
horizontalPadding = false
|
||||
)
|
||||
val rvPay = findViewById<RecyclerView>(R.id.rvPay)
|
||||
for (index in data.payType!!) {
|
||||
if (index.payModel != null && index.payChannel != null && index.payType != null) {
|
||||
val rme = RechargeModelEntity(
|
||||
index.payModel!!,
|
||||
index.payChannel!!,
|
||||
index.payParam!!,
|
||||
index.payType!!,
|
||||
index.payOrder!!
|
||||
)
|
||||
payList.add(rme)
|
||||
}
|
||||
}
|
||||
// payList.sortBy { item -> item.payModel }
|
||||
//7是快捷支付排第一
|
||||
payList.sortBy { if (it.payModel == 7) 0 else 1 }
|
||||
val groupBy = payList.groupBy { item -> item.payModel }
|
||||
val rcmAdapter = RechargeModelAdapter()
|
||||
rvPay.layoutManager = LinearLayoutManager(requireContext())
|
||||
rcmAdapter.setCloudServiceList(groupBy, requireContext())
|
||||
rvPay.adapter = rcmAdapter
|
||||
rcmAdapter.setListener(object :
|
||||
RechargeModelAdapter.RechargeModelClickListener {
|
||||
override fun onItemClick(
|
||||
rcEntity: RechargeModelEntity?,
|
||||
) {
|
||||
|
||||
if (rcEntity?.payModel == 7 && rcEntity.payType == 1) {
|
||||
if (selectedGradeID != 0) {
|
||||
if (!PayUtils.isAlipayInstalled(requireContext())) {
|
||||
RxToast.error(resources.getString(R.string.AlipayNotInstalled))
|
||||
return
|
||||
}
|
||||
dismiss()
|
||||
showLoading(
|
||||
resources.getString(R.string.PaymentIn),
|
||||
requireContext()
|
||||
)
|
||||
Log.i("PayGradeID:${selectedGradeID}")
|
||||
viewModel.getPayClientSecret(selectedGradeID)
|
||||
} else {
|
||||
dismiss()
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
} else if (rcEntity?.payModel == 7 && rcEntity.payType == 2) {
|
||||
if (selectedGradeID != 0) {
|
||||
viewModel.getWeChatPayClientSecret(selectedGradeID)
|
||||
dismiss()
|
||||
} else {
|
||||
dismiss()
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
} else {
|
||||
val payModel = rcEntity?.payModel ?: 0
|
||||
val payType = rcEntity?.payType ?: 0
|
||||
val payParam = rcEntity?.payParam ?: ""
|
||||
viewModel.orderPayment(data, payModel, payType, payParam)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
getCustomView().findViewById<AppCompatImageView>(R.id.ivBack)
|
||||
.setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
private fun startCheckout() {
|
||||
GlobalScope.launch {
|
||||
runCatching {
|
||||
stripe.confirmAlipayPayment(
|
||||
ConfirmPaymentIntentParams.createAlipay(paymentIntentClientSecret),
|
||||
{ data -> PayTask(requireActivity()).payV2(data, true) }
|
||||
)
|
||||
}.fold(
|
||||
onSuccess = { result ->
|
||||
hideLoading()
|
||||
val paymentIntent = result.intent
|
||||
when (paymentIntent.status) {
|
||||
StripeIntent.Status.Succeeded -> {
|
||||
Log.i("startCheckout:支付成功")
|
||||
ThreadUtils.runOnUiThread {
|
||||
RxToast.info(getString(R.string.PaymentCompleted))
|
||||
}
|
||||
}
|
||||
StripeIntent.Status.RequiresAction -> {
|
||||
Log.i("startCheckout:RequiresAction")
|
||||
ThreadUtils.runOnUiThread {
|
||||
RxToast.info(getString(R.string.PaymentCancellation))
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
Log.i("startCheckout status::${paymentIntent.status}")
|
||||
}
|
||||
}
|
||||
},
|
||||
onFailure = {
|
||||
Log.i("startCheckout:支付失败${it.message}")
|
||||
hideLoading()
|
||||
ThreadUtils.runOnUiThread {
|
||||
RxToast.info(getString(R.string.NoPaymentReceipt))
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,21 +4,18 @@ import android.annotation.SuppressLint
|
|||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Button
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.cncat.vpn.common.log.Log
|
||||
import com.tencent.mmkv.MMKV
|
||||
|
||||
import com.yingmao.clash.R
|
||||
import com.yingmao.clash.act.NewMainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.act.MainActivity.Companion.subUrl
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.DomainItemBean
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,69 @@
|
|||
package com.yingmao.clash.view.dialog;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.view.Gravity;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatButton;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||
import com.yingmao.clash.R;
|
||||
|
||||
public class NoticeViewDialog extends Dialog {
|
||||
|
||||
public NoticeViewDialog(Context context, String content,String userName) {
|
||||
super(context);
|
||||
initDialog();
|
||||
viewInit(context,content,userName);
|
||||
}
|
||||
public void initDialog() {
|
||||
setContentView(R.layout.dialog_notice_layout);
|
||||
setCanceledOnTouchOutside(true);
|
||||
Window window = getWindow();
|
||||
//设置弹窗动画
|
||||
assert window != null;
|
||||
window.setWindowAnimations(R.style.style_dialog);
|
||||
//设置Dialog背景色
|
||||
window.setBackgroundDrawableResource(R.color.colorTransparent);
|
||||
WindowManager.LayoutParams wl = window.getAttributes();
|
||||
//设置弹窗位置
|
||||
wl.gravity = Gravity.CENTER;
|
||||
window.setAttributes(wl);
|
||||
}
|
||||
|
||||
private void viewInit(Context context,String content,String userName) {
|
||||
ImageView icActivityClose=findViewById(R.id.icActivityClose);
|
||||
TextView tvMySee=findViewById(R.id.tvMySee);
|
||||
TextView tvContent=findViewById(R.id.tv_notice_content);
|
||||
|
||||
TextView tvNewTitle=findViewById(R.id.tvNewTitle);
|
||||
|
||||
tvNewTitle.setText(userName);
|
||||
tvContent.setText(content);
|
||||
icActivityClose.setOnClickListener(v -> {
|
||||
if (onDialogClickListener != null) {
|
||||
onDialogClickListener.onCancelClickListener();
|
||||
}
|
||||
});
|
||||
tvMySee.setOnClickListener(v -> {
|
||||
if (onDialogClickListener != null) {
|
||||
onDialogClickListener.onCancelClickListener();
|
||||
}
|
||||
});
|
||||
}
|
||||
/********************** 回调 ************************/
|
||||
private OnDialogClickListener onDialogClickListener;
|
||||
|
||||
public void setOnDialogClickListener(OnDialogClickListener onDialogClickListener){
|
||||
this.onDialogClickListener = onDialogClickListener;
|
||||
}
|
||||
|
||||
public interface OnDialogClickListener{
|
||||
void onCancelClickListener();
|
||||
}
|
||||
}
|
||||
|
|
@ -7,25 +7,18 @@ import com.orhanobut.logger.Logger
|
|||
import com.tencent.mmkv.MMKV
|
||||
import com.yingmao.clash.BuildConfig
|
||||
import com.yingmao.clash.act.ExpensesRecordActivity
|
||||
import com.yingmao.clash.act.NewMainActivity
|
||||
import com.yingmao.clash.base.PublicViewMode
|
||||
import com.yingmao.clash.conf.BZYConstants
|
||||
import com.yingmao.clash.entity.CheckLoginRsp
|
||||
import com.yingmao.clash.entity.ClashNodebBean
|
||||
import com.yingmao.clash.entity.Node
|
||||
import com.yingmao.clash.listener.AsyncCallBackListener
|
||||
import com.yingmao.clash.listener.DownLoadListener
|
||||
import com.yingmao.clash.net.http.HttpApi
|
||||
import com.yingmao.clash.net.http.HttpReqType
|
||||
import com.yingmao.clash.net.http.NetService
|
||||
import com.yingmao.clash.net.http.entity.HeartBeatRsp
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import org.yaml.snakeyaml.Yaml
|
||||
import java.math.BigDecimal
|
||||
import java.util.Timer
|
||||
import java.util.TimerTask
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="25dp"
|
||||
android:height="33dp"
|
||||
android:viewportWidth="25"
|
||||
android:viewportHeight="33">
|
||||
<path
|
||||
android:pathData="M3,29.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#FDAA46"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h24v24h-24z"/>
|
||||
<path
|
||||
android:pathData="M21.502,4.551H20.67C21.092,3.835 21.277,3.152 21.218,2.518C21.169,1.988 20.917,1.23 19.997,0.625C19.233,0.123 18.251,-0 17.162,0.272C15.396,0.716 13.305,2.24 11.931,4.083C10.555,2.24 8.466,0.716 6.7,0.272C5.61,-0.002 4.627,0.122 3.864,0.625C2.944,1.23 2.693,1.988 2.643,2.518C2.584,3.152 2.768,3.835 3.192,4.551H2.359C1.098,4.551 0.072,5.578 0.072,6.84V9.788C0.072,10.786 0.73,11.669 1.683,11.965C1.592,12.216 1.545,12.475 1.545,12.737V21.582C1.545,22.844 2.572,23.871 3.834,23.871H20.031C21.292,23.871 22.317,22.844 22.317,21.582V12.737C22.317,12.473 22.272,12.213 22.181,11.964C23.132,11.666 23.789,10.784 23.789,9.788V6.841C23.789,5.579 22.764,4.551 21.502,4.551ZM20.031,22.241H12.745V12.078H20.031C20.394,12.078 20.688,12.374 20.688,12.737V21.582C20.688,21.945 20.394,22.241 20.031,22.241ZM13.642,4.551C14.801,3.214 16.322,2.164 17.557,1.854C18.198,1.694 18.723,1.738 19.103,1.988C19.507,2.253 19.579,2.49 19.595,2.669C19.659,3.324 18.956,4.207 18.625,4.551H13.642ZM22.159,6.841V9.788C22.159,10.151 21.865,10.447 21.502,10.447H12.745V6.182H21.502C21.865,6.182 22.159,6.478 22.159,6.841ZM11.116,12.078V22.241H3.833C3.469,22.241 3.175,21.945 3.175,21.582V12.737C3.175,12.374 3.469,12.078 3.833,12.078H11.116ZM4.267,2.669C4.283,2.49 4.356,2.253 4.758,1.988C5.135,1.738 5.66,1.691 6.305,1.854C7.533,2.162 9.052,3.213 10.213,4.551H5.235C4.938,4.25 4.202,3.339 4.267,2.669ZM1.701,6.841C1.701,6.478 1.995,6.182 2.359,6.182H11.116V10.447H2.359C1.995,10.447 1.701,10.151 1.701,9.788V6.841Z"
|
||||
android:fillColor="#FD9E2C"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
|
||||
<solid android:color="@android:color/transparent" />
|
||||
</shape>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="41dp"
|
||||
android:height="41dp"
|
||||
android:viewportWidth="41"
|
||||
android:viewportHeight="41">
|
||||
<path
|
||||
android:pathData="M20.5,20.5m-20.5,0a20.5,20.5 0,1 1,41 0a20.5,20.5 0,1 1,-41 0"
|
||||
android:fillColor="#FEE8D2"/>
|
||||
<path
|
||||
android:pathData="M14.296,22.348V18.805C15.285,18.393 15.944,17.487 15.944,16.416C15.944,15.345 15.285,14.438 14.296,14.109V9.824C14.296,9.33 13.967,9 13.472,9C12.977,9 12.648,9.33 12.648,9.824V14.109C11.659,14.438 11,15.344 11,16.416C11,17.487 11.659,18.393 12.648,18.723V22.266C11.659,22.596 11,23.502 11,24.573C11,25.645 11.659,26.551 12.648,26.881V31.248C12.648,31.742 12.977,32.072 13.472,32.072C13.967,32.072 14.296,31.742 14.296,31.248V26.963C15.285,26.633 15.944,25.727 15.944,24.656C15.944,23.584 15.285,22.678 14.296,22.348ZM13.472,15.592C13.966,15.592 14.296,15.921 14.296,16.416C14.296,16.91 13.967,17.24 13.472,17.24C12.977,17.24 12.648,16.91 12.648,16.416C12.648,15.921 12.978,15.592 13.472,15.592ZM13.472,25.48C12.978,25.48 12.648,25.15 12.648,24.656C12.648,24.161 12.977,23.831 13.472,23.831C13.967,23.831 14.296,24.161 14.296,24.656C14.296,25.15 13.967,25.48 13.472,25.48ZM27.43,25.714H19.484C18.987,25.714 18.49,26.044 18.49,26.538C18.49,27.033 18.888,27.362 19.484,27.362H27.43C27.926,27.362 28.423,27.033 28.423,26.538C28.423,26.044 28.026,25.714 27.43,25.714ZM29.417,14.178H19.484C18.987,14.178 18.49,14.508 18.49,15.002C18.49,15.497 18.888,15.826 19.484,15.826H29.417C29.913,15.826 30.41,15.497 30.41,15.002C30.41,14.508 30.012,14.178 29.417,14.178ZM27.43,19.122C27.926,19.122 28.423,18.793 28.423,18.298C28.423,17.804 28.026,17.474 27.43,17.474H19.484C18.987,17.474 18.49,17.804 18.49,18.298C18.49,18.793 18.888,19.122 19.484,19.122H27.43ZM29.417,22.418H19.484C18.987,22.418 18.49,22.747 18.49,23.242C18.49,23.737 18.888,24.066 19.484,24.066H29.417C29.913,24.066 30.41,23.737 30.41,23.242C30.41,22.747 30.012,22.418 29.417,22.418Z"
|
||||
android:fillColor="#F89F25"/>
|
||||
<path
|
||||
android:pathData="M13.638,16.271m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"
|
||||
android:fillColor="#F89F25"/>
|
||||
<path
|
||||
android:pathData="M13.638,24.271m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"
|
||||
android:fillColor="#F89F25"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="41dp"
|
||||
android:height="41dp"
|
||||
android:viewportWidth="41"
|
||||
android:viewportHeight="41">
|
||||
<path
|
||||
android:pathData="M20.5,20.5m-20.5,0a20.5,20.5 0,1 1,41 0a20.5,20.5 0,1 1,-41 0"
|
||||
android:fillColor="#FEE8D2"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M10,9h22v24h-22z"/>
|
||||
<path
|
||||
android:pathData="M20.991,26.598C20.483,26.601 19.987,26.767 19.565,27.077C19.143,27.386 18.815,27.825 18.622,28.338C18.429,28.851 18.38,29.415 18.48,29.958C18.58,30.502 18.826,31.001 19.186,31.392C19.546,31.783 20.005,32.049 20.503,32.157C21.002,32.264 21.518,32.208 21.988,31.995C22.457,31.782 22.858,31.423 23.14,30.962C23.423,30.501 23.573,29.959 23.573,29.404C23.573,29.035 23.506,28.669 23.376,28.328C23.246,27.987 23.056,27.677 22.816,27.417C22.576,27.156 22.292,26.949 21.978,26.809C21.665,26.669 21.33,26.597 20.991,26.598ZM29.41,26.598C28.901,26.599 28.404,26.764 27.982,27.073C27.559,27.382 27.23,27.82 27.036,28.333C26.842,28.846 26.792,29.41 26.891,29.954C26.991,30.498 27.236,30.997 27.596,31.389C27.956,31.781 28.414,32.048 28.913,32.156C29.412,32.264 29.928,32.208 30.398,31.996C30.868,31.783 31.27,31.424 31.552,30.962C31.834,30.501 31.985,29.959 31.985,29.404C31.985,29.035 31.918,28.67 31.788,28.329C31.659,27.988 31.469,27.678 31.229,27.418C30.989,27.157 30.705,26.951 30.392,26.81C30.079,26.669 29.744,26.598 29.406,26.598H29.41ZM12.585,26.598C12.077,26.601 11.581,26.767 11.159,27.077C10.737,27.386 10.409,27.825 10.216,28.338C10.023,28.851 9.974,29.415 10.074,29.958C10.175,30.502 10.42,31.001 10.78,31.392C11.14,31.783 11.599,32.049 12.097,32.157C12.596,32.264 13.113,32.208 13.582,31.995C14.051,31.782 14.452,31.423 14.734,30.962C15.017,30.501 15.167,29.959 15.167,29.404C15.167,29.035 15.1,28.669 14.97,28.327C14.84,27.986 14.649,27.676 14.409,27.415C14.169,27.155 13.884,26.948 13.57,26.808C13.257,26.668 12.921,26.597 12.582,26.598H12.585ZM28.76,18.86H21.637V16.781C22.423,16.606 23.121,16.119 23.597,15.413C24.072,14.708 24.291,13.836 24.21,12.965C24.129,12.094 23.755,11.287 23.16,10.7C22.564,10.113 21.791,9.788 20.988,9.788C20.186,9.788 19.412,10.113 18.817,10.7C18.222,11.287 17.847,12.094 17.767,12.965C17.686,13.836 17.904,14.708 18.38,15.413C18.855,16.119 19.553,16.606 20.34,16.781V18.86H13.23C13.06,18.859 12.891,18.895 12.733,18.965C12.576,19.035 12.433,19.139 12.312,19.27C12.191,19.401 12.096,19.557 12.031,19.729C11.966,19.9 11.932,20.084 11.933,20.27V24.485C11.933,24.672 12.001,24.852 12.123,24.985C12.244,25.118 12.409,25.192 12.581,25.192C12.753,25.192 12.918,25.118 13.04,24.985C13.162,24.852 13.23,24.672 13.23,24.485V20.974C13.23,20.882 13.247,20.79 13.279,20.704C13.312,20.618 13.359,20.54 13.42,20.475C13.48,20.409 13.552,20.357 13.63,20.322C13.709,20.287 13.794,20.269 13.879,20.27H28.109C28.194,20.269 28.279,20.287 28.358,20.322C28.436,20.357 28.508,20.409 28.568,20.475C28.629,20.54 28.676,20.618 28.709,20.704C28.742,20.79 28.758,20.882 28.758,20.974V24.485C28.758,24.672 28.826,24.852 28.948,24.985C29.07,25.118 29.235,25.192 29.407,25.192C29.579,25.192 29.744,25.118 29.865,24.985C29.987,24.852 30.055,24.672 30.055,24.485V20.269C30.054,19.895 29.917,19.537 29.674,19.273C29.431,19.009 29.103,18.861 28.76,18.86Z"
|
||||
android:fillColor="#F89F25"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="41dp"
|
||||
android:height="41dp"
|
||||
android:viewportWidth="41"
|
||||
android:viewportHeight="41">
|
||||
<path
|
||||
android:pathData="M20.5,20.5m-20.5,0a20.5,20.5 0,1 1,41 0a20.5,20.5 0,1 1,-41 0"
|
||||
android:fillColor="#FEE8D2"/>
|
||||
<path
|
||||
android:pathData="M15.115,18.813H23.966C24.165,18.813 24.356,18.734 24.497,18.593C24.637,18.452 24.716,18.262 24.716,18.063C24.716,17.864 24.637,17.673 24.497,17.532C24.356,17.392 24.165,17.313 23.966,17.313H15.115C13.783,17.313 12.75,16.442 12.75,15.438C12.75,14.433 13.783,13.562 15.115,13.562H18.673C18.971,14.571 19.894,15.313 21,15.313C22.106,15.313 23.029,14.571 23.327,13.562H27.849C28.048,13.562 28.238,13.483 28.379,13.343C28.52,13.202 28.598,13.011 28.598,12.812C28.598,12.613 28.52,12.423 28.379,12.282C28.238,12.142 28.048,12.063 27.849,12.063H23.289C22.952,11.118 22.059,10.438 21,10.438C19.941,10.438 19.048,11.118 18.712,12.063H15.115C13.007,12.063 11.25,13.542 11.25,15.438C11.25,17.333 13.007,18.813 15.115,18.813Z"
|
||||
android:fillColor="#F89F25"/>
|
||||
<path
|
||||
android:pathData="M30.748,18.542C30.744,18.061 30.598,17.592 30.328,17.193C30.057,16.795 29.675,16.486 29.229,16.305C28.784,16.123 28.294,16.078 27.822,16.174C27.351,16.271 26.919,16.505 26.58,16.847C26.241,17.188 26.011,17.623 25.919,18.095C25.826,18.568 25.876,19.057 26.061,19.501C26.247,19.945 26.559,20.325 26.96,20.591C27.361,20.858 27.831,21 28.313,21C29.091,21 29.776,20.629 30.222,20.061C30.49,20.367 30.649,20.735 30.649,21.125C30.649,22.129 29.616,23 28.284,23H15.77C15.555,22.639 15.251,22.34 14.886,22.131C14.521,21.923 14.108,21.813 13.688,21.813C13.076,21.814 12.488,22.045 12.039,22.461C11.591,22.877 11.316,23.446 11.269,24.056C10.282,24.662 9.625,25.657 9.625,26.813C9.625,28.708 11.382,30.188 13.49,30.188H19.628C19.826,30.599 20.136,30.946 20.523,31.189C20.909,31.432 21.356,31.561 21.813,31.563C22.459,31.563 23.079,31.306 23.536,30.849C23.993,30.392 24.25,29.771 24.25,29.125C24.25,28.479 23.993,27.858 23.536,27.401C23.079,26.944 22.459,26.688 21.813,26.688C21.243,26.688 20.691,26.888 20.253,27.254C19.816,27.619 19.521,28.126 19.419,28.687H13.49C12.158,28.687 11.125,27.816 11.125,26.812C11.125,26.367 11.336,25.954 11.677,25.626C11.901,25.953 12.2,26.221 12.551,26.406C12.901,26.591 13.291,26.688 13.688,26.688C14.289,26.686 14.869,26.462 15.314,26.058C15.76,25.654 16.04,25.099 16.1,24.5H28.283C30.392,24.5 32.148,23.021 32.148,21.125C32.149,20.07 31.594,19.156 30.748,18.542Z"
|
||||
android:fillColor="#F89F25"/>
|
||||
</vector>
|
||||
|
|
@ -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="#FFEFDBA8"
|
||||
android:startColor="#FFFFF8E2" />
|
||||
<corners android:radius="10dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?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="#FF2C334D"
|
||||
android:startColor="#FF2C334D" />
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="26dp"
|
||||
android:height="33dp"
|
||||
android:viewportWidth="26"
|
||||
android:viewportHeight="33">
|
||||
<path
|
||||
android:pathData="M4,29.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#339AF7"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h26v24h-26z"/>
|
||||
<path
|
||||
android:pathData="M23.01,10.768L19.472,3.848C19.245,3.404 18.901,3.032 18.476,2.772C18.051,2.512 17.562,2.375 17.064,2.375H9.01C8.002,2.375 7.078,2.935 6.613,3.828L3.001,10.748C2.799,11.135 2.694,11.564 2.694,12C2.694,12.436 2.799,12.865 3.001,13.252L6.613,20.172C6.842,20.61 7.186,20.977 7.609,21.233C8.031,21.49 8.516,21.625 9.01,21.625H17.064C18.081,21.625 19.01,21.057 19.472,20.152L23.01,13.231C23.205,12.85 23.306,12.428 23.306,12C23.306,11.572 23.205,11.15 23.01,10.769V10.768ZM21.03,20.949C20.657,21.679 20.089,22.292 19.389,22.721C18.689,23.149 17.885,23.375 17.064,23.375H9.01C8.196,23.375 7.398,23.152 6.701,22.73C6.005,22.308 5.438,21.703 5.062,20.981L1.45,14.061C1.118,13.425 0.944,12.718 0.944,12C0.944,11.282 1.118,10.575 1.45,9.939L5.062,3.018C5.439,2.296 6.006,1.692 6.702,1.27C7.398,0.848 8.196,0.625 9.01,0.625H17.064C18.737,0.625 20.269,1.563 21.03,3.051L24.568,9.973C25.219,11.247 25.219,12.755 24.568,14.027L21.03,20.949Z"
|
||||
android:fillColor="#339AF7"/>
|
||||
<path
|
||||
android:pathData="M13,17.075C12.334,17.075 11.674,16.944 11.058,16.688C10.442,16.434 9.883,16.06 9.411,15.588C8.94,15.117 8.566,14.558 8.311,13.942C8.056,13.326 7.925,12.666 7.925,12C7.925,11.333 8.056,10.673 8.311,10.058C8.566,9.442 8.94,8.882 9.411,8.411C9.883,7.94 10.442,7.566 11.058,7.311C11.674,7.056 12.334,6.925 13,6.925C14.346,6.925 15.637,7.459 16.589,8.411C17.54,9.363 18.075,10.654 18.075,12C18.075,13.346 17.54,14.637 16.589,15.588C15.637,16.54 14.346,17.075 13,17.075ZM13,15.325C13.437,15.325 13.869,15.239 14.273,15.072C14.676,14.905 15.042,14.66 15.351,14.351C15.66,14.042 15.905,13.676 16.072,13.272C16.239,12.869 16.325,12.436 16.325,12C16.325,11.563 16.239,11.131 16.072,10.727C15.905,10.324 15.66,9.957 15.351,9.649C15.042,9.34 14.676,9.095 14.273,8.928C13.869,8.761 13.437,8.675 13,8.675C12.118,8.675 11.273,9.025 10.649,9.649C10.025,10.272 9.675,11.118 9.675,12C9.675,12.882 10.025,13.727 10.649,14.351C11.273,14.974 12.118,15.325 13,15.325Z"
|
||||
android:fillColor="#339AF7"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="42dp"
|
||||
android:height="42dp"
|
||||
android:viewportWidth="42"
|
||||
android:viewportHeight="42">
|
||||
<path
|
||||
android:pathData="M21,20m-17,0a17,17 0,1 1,34 0a17,17 0,1 1,-34 0"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M28.885,11.896C26.698,9.709 23.625,8.459 20.552,8.563C17.375,8.511 14.302,9.709 12.115,11.896C10.083,13.979 8.99,16.688 9.042,19.5C9.042,21.427 9.563,23.302 10.448,24.917L9.719,27.052C9.458,27.833 9.615,28.667 10.188,29.292C10.656,29.813 11.229,30.073 11.906,30.073C12.063,30.073 12.167,30.073 12.323,30.021L15.552,29.448C17.063,30.125 18.729,30.438 20.448,30.438H20.708C23.781,30.438 26.698,29.24 28.833,27.104C30.917,25.021 32.01,22.313 31.906,19.5C32.01,16.636 30.917,13.979 28.885,11.896ZM20.5,25.229C17.271,25.229 14.667,22.677 14.667,19.5C14.667,18.927 15.135,18.458 15.708,18.458C16.281,18.458 16.75,18.927 16.75,19.5C16.75,21.531 18.417,23.146 20.5,23.146C22.583,23.146 24.25,21.531 24.25,19.5C24.25,18.927 24.719,18.458 25.292,18.458C25.865,18.458 26.333,18.927 26.333,19.5C26.333,22.677 23.729,25.229 20.5,25.229Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="20.477"
|
||||
android:startY="8.557"
|
||||
android:endX="20.477"
|
||||
android:endY="30.438"
|
||||
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,19 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="26dp"
|
||||
android:height="33dp"
|
||||
android:viewportWidth="26"
|
||||
android:viewportHeight="33">
|
||||
<path
|
||||
android:pathData="M4,29.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#339AF7"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h26v24h-26z"/>
|
||||
<path
|
||||
android:pathData="M23.01,10.768L19.472,3.848C19.245,3.404 18.901,3.032 18.476,2.772C18.051,2.512 17.562,2.375 17.064,2.375H9.01C8.002,2.375 7.078,2.935 6.613,3.828L3.001,10.748C2.799,11.135 2.694,11.564 2.694,12C2.694,12.436 2.799,12.865 3.001,13.252L6.613,20.172C6.842,20.61 7.186,20.977 7.609,21.233C8.031,21.49 8.516,21.625 9.01,21.625H17.064C18.081,21.625 19.01,21.057 19.472,20.152L23.01,13.231C23.205,12.85 23.306,12.428 23.306,12C23.306,11.572 23.205,11.15 23.01,10.769V10.768ZM21.03,20.949C20.657,21.679 20.089,22.292 19.389,22.721C18.689,23.149 17.885,23.375 17.064,23.375H9.01C8.196,23.375 7.398,23.152 6.701,22.73C6.005,22.308 5.438,21.703 5.062,20.981L1.45,14.061C1.118,13.425 0.944,12.718 0.944,12C0.944,11.282 1.118,10.575 1.45,9.939L5.062,3.018C5.439,2.296 6.006,1.692 6.702,1.27C7.398,0.848 8.196,0.625 9.01,0.625H17.064C18.737,0.625 20.269,1.563 21.03,3.051L24.568,9.973C25.219,11.247 25.219,12.755 24.568,14.027L21.03,20.949Z"
|
||||
android:fillColor="#339AF7"/>
|
||||
<path
|
||||
android:pathData="M13,17.075C12.334,17.075 11.674,16.944 11.058,16.688C10.442,16.434 9.883,16.06 9.411,15.588C8.94,15.117 8.566,14.558 8.311,13.942C8.056,13.326 7.925,12.666 7.925,12C7.925,11.333 8.056,10.673 8.311,10.058C8.566,9.442 8.94,8.882 9.411,8.411C9.883,7.94 10.442,7.566 11.058,7.311C11.674,7.056 12.334,6.925 13,6.925C14.346,6.925 15.637,7.459 16.589,8.411C17.54,9.363 18.075,10.654 18.075,12C18.075,13.346 17.54,14.637 16.589,15.588C15.637,16.54 14.346,17.075 13,17.075ZM13,15.325C13.437,15.325 13.869,15.239 14.273,15.072C14.676,14.905 15.042,14.66 15.351,14.351C15.66,14.042 15.905,13.676 16.072,13.272C16.239,12.869 16.325,12.436 16.325,12C16.325,11.563 16.239,11.131 16.072,10.727C15.905,10.324 15.66,9.957 15.351,9.649C15.042,9.34 14.676,9.095 14.273,8.928C13.869,8.761 13.437,8.675 13,8.675C12.118,8.675 11.273,9.025 10.649,9.649C10.025,10.272 9.675,11.118 9.675,12C9.675,12.882 10.025,13.727 10.649,14.351C11.273,14.974 12.118,15.325 13,15.325Z"
|
||||
android:fillColor="#339AF7"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M395.2,513.6l323.1,-312.4c19.1,-18.4 19.1,-48.3 0,-66.7 -19.1,-18.4 -49.9,-18.4 -69,0L291.8,480.3c-19.1,18.4 -19.1,48.3 0,66.7l357.6,345.7c9.5,9.2 22,13.8 34.5,13.8 12.5,0 25,-4.6 34.5,-13.8 19.1,-18.4 19.1,-48.2 0,-66.7L395.2,513.6z"
|
||||
android:fillColor="@color/orange_B36C1B"/>
|
||||
android:fillColor="#FF333333"/>
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:width="15dp"
|
||||
android:height="15dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="40dp"
|
||||
android:height="40dp"
|
||||
android:width="10dp"
|
||||
android:height="10dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M731.7,480l-384,-341.3c-17.1,-14.9 -44.8,-14.9 -59.7,4.3 -14.9,17.1 -14.9,44.8 4.3,59.7L640,512 292.3,821.3c-17.1,14.9 -19.2,42.7 -4.3,59.7 8.5,8.5 19.2,14.9 32,14.9 10.7,0 19.2,-4.3 27.7,-10.7l384,-341.3c8.5,-8.5 14.9,-19.2 14.9,-32s-4.3,-23.5 -14.9,-32z"
|
||||
android:fillColor="#ffffff"/>
|
||||
android:fillColor="#FF333333"/>
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M720,192L176,192a80.1,80.1 0,0 0,-80 80v608c0,44.1 35.9,80 80,80h544c44.1,0 80,-35.9 80,-80L800,272c0,-44.1 -35.9,-80 -80,-80zM736,880c0,8.8 -7.2,16 -16,16L176,896a16,16 0,0 1,-16 -16L160,272a16,16 0,0 1,16 -16h544a16,16 0,0 1,16 16v608z"
|
||||
android:fillColor="#5A2B31"/>
|
||||
android:fillColor="#FF333333"/>
|
||||
<path
|
||||
android:pathData="M848,64H304a32,32 0,0 0,0 64h544a16,16 0,0 1,16 16v608a32,32 0,1 0,64 0V144c0,-44.1 -35.9,-80 -80,-80z"
|
||||
android:fillColor="#5A2B31"/>
|
||||
android:fillColor="#FF333333"/>
|
||||
<path
|
||||
android:pathData="M608,360L288,360a32,32 0,0 0,0 64h320a32,32 0,1 0,0 -64zM608,520L288,520a32,32 0,1 0,0 64h320a32,32 0,1 0,0 -64zM480,678.7L288,678.7a32,32 0,1 0,0 64h192a32,32 0,1 0,0 -64z"
|
||||
android:fillColor="#5A2B31"/>
|
||||
android:fillColor="#FF333333"/>
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
android:width="25dp"
|
||||
android:height="33dp"
|
||||
android:viewportWidth="25"
|
||||
android:viewportHeight="33">
|
||||
<path
|
||||
android:pathData="M597.3,896v85.3h-170.7v-85.3h170.7zM896,725.3v85.3L133.6,810.7l44.2,-66.3a211.4,211.4 0,0 0,35.3 -109.4l0.1,-7.8L213.3,426.7c0,-150.5 111.3,-274.9 256,-295.6L469.3,64h85.3v67c142.5,20.4 252.5,141.3 255.9,288.6L810.7,426.7v213.3h-85.3L725.3,426.7c0,-113.8 -89.2,-206.8 -201.4,-213l-5.9,-0.2L512,213.3c-115.8,0 -210.1,92.3 -213.2,207.4L298.7,426.7v200.4c0,28.7 -4.1,57 -12.2,84.1l-3.2,10.1 -1.4,4L896,725.3z"
|
||||
android:fillColor="#69A6FE"/>
|
||||
android:pathData="M3,29.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#F24823"/>
|
||||
<path
|
||||
android:pathData="M20.77,20.097H3.891C2.849,20.096 2.001,19.248 2,18.207C1.999,17.702 2.196,17.226 2.553,16.868C2.651,16.77 2.759,16.682 2.876,16.607L2.872,16.601C2.879,16.596 2.886,16.591 2.893,16.587C3.392,16.259 3.69,15.709 3.689,15.111V10.098C3.699,9.115 3.877,8.152 4.218,7.235C4.55,6.343 5.027,5.517 5.636,4.782C6.244,4.047 6.966,3.425 7.781,2.932C8.447,2.529 9.166,2.22 9.918,2.014C10.127,0.873 11.129,0.003 12.328,0H12.333C12.987,0 13.602,0.254 14.066,0.715C14.426,1.074 14.662,1.525 14.75,2.016C15.501,2.222 16.218,2.53 16.885,2.934C17.7,3.426 18.422,4.049 19.03,4.784C19.639,5.519 20.116,6.344 20.448,7.237C20.788,8.153 20.967,9.116 20.977,10.099V15.11C20.976,15.711 21.274,16.262 21.776,16.588C21.781,16.591 21.786,16.595 21.791,16.598L21.784,16.609C22.31,16.945 22.66,17.534 22.661,18.202C22.662,19.246 21.814,20.096 20.77,20.097ZM3.895,17.759L3.892,17.847C3.763,17.847 3.679,17.913 3.64,17.952C3.601,17.991 3.535,18.076 3.535,18.205C3.535,18.401 3.696,18.562 3.892,18.562H20.769C20.965,18.562 21.125,18.401 21.125,18.204C21.125,18.007 20.964,17.847 20.768,17.847V17.757C19.931,17.136 19.439,16.162 19.441,15.108V10.111C19.404,6.855 17.061,4.027 13.869,3.384L13.253,3.26V2.452C13.252,2.208 13.156,1.977 12.982,1.803C12.808,1.63 12.578,1.535 12.333,1.535H12.331C11.826,1.536 11.414,1.948 11.413,2.453V3.259L10.796,3.383C7.603,4.024 5.261,6.853 5.224,10.109V15.11C5.225,16.163 4.732,17.138 3.895,17.759Z"
|
||||
android:fillColor="#F24823"/>
|
||||
<path
|
||||
android:pathData="M15.565,21.762C15.502,23.451 14.114,24.802 12.409,24.802C10.705,24.802 9.317,23.451 9.254,21.762H15.565Z"
|
||||
android:fillColor="#F24823"/>
|
||||
</vector>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:color="#BFD5D5D5">
|
||||
<!--如果是白色背景就需要这个-->
|
||||
<item android:id="@android:id/mask"
|
||||
android:drawable="@color/white">
|
||||
</item>
|
||||
|
||||
<item >
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@color/translate"/>
|
||||
<corners android:radius="@dimen/dp_15"/>
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
</ripple>
|
||||
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="222dp"
|
||||
android:height="18dp"
|
||||
android:viewportWidth="222"
|
||||
android:viewportHeight="18">
|
||||
<path
|
||||
android:pathData="M50.39,4.03H60.63V5.22H58.56V8.35H61.3V9.54H58.56V15.17H57.32V9.54H53.84C53.71,10.84 53.46,11.92 53.07,12.79C52.58,13.88 51.74,14.73 50.59,15.31L49.92,14.27C50.96,13.66 51.68,12.88 52.06,11.95C52.3,11.27 52.47,10.46 52.58,9.54H49.72V8.35H52.67C52.67,8.24 52.68,8.14 52.68,8.06V5.22H50.39V4.03ZM53.93,5.22V8.06C53.93,8.16 53.91,8.25 53.91,8.35H57.32V5.22H53.93ZM64.67,3.47C65.55,4.16 66.29,4.85 66.89,5.52L66.02,6.38C65.5,5.73 64.77,5.03 63.82,4.28L64.67,3.47ZM72.14,15.12C71.43,15.12 70.64,15.1 69.81,15.09C68.97,15.08 68.28,15 67.73,14.87C67.21,14.72 66.76,14.4 66.37,13.96C66.19,13.74 66.03,13.64 65.87,13.64C65.6,13.64 65.13,14.22 64.47,15.39L63.56,14.55C64.21,13.49 64.79,12.83 65.32,12.57V8.89H63.57V7.75H66.47V12.66C66.54,12.71 66.6,12.78 66.67,12.86C66.97,13.21 67.28,13.47 67.6,13.64C67.99,13.82 68.57,13.94 69.33,13.96C70.07,13.97 70.94,13.99 71.96,13.99C72.6,13.99 73.25,13.97 73.89,13.96C74.54,13.95 75.05,13.92 75.4,13.9L75.1,15.12H72.14ZM69.89,4.76H67.38V3.73H74.52V4.6C73.76,5.25 72.96,5.8 72.1,6.26C72.13,6.29 72.15,6.3 72.18,6.33H74.79V12.1C74.79,12.87 74.36,13.26 73.52,13.26H72.52L72.26,12.23L73.18,12.28C73.47,12.28 73.62,12.14 73.62,11.85V11.19H71.75V13.32H70.62V11.19H68.79V13.35H67.62V6.33H70.61C70.18,6.04 69.7,5.74 69.16,5.46L69.89,4.76ZM71.35,5.68C71.89,5.41 72.4,5.09 72.87,4.76H69.96C70.45,5.07 70.92,5.37 71.35,5.68ZM68.79,9.28V10.19H70.62V9.28H68.79ZM71.75,9.28V10.19H73.62V9.28H71.75ZM73.62,8.27V7.36H71.75V8.27H73.62ZM70.62,8.27V7.36H68.79V8.27H70.62ZM77.86,5.33H82.68C82.49,4.7 82.28,4.13 82.06,3.6L83.49,3.37C83.67,3.94 83.87,4.6 84.05,5.33H88.82V6.53H77.86V5.33ZM77.42,13.45H83.8C84.56,11.76 85.23,9.65 85.8,7.12L87.12,7.46C86.6,9.71 85.97,11.71 85.23,13.45H89.26V14.65H77.42V13.45ZM80.88,7.12C81.45,8.79 81.94,10.71 82.38,12.88L81.06,13.22C80.67,11.26 80.17,9.37 79.58,7.55L80.88,7.12ZM93.08,7.42V8.93H95.81V7.42H93.08ZM95.81,6.32V4.89H93.08V6.32H95.81ZM91.77,14.98L91.34,13.79C91.69,13.66 91.87,13.45 91.87,13.15V3.78H96.96V10.07H93.08V13.39C94.07,13.1 94.96,12.8 95.74,12.49C95.51,12.13 95.29,11.78 95.07,11.41L96.01,10.81C96.81,12.05 97.43,13.13 97.85,14.04L96.89,14.72C96.71,14.32 96.51,13.94 96.31,13.52C94.98,14.08 93.46,14.56 91.77,14.98ZM101.39,13.56H100.35L100.03,12.36L100.99,12.4C101.35,12.4 101.53,12.22 101.53,11.88V4.95H99.54V15.3H98.31V3.8H102.77V12.15C102.77,13.09 102.3,13.56 101.39,13.56ZM107.12,6.04H115.17V8.86H107.12V6.04ZM113.97,7.81V7.08H108.32V7.81H113.97ZM111.17,3.31C111.35,3.61 111.52,3.95 111.69,4.32H116.82V5.47H105.46V4.32H110.28C110.11,4.03 109.93,3.77 109.74,3.54L111.17,3.31ZM105.17,11.91H110.76V11.53L113.22,10.54H106.43V9.45H115.69V10.32C114.62,10.79 113.38,11.3 111.97,11.84V11.91H117.11V13.02H111.97V13.99C111.97,14.88 111.53,15.34 110.66,15.34H108.85L108.53,14.22C109.22,14.27 109.76,14.31 110.17,14.31C110.56,14.31 110.76,14.08 110.76,13.64V13.02H105.17V11.91ZM120.11,4.24H130.02V5.45H120.11V4.24ZM120.98,8.7H129.13V9.9H120.98V8.7ZM119.16,13.49H130.94V14.73H119.16V13.49ZM133.21,6.66H138.19C138.27,5.97 138.32,5.24 138.34,4.48V3.35H139.58V4.2C139.58,5.06 139.53,5.88 139.43,6.66H144.71V7.85H139.74C140.65,10.63 142.4,12.78 144.98,14.3L144.21,15.3C141.72,13.77 139.96,11.62 138.97,8.86C138.12,11.84 136.36,14.03 133.72,15.42L132.93,14.38C135.61,13.08 137.3,10.89 137.99,7.85H133.21V6.66ZM150.24,8.88V15.29H149.02V9.02C148.58,10.26 148.03,11.39 147.36,12.4L146.81,11C147.8,9.81 148.51,8.48 148.97,6.97H147.09V5.78H149.02V3.35H150.24V5.78H151.86V6.97H150.24V7.57C150.88,8.15 151.52,8.81 152.15,9.54L151.44,10.62C150.99,9.92 150.58,9.33 150.24,8.88ZM156.86,5.21H153.75C153.91,7.01 154.39,8.64 155.21,10.11C156.03,8.68 156.57,7.05 156.86,5.21ZM154.49,11.23C153.42,9.42 152.78,7.42 152.57,5.21H152.09V4.03H158.04V5.2C157.68,7.55 156.99,9.58 155.95,11.3C156.76,12.41 157.76,13.43 158.98,14.34L158.13,15.34C156.99,14.42 156.02,13.41 155.24,12.35C154.35,13.51 153.27,14.49 152.02,15.31L151.23,14.31C152.54,13.44 153.64,12.41 154.49,11.23ZM171.02,9.66C170.06,8.96 169.07,8.37 168.08,7.92L168.72,6.95C170.17,7.62 171.5,8.41 172.7,9.35L171.99,10.43C171.67,10.16 171.36,9.92 171.07,9.7V13.78H172.58V14.96H160.99V13.78H162.59V9.85C162.2,10.06 161.8,10.24 161.41,10.41L160.88,9.27C162.48,8.67 163.79,7.89 164.8,6.91L165.58,7.8C164.83,8.5 163.96,9.13 162.98,9.66H171.02ZM163.78,13.78H165.02V10.83H163.78V13.78ZM166.17,13.78H167.47V10.83H166.17V13.78ZM168.61,13.78H169.87V10.83H168.61V13.78ZM161.27,5.52H164.31C163.93,5.02 163.46,4.48 162.91,3.91L163.92,3.28C164.61,3.98 165.14,4.59 165.51,5.11L164.91,5.52H168.07C168.55,4.82 168.96,4.08 169.33,3.3L170.52,3.72C170.19,4.39 169.82,5 169.42,5.52H172.3V6.72H161.27V5.52Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="112"
|
||||
android:startY="0"
|
||||
android:endX="112"
|
||||
android:endY="18"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFF8000"/>
|
||||
<item android:offset="1" android:color="#FF5E2A12"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M0,9h46v1h-46z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="0"
|
||||
android:startY="9.5"
|
||||
android:endX="46"
|
||||
android:endY="9.5"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFEE8D2"/>
|
||||
<item android:offset="1" android:color="#FFFA6E15"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M176,9h46v1h-46z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="176"
|
||||
android:startY="9.5"
|
||||
android:endX="222"
|
||||
android:endY="9.5"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFA6E15"/>
|
||||
<item android:offset="1" android:color="#FFFEE8D2"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
||||
|
|
@ -3,16 +3,16 @@
|
|||
<item>
|
||||
<shape>
|
||||
<!-- 边框颜色 -->
|
||||
<solid android:color="#B36C1B"/>
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="3dp"/>
|
||||
<solid android:color="#FFDFEFFE"/>
|
||||
<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="3dp" android:bottom="3dp" >
|
||||
<shape>
|
||||
<!-- View填充颜色 -->
|
||||
<solid android:color="#FFE7CC" />
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="3dp"/>
|
||||
<solid android:color="#FFFFFFFF" />
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="24dp" android:bottomRightRadius="24dp"/>
|
||||
|
||||
</shape>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@
|
|||
<item>
|
||||
<shape>
|
||||
<!-- 边框颜色 -->
|
||||
<solid android:color="#B36C1B"/>
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="3dp"/>
|
||||
<solid android:color="#FF9FCFFF"/>
|
||||
<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="#FF8A04" />
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="3dp"/>
|
||||
<solid android:color="#FF9FCFFF" />
|
||||
<corners android:topRightRadius="24dp" android:topLeftRadius="24dp" android:bottomLeftRadius="24dp" android:bottomRightRadius="24dp"/>
|
||||
|
||||
</shape>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:color="#BFD5D5D5" >
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="@color/white"/>
|
||||
<corners android:topRightRadius="16dp" android:topLeftRadius="16dp" android:bottomRightRadius="4dp" android:bottomLeftRadius="4dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
android:color="#BFD5D5D5">
|
||||
<item>
|
||||
<shape>
|
||||
<gradient android:startColor="#FFFFE8B0" android:endColor="#FFFFCA60" android:angle="0"/>
|
||||
<corners
|
||||
android:bottomLeftRadius="4dp"
|
||||
android:bottomRightRadius="4dp"
|
||||
android:topLeftRadius="16dp"
|
||||
android:topRightRadius="16dp" />
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:color="#BFD5D5D5" >
|
||||
<item>
|
||||
<shape>
|
||||
<solid android:color="#FFFFF6D7"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="6dp"
|
||||
android:height="7dp"
|
||||
android:viewportWidth="6"
|
||||
android:viewportHeight="7">
|
||||
<path
|
||||
android:pathData="M5.1423,2.7563C5.7722,3.1418 5.7813,4.0537 5.1592,4.4517L1.7208,6.6512C1.059,7.0746 0.1898,6.6044 0.182,5.8187L0.1389,1.4885C0.1311,0.7029 0.9907,0.2155 1.6609,0.6257L5.1423,2.7563Z"
|
||||
android:fillColor="#643E00"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="25dp"
|
||||
android:height="33dp"
|
||||
android:viewportWidth="25"
|
||||
android:viewportHeight="33">
|
||||
<path
|
||||
android:pathData="M3,29.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#9681F8"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h24v24h-24z"/>
|
||||
<path
|
||||
android:pathData="M20.105,0.421C21.026,0.421 21.91,0.787 22.562,1.438C23.213,2.09 23.579,2.974 23.579,3.895V20.105C23.579,21.026 23.213,21.91 22.562,22.561C21.91,23.213 21.026,23.579 20.105,23.579H3.895C3.439,23.579 2.987,23.489 2.565,23.315C2.144,23.14 1.761,22.884 1.438,22.562C1.115,22.239 0.859,21.856 0.685,21.435C0.51,21.013 0.42,20.561 0.42,20.105V3.895C0.42,3.439 0.51,2.987 0.684,2.565C0.859,2.143 1.115,1.76 1.438,1.437C1.76,1.115 2.143,0.859 2.565,0.684C2.987,0.51 3.439,0.42 3.895,0.42H20.105V0.421ZM3.895,2.158C3.745,2.158 3.596,2.177 3.452,2.215L2.219,3.438C2.184,3.566 2.164,3.698 2.159,3.83L2.158,3.895V20.105C2.158,20.255 2.177,20.399 2.212,20.537L3.427,21.778C3.557,21.814 3.691,21.836 3.83,21.841L3.895,21.842H20.105C20.263,21.842 20.415,21.822 20.56,21.782L21.785,20.55C21.817,20.428 21.836,20.301 21.841,20.17L21.842,20.105V3.895C21.842,3.732 21.82,3.575 21.778,3.425L20.535,2.21C20.416,2.18 20.293,2.162 20.17,2.158L20.105,2.157H3.895V2.158Z"
|
||||
android:fillColor="#9681F8"/>
|
||||
<path
|
||||
android:pathData="M11.393,5.958C14.671,5.601 17.613,8.008 17.966,11.332C18.129,12.862 17.71,14.396 16.792,15.631L15.58,14.4C16.887,12.406 16.353,9.714 14.387,8.388C13.51,7.795 12.442,7.552 11.395,7.708V10.154L8.36,7.077L11.393,4V5.958ZM8.967,15.077C9.435,15.552 10.009,15.91 10.641,16.122C11.274,16.333 11.947,16.392 12.607,16.293V13.846L15.64,16.923L12.607,20V18.043C9.328,18.4 6.386,15.993 6.034,12.667C5.871,11.138 6.29,9.603 7.208,8.369L8.42,9.6C7.874,10.439 7.631,11.439 7.731,12.434C7.83,13.43 8.266,14.362 8.966,15.077H8.967Z"
|
||||
android:fillColor="#9681F8"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="46dp"
|
||||
android:height="1dp"
|
||||
android:viewportWidth="46"
|
||||
android:viewportHeight="1">
|
||||
<path
|
||||
android:pathData="M0,0h46v1h-46z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="0"
|
||||
android:startY="0.5"
|
||||
android:endX="46"
|
||||
android:endY="0.5"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFEE8D2"/>
|
||||
<item android:offset="1" android:color="#FFFA6E15"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="28dp"
|
||||
android:height="35dp"
|
||||
android:viewportWidth="28"
|
||||
android:viewportHeight="35">
|
||||
<path
|
||||
android:pathData="M5,31.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#5BD6C5"/>
|
||||
<path
|
||||
android:pathData="M13.92,24.48C19.752,24.48 24.48,19.753 24.48,13.92C24.48,8.088 19.752,3.36 13.92,3.36C8.088,3.36 3.36,8.088 3.36,13.92C3.36,19.753 8.088,24.48 13.92,24.48Z"
|
||||
android:strokeWidth="1.5"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#5BD6C5"/>
|
||||
<path
|
||||
android:pathData="M15.36,11.847C15.36,11.316 14.93,10.887 14.4,10.887C13.87,10.887 13.44,11.316 13.44,11.847V19.36C13.44,19.89 13.87,20.32 14.4,20.32C14.93,20.32 15.36,19.89 15.36,19.36V11.847Z"
|
||||
android:fillColor="#5BD6C5"/>
|
||||
<path
|
||||
android:pathData="M14.4,9.76C14.93,9.76 15.36,9.33 15.36,8.8C15.36,8.27 14.93,7.84 14.4,7.84C13.87,7.84 13.44,8.27 13.44,8.8C13.44,9.33 13.87,9.76 14.4,9.76Z"
|
||||
android:fillColor="#5BD6C5"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="343dp"
|
||||
android:height="65dp"
|
||||
android:viewportWidth="343"
|
||||
android:viewportHeight="65">
|
||||
<path
|
||||
android:pathData="M0,16.92C0,7.74 6.27,0.31 14,0.31H329C336.73,0.31 343,7.74 343,16.92V64.17C230.5,64.17 119.5,64.17 0,64.17V16.92Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="152.59"
|
||||
android:startY="123"
|
||||
android:endX="43.02"
|
||||
android:endY="-1.17"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF3A3D57"/>
|
||||
<item android:offset="1" android:color="#FF3A3D57"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M205,64l112,-0l0,-64l-112,-0z"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M205,54.16V0H317V54.16C317,59.59 315.59,64 313.85,64H208.15C206.41,64 205,59.59 205,54.16Z"/>
|
||||
<path
|
||||
android:pathData="M290,-8.82C316.51,-8.82 338,10.5 338,34.33C338,58.17 316.51,77.49 290,77.49C263.49,77.49 242,58.17 242,34.33C242,10.5 263.49,-8.82 290,-8.82ZM290,76.59C315.96,76.59 337,57.67 337,34.33C337,10.99 315.96,-7.93 290,-7.93C264.04,-7.93 243,10.99 243,34.33C243,57.67 264.04,76.59 290,76.59Z"
|
||||
android:strokeAlpha="0.36"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="evenOdd"
|
||||
android:fillAlpha="0.36"/>
|
||||
</group>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M205,54.16V0H317V54.16C317,59.59 315.59,64 313.85,64H208.15C206.41,64 205,59.59 205,54.16Z"/>
|
||||
<path
|
||||
android:pathData="M290,-21.41C324.24,-21.41 352,3.55 352,34.33C352,65.12 324.24,90.07 290,90.07C255.76,90.07 228,65.12 228,34.33C228,3.55 255.76,-21.41 290,-21.41ZM290,89.17C323.69,89.17 351,64.62 351,34.33C351,4.04 323.69,-20.51 290,-20.51C256.31,-20.51 229,4.04 229,34.33C229,64.62 256.31,89.17 290,89.17Z"
|
||||
android:strokeAlpha="0.14"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="evenOdd"
|
||||
android:fillAlpha="0.14"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M290,-36.7C333.63,-36.7 369,-4.9 369,34.33C369,73.56 333.63,105.36 290,105.36C246.37,105.36 211,73.56 211,34.33C211,-4.9 246.37,-36.7 290,-36.7ZM290,104.46C333.08,104.46 368,73.06 368,34.33C368,-4.4 333.08,-35.8 290,-35.8C246.92,-35.8 212,-4.4 212,34.33C212,73.06 246.92,104.46 290,104.46Z"
|
||||
android:strokeAlpha="0.05"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="evenOdd"
|
||||
android:fillAlpha="0.05"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="25dp"
|
||||
android:height="31dp"
|
||||
android:viewportWidth="25"
|
||||
android:viewportHeight="31">
|
||||
<path
|
||||
android:pathData="M3,27.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#D71B18"/>
|
||||
<path
|
||||
android:pathData="M23.768,8.219C23.698,8.15 23.616,8.096 23.525,8.06C23.434,8.023 23.336,8.006 23.238,8.008C23.14,8.01 23.044,8.032 22.955,8.073C22.865,8.113 22.785,8.171 22.719,8.243L22.157,8.847C21.077,4.828 17.711,1.8 13.587,1.307C13.39,1.287 13.193,1.346 13.039,1.471C12.885,1.596 12.786,1.777 12.765,1.974C12.718,2.391 13.01,2.769 13.416,2.818C17.294,3.28 20.395,6.368 20.954,10.326C20.959,10.358 20.968,10.388 20.975,10.418C20.974,10.521 20.993,10.624 21.033,10.719C21.072,10.814 21.13,10.901 21.204,10.973C21.274,11.042 21.357,11.095 21.448,11.132C21.539,11.167 21.636,11.185 21.734,11.182C21.832,11.18 21.928,11.158 22.017,11.118C22.107,11.077 22.187,11.019 22.253,10.947L23.792,9.294C23.929,9.147 24.002,8.953 23.998,8.752C23.993,8.552 23.911,8.361 23.768,8.22V8.219ZM3.01,11.04C3.108,11.053 3.207,11.046 3.301,11.02C3.396,10.994 3.485,10.949 3.562,10.889C3.64,10.828 3.705,10.753 3.753,10.668C3.802,10.583 3.833,10.488 3.845,10.391C4.377,6.418 7.464,3.305 11.351,2.82C11.548,2.793 11.727,2.689 11.848,2.531C11.969,2.373 12.023,2.173 11.998,1.975C11.996,1.961 11.991,1.946 11.988,1.931C12.018,1.771 11.996,1.606 11.926,1.46C11.856,1.314 11.741,1.194 11.598,1.117L9.609,0.082C9.522,0.037 9.427,0.01 9.329,0.002C9.231,-0.005 9.133,0.007 9.04,0.038C8.947,0.068 8.861,0.118 8.788,0.182C8.714,0.247 8.654,0.326 8.611,0.414C8.522,0.593 8.505,0.8 8.566,0.991C8.626,1.182 8.759,1.341 8.935,1.436L9.429,1.695C5.719,2.859 2.918,6.138 2.376,10.184C2.348,10.381 2.399,10.582 2.518,10.741C2.636,10.902 2.813,11.009 3.01,11.039V11.04ZM11.349,20.392C7.391,19.899 4.298,16.722 3.827,12.666C3.823,12.555 3.795,12.446 3.745,12.346C3.695,12.247 3.624,12.16 3.536,12.091C3.459,12.031 3.37,11.987 3.276,11.962C3.181,11.937 3.082,11.931 2.985,11.945C2.888,11.959 2.795,11.992 2.711,12.042C2.627,12.093 2.554,12.16 2.497,12.239L1.15,14.063C1.032,14.224 0.98,14.426 1.007,14.624C1.034,14.823 1.137,15.003 1.294,15.127C1.371,15.188 1.46,15.232 1.555,15.257C1.65,15.283 1.749,15.289 1.846,15.275C1.943,15.261 2.037,15.228 2.121,15.177C2.205,15.126 2.277,15.059 2.335,14.979L2.682,14.507C3.792,18.446 7.088,21.392 11.171,21.901C11.269,21.912 11.368,21.903 11.462,21.876C11.556,21.848 11.644,21.803 11.721,21.741C11.797,21.68 11.861,21.604 11.908,21.518C11.956,21.432 11.986,21.337 11.996,21.24C12.023,21.042 11.97,20.841 11.848,20.682C11.727,20.523 11.548,20.419 11.349,20.392ZM21.806,12.036C21.708,12.026 21.61,12.034 21.515,12.061C21.421,12.089 21.332,12.134 21.256,12.196C21.179,12.257 21.115,12.333 21.068,12.419C21.02,12.505 20.99,12.6 20.98,12.698C20.495,16.741 17.399,19.904 13.452,20.393C13.255,20.421 13.077,20.525 12.955,20.683C12.834,20.841 12.781,21.041 12.806,21.238C12.806,21.254 12.811,21.27 12.814,21.286C12.816,21.573 12.974,21.846 13.245,21.974L15.273,22.927C15.362,22.968 15.459,22.99 15.556,22.993C15.654,22.996 15.752,22.98 15.843,22.945C15.934,22.911 16.018,22.858 16.089,22.791C16.16,22.723 16.217,22.643 16.257,22.553C16.339,22.371 16.347,22.164 16.279,21.975C16.211,21.787 16.072,21.633 15.892,21.546L15.641,21.428C19.275,20.181 21.969,16.906 22.451,12.883C22.477,12.685 22.424,12.486 22.303,12.327C22.182,12.168 22.004,12.064 21.806,12.036ZM17.539,11.605C17.539,8.706 15.236,6.348 12.405,6.348C9.573,6.348 7.27,8.706 7.27,11.607C7.27,14.506 9.574,16.866 12.405,16.866C15.236,16.866 17.539,14.506 17.539,11.605ZM12.405,15.345C10.392,15.345 8.754,13.668 8.754,11.607C8.754,9.544 10.392,7.867 12.405,7.867C14.417,7.867 16.055,9.544 16.055,11.607C16.055,13.668 14.417,15.345 12.405,15.345Z"
|
||||
android:fillColor="#D71B18"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="26dp"
|
||||
android:height="34dp"
|
||||
android:viewportWidth="26"
|
||||
android:viewportHeight="34">
|
||||
<path
|
||||
android:pathData="M3,30.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#F66E4F"/>
|
||||
<path
|
||||
android:pathData="M13,24.336C12.636,24.336 12.285,24.219 11.986,24.011L7.527,20.852C4.849,18.759 3.406,15.795 3.406,12.48V6.474C3.406,6.136 3.601,5.824 3.9,5.681L12.025,1.833C12.051,1.82 12.09,1.807 12.116,1.794C12.688,1.599 13.312,1.599 13.871,1.794C13.897,1.807 13.936,1.82 13.962,1.833L22.1,5.694C22.399,5.837 22.594,6.149 22.594,6.487V12.48C22.594,15.795 21.138,18.759 18.499,20.826L14.001,24.011C13.702,24.232 13.351,24.336 13,24.336ZM5.148,7.033V12.48C5.148,15.249 6.37,17.719 8.567,19.461L13,22.594L17.459,19.435C19.63,17.732 20.852,15.249 20.852,12.48V7.033L13.273,3.445C13.091,3.393 12.896,3.393 12.714,3.445L5.148,7.033Z"
|
||||
android:fillColor="#F66E4F"/>
|
||||
<path
|
||||
android:pathData="M11.401,16.172L7.787,12.116L9.412,10.66L12.09,13.663L17.16,8.476L18.72,10.01L12.675,16.198C12.324,16.562 11.739,16.549 11.401,16.172Z"
|
||||
android:fillColor="#F66E4F"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="26dp"
|
||||
android:height="36dp"
|
||||
android:viewportWidth="26"
|
||||
android:viewportHeight="36">
|
||||
<path
|
||||
android:pathData="M3,32.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#ABDA3F"/>
|
||||
<path
|
||||
android:pathData="M17.634,11.838C17.33,11.481 16.792,11.437 16.435,11.742L11.299,16.118L9.668,14.396C9.345,14.055 8.808,14.042 8.466,14.364C8.385,14.441 8.319,14.533 8.274,14.635C8.228,14.737 8.203,14.847 8.2,14.958C8.197,15.07 8.216,15.181 8.256,15.285C8.296,15.39 8.357,15.485 8.433,15.566L10.62,17.874C10.77,18.032 10.974,18.127 11.192,18.138C11.409,18.15 11.623,18.077 11.789,17.936L17.538,13.038C17.895,12.731 17.938,12.195 17.634,11.838ZM7.158,7.796C7.317,7.984 7.553,8.107 7.819,8.107C8.049,8.107 8.27,8.016 8.433,7.854C8.514,7.775 8.577,7.68 8.62,7.575C8.664,7.47 8.686,7.358 8.685,7.245V3.605C8.685,3.428 8.632,3.262 8.537,3.124C8.506,3.078 8.471,3.035 8.431,2.996C8.32,2.887 8.182,2.81 8.03,2.774C7.961,2.755 7.89,2.745 7.819,2.744C7.336,2.744 6.952,3.13 6.952,3.605V7.244C6.952,7.455 7.031,7.645 7.158,7.796ZM18.219,8.102C18.333,8.103 18.446,8.081 18.551,8.038C18.657,7.995 18.753,7.931 18.833,7.85C18.914,7.771 18.977,7.676 19.02,7.571C19.064,7.466 19.086,7.354 19.085,7.241V3.605C19.085,3.546 19.079,3.488 19.068,3.432C19.027,3.237 18.92,3.062 18.766,2.937C18.611,2.811 18.418,2.743 18.219,2.744C17.736,2.744 17.352,3.13 17.352,3.606V7.241C17.352,7.478 17.449,7.694 17.605,7.851C17.769,8.012 17.989,8.102 18.219,8.102Z"
|
||||
android:fillColor="#ABDA3F"/>
|
||||
<path
|
||||
android:pathData="M24.242,7.166C24.202,6.162 23.71,5.355 22.856,4.896C22.326,4.611 21.816,4.572 21.388,4.572H20.719C20.494,4.572 20.277,4.662 20.118,4.821C19.958,4.981 19.869,5.197 19.869,5.423C19.869,5.648 19.958,5.865 20.118,6.024C20.277,6.184 20.494,6.273 20.719,6.273C21.453,6.273 22.501,6.189 22.542,7.2C22.542,11.296 22.552,15.393 22.551,19.489V20.607C22.551,21.119 22.156,21.523 21.68,21.523H4.356C3.861,21.523 3.485,21.087 3.485,20.607V7.375V7.206C3.485,6.555 4.03,6.222 4.625,6.222H5.294C5.406,6.222 5.516,6.2 5.62,6.158C5.723,6.115 5.816,6.052 5.895,5.973C5.974,5.894 6.037,5.8 6.08,5.697C6.123,5.594 6.145,5.483 6.145,5.372C6.145,4.901 5.763,4.522 5.294,4.522H4.625C3.408,4.522 2.169,5.241 1.854,6.476C1.795,6.708 1.753,6.968 1.753,7.208V20.607C1.753,21.553 2.273,22.471 3.113,22.936C3.494,23.147 3.922,23.258 4.357,23.257H21.682C23.121,23.257 24.286,22.032 24.286,20.607L24.242,7.166Z"
|
||||
android:fillColor="#ABDA3F"/>
|
||||
<path
|
||||
android:pathData="M10.407,6.276H15.63C15.856,6.276 16.072,6.187 16.232,6.027C16.391,5.868 16.481,5.651 16.481,5.426C16.481,5.2 16.391,4.984 16.232,4.824C16.072,4.665 15.856,4.575 15.63,4.575H10.407C10.294,4.574 10.183,4.595 10.078,4.637C9.974,4.679 9.879,4.742 9.799,4.821C9.719,4.9 9.655,4.994 9.612,5.098C9.568,5.202 9.546,5.313 9.546,5.426C9.546,5.538 9.568,5.65 9.612,5.754C9.655,5.858 9.719,5.952 9.799,6.031C9.879,6.11 9.974,6.173 10.078,6.215C10.183,6.257 10.294,6.278 10.407,6.276Z"
|
||||
android:fillColor="#ABDA3F"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="28dp"
|
||||
android:height="35dp"
|
||||
android:viewportWidth="28"
|
||||
android:viewportHeight="35">
|
||||
<path
|
||||
android:pathData="M5,31.5a9.5,0.5 0,1 0,19 0a9.5,0.5 0,1 0,-19 0z"
|
||||
android:fillColor="#79BFFE"/>
|
||||
<path
|
||||
android:pathData="M20.028,15.448L23.818,19.238C24.003,19.422 24.106,19.673 24.106,19.934C24.106,20.195 24.002,20.445 23.817,20.63C23.633,20.815 23.382,20.918 23.121,20.918C22.86,20.918 22.61,20.814 22.425,20.629L20.317,18.521V24.583C20.317,24.844 20.213,25.094 20.028,25.279C19.844,25.463 19.594,25.567 19.333,25.567C19.072,25.567 18.821,25.463 18.637,25.279C18.452,25.094 18.348,24.844 18.348,24.583L18.347,18.521L16.239,20.629C16.053,20.808 15.804,20.906 15.547,20.904C15.289,20.901 15.043,20.798 14.861,20.616C14.678,20.434 14.575,20.187 14.572,19.93C14.57,19.672 14.668,19.423 14.847,19.238L18.635,15.448C18.727,15.356 18.835,15.284 18.955,15.234C19.074,15.185 19.202,15.159 19.332,15.159C19.461,15.159 19.589,15.185 19.709,15.234C19.828,15.284 19.937,15.356 20.028,15.448ZM20.945,2.981C22.154,2.981 23.132,3.961 23.132,5.168V12.715C23.132,12.976 23.028,13.226 22.844,13.411C22.659,13.596 22.409,13.699 22.148,13.699C21.887,13.699 21.637,13.596 21.452,13.411C21.267,13.226 21.164,12.976 21.164,12.715V5.169C21.164,5.14 21.158,5.112 21.147,5.085C21.137,5.058 21.121,5.034 21.1,5.014C21.08,4.993 21.056,4.977 21.029,4.966C21.003,4.955 20.974,4.949 20.945,4.949H6.618C6.589,4.949 6.56,4.955 6.534,4.966C6.507,4.976 6.483,4.992 6.462,5.013C6.442,5.033 6.426,5.057 6.415,5.084C6.404,5.11 6.398,5.139 6.398,5.168V22.176C6.398,22.297 6.496,22.395 6.618,22.395H12.796C13.057,22.395 13.307,22.498 13.492,22.683C13.677,22.868 13.78,23.118 13.78,23.379C13.78,23.64 13.677,23.89 13.492,24.075C13.307,24.259 13.057,24.363 12.796,24.363H6.618C5.41,24.363 4.43,23.383 4.43,22.176V5.166C4.43,3.958 5.41,2.979 6.618,2.979H20.944L20.945,2.981ZM11.375,15.997C11.636,15.997 11.886,16.1 12.071,16.285C12.255,16.469 12.359,16.72 12.359,16.981C12.359,17.242 12.255,17.492 12.071,17.677C11.886,17.861 11.636,17.965 11.375,17.965H9.132C8.871,17.965 8.621,17.861 8.436,17.677C8.252,17.492 8.148,17.242 8.148,16.981C8.148,16.72 8.252,16.469 8.436,16.285C8.621,16.1 8.871,15.997 9.132,15.997H11.375ZM16.953,12.087C17.214,12.087 17.464,12.19 17.649,12.375C17.833,12.559 17.937,12.81 17.937,13.071C17.937,13.332 17.833,13.582 17.649,13.767C17.464,13.951 17.214,14.055 16.953,14.055H9.132C8.871,14.055 8.621,13.951 8.436,13.767C8.252,13.582 8.148,13.332 8.148,13.071C8.148,12.81 8.252,12.559 8.436,12.375C8.621,12.19 8.871,12.087 9.132,12.087H16.953ZM16.953,8.176C17.214,8.176 17.464,8.28 17.649,8.465C17.833,8.649 17.937,8.899 17.937,9.16C17.937,9.422 17.833,9.672 17.649,9.856C17.464,10.041 17.214,10.145 16.953,10.145H9.132C8.871,10.145 8.621,10.041 8.436,9.856C8.252,9.672 8.148,9.422 8.148,9.16C8.148,8.899 8.252,8.649 8.436,8.465C8.621,8.28 8.871,8.176 9.132,8.176H16.953Z"
|
||||
android:fillColor="#79BFFE"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="13dp"
|
||||
android:height="11dp"
|
||||
android:viewportWidth="13"
|
||||
android:viewportHeight="11">
|
||||
<path
|
||||
android:pathData="M7.656,0.084C7.54,0.056 7.396,0 7.309,0C7.107,0 6.962,0.084 6.789,0.167L3.496,2.785H0.809C0.347,2.785 0,3.119 0,3.565V7.463C0,7.909 0.347,8.243 0.809,8.243H3.496L6.789,10.833C6.962,10.944 7.107,11 7.309,11C7.771,11 8.118,10.666 8.118,10.22V0.808C8.118,0.529 7.944,0.195 7.656,0.084ZM11.469,1.922C11.209,1.671 10.862,1.671 10.631,1.922C10.371,2.172 10.371,2.506 10.631,2.729C11.382,3.481 11.758,4.456 11.758,5.514C11.758,6.572 11.324,7.547 10.602,8.299C10.342,8.549 10.342,8.884 10.602,9.106C10.718,9.218 10.891,9.273 11.036,9.273C11.209,9.273 11.353,9.19 11.498,9.078C12.48,8.104 13,6.851 13,5.486C12.971,4.177 12.451,2.868 11.469,1.922Z"
|
||||
android:fillColor="#FD8194"/>
|
||||
</vector>
|
||||
|
|
@ -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 android:shape="oval">
|
||||
<gradient
|
||||
android:angle="360"
|
||||
android:endColor="@color/gray_E6ECFF"
|
||||
android:startColor="@color/white" />
|
||||
<corners android:radius="10dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="49dp"
|
||||
android:height="13dp"
|
||||
android:viewportWidth="49"
|
||||
android:viewportHeight="13">
|
||||
<path
|
||||
android:pathData="M12.078,5.292L11.988,5.976H3.096L3.186,5.292H0.108L4.518,0.486L4.122,0H11.808L15.156,5.292H12.078ZM10.494,12.96L10.26,12.51L0.738,12.96L0.99,11.286L4.104,8.55H0L0.234,6.84H14.598L14.364,8.55H7.848L4.968,11.088L9.396,10.854L8.748,9.576H11.826L13.572,12.96H10.494ZM4.464,4.266H11.088L9.468,1.71H6.804L4.464,4.266ZM18.774,1.008L18.198,0.342H31.86L31.248,4.788H18.252L18.774,1.008ZM31.482,5.472L30.78,10.44H28.818L27.504,9.414L27.828,7.182H20.988L20.664,9.414L19.062,10.44H17.1L17.802,5.472H31.482ZM26.19,7.866L25.992,9.252L30.78,12.96H25.938L23.814,11.34L21.258,12.96H16.416L22.248,9.252L22.446,7.866H26.19ZM28.062,3.078L28.206,2.052H22.05L21.906,3.078H28.062ZM47.682,3.222H41.886L41.652,4.95H48.114L47.88,6.66H41.4L40.536,12.906H37.134L37.998,6.66H33.264L33.498,4.95H38.25L38.844,0.666L38.25,0.036H42.336L42.138,1.494H47.934L47.682,3.222ZM46.17,11.574H43.182L42.03,7.47H45.018L46.17,11.574Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="22dp"
|
||||
android:height="22dp"
|
||||
android:viewportWidth="22"
|
||||
android:viewportHeight="22">
|
||||
<path
|
||||
android:pathData="M19.839,7.287C19.353,6.142 18.661,5.113 17.776,4.23C16.893,3.347 15.864,2.653 14.719,2.167C13.533,1.665 12.274,1.411 10.974,1.411C9.674,1.411 8.415,1.665 7.229,2.167C6.084,2.653 5.055,3.345 4.172,4.23C3.289,5.113 2.595,6.142 2.11,7.287C1.607,8.473 1.354,9.734 1.354,11.032C1.354,12.33 1.607,13.591 2.11,14.777C2.595,15.922 3.287,16.951 4.172,17.834C5.055,18.717 6.084,19.411 7.229,19.896C8.415,20.399 9.677,20.653 10.974,20.653C12.272,20.653 13.533,20.399 14.719,19.896C15.864,19.411 16.893,18.719 17.776,17.834C18.659,16.951 19.353,15.922 19.839,14.777C20.341,13.591 20.595,12.33 20.595,11.032C20.595,9.734 20.341,8.473 19.839,7.287ZM10.974,18.914C6.628,18.914 3.092,15.378 3.092,11.032C3.092,6.686 6.628,3.149 10.974,3.149C15.321,3.149 18.857,6.686 18.857,11.032C18.857,15.378 15.323,18.914 10.974,18.914Z"
|
||||
android:fillColor="#525C8E"/>
|
||||
<path
|
||||
android:pathData="M14.985,10.104H11.911V5.655C11.911,5.148 11.496,4.733 10.989,4.733C10.482,4.733 10.068,5.148 10.068,5.655V11.026C10.068,11.533 10.482,11.948 10.989,11.948H14.985C15.492,11.948 15.907,11.533 15.907,11.026C15.905,10.519 15.49,10.104 14.985,10.104Z"
|
||||
android:fillColor="#525C8E"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="16dp"
|
||||
android:height="14dp"
|
||||
android:viewportWidth="16"
|
||||
android:viewportHeight="14">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h16v14h-16z"/>
|
||||
<path
|
||||
android:pathData="M13.333,7.194C9.438,6.616 6.119,4.395 4.46,1.258L4,0.389V14L4.314,13.567C6.438,10.633 9.608,8.394 13.333,7.194Z"
|
||||
android:fillColor="#96C0FF"/>
|
||||
<path
|
||||
android:pathData="M11.115,8.061C11.828,7.731 12.569,7.441 13.333,7.194C12.531,7.075 11.754,6.887 11.01,6.635C8.786,5.881 6.865,4.561 5.5,2.845C5.105,2.348 4.756,1.818 4.46,1.258L4,0.389V14L4.314,13.567C4.68,13.063 5.076,12.579 5.5,12.117C7.038,10.445 8.949,9.065 11.115,8.061ZM9.353,7.429C8.635,7.814 7.945,8.241 7.281,8.709C6.651,9.155 6.057,9.629 5.5,10.133V4.926C6.007,5.398 6.556,5.833 7.147,6.229C7.84,6.692 8.575,7.092 9.353,7.429Z"
|
||||
android:fillColor="#121110"
|
||||
android:fillType="evenOdd"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:color="#BFD5D5D5" >
|
||||
<item>
|
||||
<shape android:shape="oval">
|
||||
<solid android:color="#FFFFFFFF"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -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="0"
|
||||
android:endColor="#FFD2E4FF"
|
||||
android:startColor="#FFD2E4FF" />
|
||||
<corners android:radius="16dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="135dp"
|
||||
android:height="84dp"
|
||||
android:viewportWidth="135"
|
||||
android:viewportHeight="84">
|
||||
<path
|
||||
android:pathData="M24.96,14.12C27.89,5.67 35.86,0 44.81,0H105.41C119.81,0 129.93,14.15 125.29,27.77L110.99,69.77C108.09,78.28 100.1,84 91.11,84H30.25C15.81,84 5.68,69.77 10.41,56.12L24.96,14.12Z"
|
||||
android:fillColor="#EEEEEE"/>
|
||||
<path
|
||||
android:pathData="M67.5,32.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#ffffff"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M58,23h20v20h-20z"/>
|
||||
<path
|
||||
android:pathData="M77.46,32.71L69.01,24.25C68.74,23.98 68.38,23.83 68,23.83C67.62,23.83 67.26,23.98 66.99,24.25L58.54,32.71C58.46,32.78 58.42,32.89 58.42,33C58.42,33.11 58.46,33.22 58.54,33.29C58.62,33.37 58.72,33.42 58.83,33.42C58.94,33.42 59.05,33.37 59.13,33.29L60.5,31.92V40.5C60.5,40.94 60.68,41.37 60.99,41.68C61.3,41.99 61.72,42.17 62.17,42.17H65.92C65.97,42.17 66.03,42.16 66.08,42.13C66.13,42.11 66.17,42.08 66.21,42.04C66.25,42.01 66.28,41.96 66.3,41.91C66.32,41.86 66.33,41.8 66.33,41.75V37.17C66.33,36.95 66.42,36.73 66.58,36.58C66.73,36.42 66.95,36.33 67.17,36.33H68.83C69.05,36.33 69.27,36.42 69.42,36.58C69.58,36.73 69.67,36.95 69.67,37.17V41.75C69.67,41.8 69.68,41.86 69.7,41.91C69.72,41.96 69.75,42.01 69.79,42.04C69.83,42.08 69.87,42.11 69.92,42.13C69.97,42.16 70.03,42.17 70.08,42.17H73.83C74.28,42.17 74.7,41.99 75.01,41.68C75.32,41.37 75.5,40.94 75.5,40.5V31.92L76.87,33.29C76.95,33.37 77.06,33.42 77.17,33.42C77.28,33.42 77.38,33.37 77.46,33.29C77.54,33.22 77.58,33.11 77.58,33C77.58,32.89 77.54,32.78 77.46,32.71Z"
|
||||
android:fillColor="#BEBEC3"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M50.95,67.15H58.09V67.94H50.95V67.15ZM50.95,69.27H58.09V70.05H50.95V69.27ZM50.95,71.43H58.13V72.3H50.95V71.43ZM48.7,62.87H60.34V63.78H48.7V62.87ZM50.18,64.99H58.83V73.04H57.81V65.86H51.16V73.04H50.18V64.99ZM54.02,63.34L55.22,63.43C55.09,63.81 54.96,64.2 54.81,64.59C54.67,64.97 54.54,65.3 54.42,65.58L53.49,65.43C53.56,65.24 53.62,65.01 53.69,64.77C53.76,64.52 53.82,64.27 53.88,64.02C53.94,63.77 53.98,63.54 54.02,63.34ZM57.13,61.05L58.21,61.34C57.96,61.69 57.71,62.03 57.44,62.38C57.17,62.73 56.92,63.03 56.7,63.28L55.85,62.99C56,62.81 56.15,62.61 56.31,62.38C56.46,62.15 56.61,61.93 56.75,61.7C56.9,61.47 57.02,61.25 57.13,61.05ZM50.96,61.4L51.82,61.03C52.06,61.26 52.3,61.53 52.52,61.82C52.76,62.11 52.94,62.36 53.06,62.58L52.16,63.04C52.05,62.82 51.87,62.55 51.64,62.25C51.41,61.94 51.19,61.66 50.96,61.4ZM61.96,61.79H73.15V62.71H61.96V61.79ZM66.97,62.26L68.07,62.43C67.91,62.82 67.73,63.22 67.54,63.63C67.35,64.04 67.17,64.38 66.99,64.67L66.14,64.5C66.24,64.29 66.34,64.06 66.45,63.8C66.55,63.53 66.65,63.26 66.75,62.99C66.84,62.72 66.92,62.48 66.97,62.26ZM67.03,65.99H68.03V68.36C68.03,68.72 67.99,69.07 67.9,69.43C67.82,69.78 67.67,70.13 67.45,70.47C67.22,70.8 66.9,71.12 66.47,71.43C66.05,71.74 65.49,72.03 64.8,72.3C64.11,72.57 63.26,72.81 62.25,73.04C62.21,72.97 62.16,72.89 62.09,72.79C62.02,72.7 61.95,72.6 61.87,72.49C61.8,72.39 61.73,72.31 61.65,72.25C62.62,72.06 63.43,71.84 64.07,71.61C64.72,71.38 65.24,71.12 65.63,70.86C66.03,70.59 66.33,70.31 66.53,70.04C66.73,69.76 66.87,69.48 66.93,69.19C67,68.91 67.03,68.62 67.03,68.35V65.99ZM68.08,70.57L68.66,69.91C69.03,70.07 69.42,70.25 69.83,70.45C70.24,70.65 70.65,70.86 71.06,71.08C71.47,71.29 71.85,71.51 72.21,71.73C72.56,71.93 72.86,72.13 73.12,72.3L72.5,73.08C72.27,72.9 71.98,72.7 71.63,72.48C71.29,72.26 70.91,72.04 70.5,71.82C70.1,71.59 69.68,71.37 69.27,71.15C68.86,70.94 68.47,70.74 68.08,70.57ZM63.22,64.26H71.91V70.31H70.88V65.18H64.22V70.34H63.22V64.26Z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="134dp"
|
||||
android:height="92dp"
|
||||
android:viewportWidth="134"
|
||||
android:viewportHeight="92">
|
||||
<path
|
||||
android:pathData="M24.21,14.12C27.14,5.67 35.11,0 44.06,0H104.66C119.06,0 129.18,14.15 124.54,27.77L110.24,69.77C107.34,78.28 99.35,84 90.36,84H29.5C15.06,84 4.93,69.77 9.66,56.12L24.21,14.12Z"
|
||||
android:strokeAlpha="0.79"
|
||||
android:fillAlpha="0.79">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="134"
|
||||
android:startY="42.2"
|
||||
android:endX="0"
|
||||
android:endY="41.8"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF9FD9F9"/>
|
||||
<item android:offset="1" android:color="#FF757EFF"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M66.75,31.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#EDFFFF"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M57.25,22h20v20h-20z"/>
|
||||
<path
|
||||
android:pathData="M76.71,31.7L68.26,23.25C67.99,22.98 67.63,22.83 67.25,22.83C66.87,22.83 66.51,22.98 66.24,23.25L57.79,31.7C57.71,31.78 57.67,31.89 57.67,32C57.67,32.11 57.71,32.22 57.79,32.29C57.87,32.37 57.97,32.42 58.08,32.42C58.19,32.42 58.3,32.37 58.38,32.29L59.75,30.92V39.5C59.75,39.94 59.93,40.37 60.24,40.68C60.55,40.99 60.97,41.17 61.42,41.17H65.17C65.22,41.17 65.28,41.16 65.33,41.13C65.38,41.11 65.42,41.08 65.46,41.04C65.5,41.01 65.53,40.96 65.55,40.91C65.57,40.86 65.58,40.8 65.58,40.75V36.17C65.58,35.95 65.67,35.73 65.83,35.58C65.98,35.42 66.2,35.33 66.42,35.33H68.08C68.3,35.33 68.52,35.42 68.67,35.58C68.83,35.73 68.92,35.95 68.92,36.17V40.75C68.92,40.8 68.93,40.86 68.95,40.91C68.97,40.96 69,41.01 69.04,41.04C69.08,41.08 69.12,41.11 69.17,41.13C69.22,41.16 69.28,41.17 69.33,41.17H73.08C73.53,41.17 73.95,40.99 74.26,40.68C74.57,40.37 74.75,39.94 74.75,39.5V30.92L76.12,32.29C76.2,32.37 76.31,32.42 76.42,32.42C76.53,32.42 76.63,32.37 76.71,32.29C76.79,32.22 76.83,32.11 76.83,32C76.83,31.89 76.79,31.78 76.71,31.7Z"
|
||||
android:fillColor="#69B3FF"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M50.2,67.15H57.34V67.94H50.2V67.15ZM50.2,69.27H57.34V70.05H50.2V69.27ZM50.2,71.43H57.38V72.3H50.2V71.43ZM47.95,62.87H59.59V63.78H47.95V62.87ZM49.43,64.99H58.08V73.04H57.06V65.86H50.41V73.04H49.43V64.99ZM53.27,63.34L54.47,63.43C54.34,63.81 54.21,64.2 54.06,64.59C53.92,64.97 53.79,65.3 53.67,65.58L52.74,65.43C52.81,65.24 52.87,65.01 52.94,64.77C53.01,64.52 53.07,64.27 53.13,64.02C53.19,63.77 53.23,63.54 53.27,63.34ZM56.38,61.05L57.46,61.34C57.21,61.69 56.96,62.03 56.69,62.38C56.42,62.73 56.17,63.03 55.95,63.28L55.1,62.99C55.25,62.81 55.4,62.61 55.56,62.38C55.71,62.15 55.86,61.93 56,61.7C56.15,61.47 56.27,61.25 56.38,61.05ZM50.21,61.4L51.07,61.03C51.31,61.26 51.55,61.53 51.77,61.82C52.01,62.11 52.19,62.36 52.31,62.58L51.41,63.04C51.3,62.82 51.12,62.55 50.89,62.25C50.66,61.94 50.44,61.66 50.21,61.4ZM61.21,61.79H72.4V62.71H61.21V61.79ZM66.22,62.26L67.32,62.43C67.16,62.82 66.98,63.22 66.79,63.63C66.6,64.04 66.42,64.38 66.24,64.67L65.39,64.5C65.49,64.29 65.59,64.06 65.7,63.8C65.8,63.53 65.9,63.26 66,62.99C66.09,62.72 66.17,62.48 66.22,62.26ZM66.28,65.99H67.28V68.36C67.28,68.72 67.24,69.07 67.15,69.43C67.07,69.78 66.92,70.13 66.7,70.47C66.47,70.8 66.15,71.12 65.72,71.43C65.3,71.74 64.74,72.03 64.05,72.3C63.36,72.57 62.51,72.81 61.5,73.04C61.46,72.97 61.41,72.89 61.34,72.79C61.27,72.7 61.2,72.6 61.12,72.49C61.05,72.39 60.98,72.31 60.9,72.25C61.87,72.06 62.68,71.84 63.32,71.61C63.97,71.38 64.49,71.12 64.88,70.86C65.28,70.59 65.58,70.31 65.78,70.04C65.98,69.76 66.12,69.48 66.18,69.19C66.25,68.91 66.28,68.62 66.28,68.35V65.99ZM67.33,70.57L67.91,69.91C68.28,70.07 68.67,70.25 69.08,70.45C69.49,70.65 69.9,70.86 70.31,71.08C70.72,71.29 71.1,71.51 71.46,71.73C71.81,71.93 72.11,72.13 72.37,72.3L71.75,73.08C71.52,72.9 71.23,72.7 70.88,72.48C70.54,72.26 70.16,72.04 69.75,71.82C69.35,71.59 68.93,71.37 68.52,71.15C68.11,70.94 67.72,70.74 67.33,70.57ZM62.47,64.26H71.16V70.31H70.13V65.18H63.47V70.34H62.47V64.26Z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_checkable="false" android:drawable="@drawable/yjl_home_page"/>
|
||||
<item android:state_checkable="true" android:drawable="@drawable/yjl_home_page_choose"/>
|
||||
|
||||
</selector>
|
||||
|
|
@ -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="0"
|
||||
android:endColor="#FFD2E4FF"
|
||||
android:startColor="#FFD2E4FF" />
|
||||
<corners android:radius="16dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:color="#BFD5D5D5" >
|
||||
<item>
|
||||
<shape>
|
||||
<gradient android:type="linear"
|
||||
android:angle="180"
|
||||
android:startColor="#FFF1F5FB"
|
||||
android:endColor="#FFF1F5FB"
|
||||
/>
|
||||
<corners android:radius="25dp"/>
|
||||
<stroke android:width="1dp" android:color="#4072FE"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="20"
|
||||
android:viewportHeight="20">
|
||||
<path
|
||||
android:pathData="M14.595,17.298C14.595,15.892 12.541,14.865 10,14.865C7.46,14.865 5.406,15.892 5.406,17.298C5.406,18.703 7.46,19.73 10,19.73C12.541,19.73 14.595,18.703 14.595,17.298ZM5.946,17.298C5.946,16.325 7.73,15.406 10,15.406C12.27,15.406 14.054,16.325 14.054,17.298C14.054,18.271 12.27,19.19 10,19.19C7.73,19.19 5.946,18.271 5.946,17.298Z"
|
||||
android:fillColor="#C4C3C0"/>
|
||||
<path
|
||||
android:pathData="M7.838,17.297C7.838,17.439 7.894,17.58 8.002,17.711C8.111,17.842 8.27,17.961 8.471,18.061C8.672,18.162 8.91,18.241 9.173,18.296C9.435,18.35 9.716,18.378 10,18.378C10.284,18.378 10.565,18.35 10.828,18.296C11.09,18.241 11.328,18.162 11.529,18.061C11.73,17.961 11.889,17.842 11.998,17.711C12.106,17.58 12.162,17.439 12.162,17.297C12.162,17.01 11.934,16.735 11.529,16.532C11.123,16.33 10.573,16.216 10,16.216C9.427,16.216 8.877,16.33 8.471,16.532C8.066,16.735 7.838,17.01 7.838,17.297Z"
|
||||
android:fillColor="#99999D"/>
|
||||
<path
|
||||
android:pathData="M10,10.811C10.324,10.811 10.541,11.027 10.541,11.351V16.757C10.541,17.081 10.324,17.297 10,17.297C9.676,17.297 9.459,17.081 9.459,16.757V11.351C9.459,11.027 9.676,10.811 10,10.811Z"
|
||||
android:fillColor="#23252E"/>
|
||||
<path
|
||||
android:pathData="M10,0C6.703,0 4.054,2.649 4.054,5.946C4.054,9.243 6.703,11.892 10,11.892C13.297,11.892 15.946,9.243 15.946,5.946C15.946,2.649 13.297,0 10,0ZM10,7.027C9.405,7.027 8.919,6.541 8.919,5.946C8.919,5.351 9.405,4.865 10,4.865C10.594,4.865 11.081,5.351 11.081,5.946C11.081,6.541 10.594,7.027 10,7.027Z"
|
||||
android:fillColor="#D81E06"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?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="0"
|
||||
android:endColor="#FF9AB1FD"
|
||||
android:startColor="#FFABD6FB" />
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="134dp"
|
||||
android:height="84dp"
|
||||
android:viewportWidth="134"
|
||||
android:viewportHeight="84">
|
||||
<path
|
||||
android:pathData="M24.21,14.12C27.14,5.67 35.11,0 44.06,0H104.66C119.06,0 129.18,14.15 124.54,27.77L110.24,69.77C107.34,78.28 99.35,84 90.36,84H29.5C15.06,84 4.93,69.77 9.66,56.12L24.21,14.12Z"
|
||||
android:strokeAlpha="0.79"
|
||||
android:fillColor="#EEEEEE"
|
||||
android:fillAlpha="0.79"/>
|
||||
<path
|
||||
android:pathData="M66.5,31.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M65.27,29.2C64.95,29.2 64.69,29.5 64.77,29.81C65.04,30.81 65.95,31.54 67.03,31.54C68.12,31.54 69.03,30.81 69.3,29.81C69.38,29.5 69.12,29.2 68.8,29.2H65.27ZM67.03,34.97C63.53,34.97 60.7,32.13 60.7,28.64C60.7,25.14 63.53,22.3 67.03,22.3C70.53,22.3 73.37,25.14 73.37,28.64C73.37,32.13 70.53,34.97 67.03,34.97ZM70.95,35.86C73.09,35.86 74.82,37.65 74.82,39.85C74.82,40.65 74.2,41.29 73.43,41.29H60.57C59.8,41.29 59.18,40.65 59.18,39.85C59.18,37.65 60.92,35.86 63.05,35.86H70.95Z"
|
||||
android:fillColor="#BEBEC3"/>
|
||||
</vector>
|
||||
|
|
@ -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="15dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -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="#FFFFCA3E"
|
||||
android:startColor="#FFFFCA3E" />
|
||||
<corners android:radius="30dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="134dp"
|
||||
android:height="84dp"
|
||||
android:viewportWidth="134"
|
||||
android:viewportHeight="84">
|
||||
<path
|
||||
android:pathData="M24.21,14.12C27.14,5.67 35.11,0 44.06,0H104.66C119.06,0 129.18,14.15 124.54,27.77L110.24,69.77C107.34,78.28 99.35,84 90.36,84H29.5C15.06,84 4.93,69.77 9.66,56.12L24.21,14.12Z"
|
||||
android:strokeAlpha="0.79"
|
||||
android:fillColor="#EEEEEE"
|
||||
android:fillAlpha="0.79"/>
|
||||
<path
|
||||
android:pathData="M66.5,31.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M65.27,29.2C64.95,29.2 64.69,29.5 64.77,29.81C65.04,30.81 65.95,31.54 67.03,31.54C68.12,31.54 69.03,30.81 69.3,29.81C69.38,29.5 69.12,29.2 68.8,29.2H65.27ZM67.03,34.97C63.53,34.97 60.7,32.13 60.7,28.64C60.7,25.14 63.53,22.3 67.03,22.3C70.53,22.3 73.37,25.14 73.37,28.64C73.37,32.13 70.53,34.97 67.03,34.97ZM70.95,35.86C73.09,35.86 74.82,37.65 74.82,39.85C74.82,40.65 74.2,41.29 73.43,41.29H60.57C59.8,41.29 59.18,40.65 59.18,39.85C59.18,37.65 60.92,35.86 63.05,35.86H70.95Z"
|
||||
android:fillColor="#BEBEC3"/>
|
||||
<path
|
||||
android:pathData="M47.45,62.13C47.18,62.54 46.85,62.97 46.45,63.42C46.05,63.87 45.6,64.32 45.11,64.77C44.62,65.21 44.1,65.64 43.55,66.06C43,66.47 42.44,66.85 41.86,67.19C41.81,67.11 41.76,67.03 41.69,66.93C41.62,66.83 41.55,66.73 41.47,66.64C41.39,66.55 41.31,66.47 41.23,66.4C41.82,66.07 42.4,65.69 42.96,65.27C43.53,64.84 44.06,64.39 44.55,63.91C45.05,63.44 45.5,62.96 45.9,62.48C46.3,62.01 46.62,61.55 46.88,61.12H47.9C48.26,61.62 48.66,62.12 49.11,62.61C49.57,63.1 50.06,63.57 50.58,64.02C51.11,64.47 51.65,64.88 52.19,65.27C52.75,65.64 53.29,65.96 53.83,66.23C53.7,66.35 53.58,66.49 53.47,66.66C53.35,66.81 53.25,66.96 53.17,67.11C52.63,66.8 52.09,66.45 51.54,66.06C51,65.66 50.47,65.24 49.96,64.8C49.45,64.35 48.97,63.9 48.54,63.45C48.12,62.99 47.75,62.55 47.45,62.13ZM46.94,65.37H47.97V73.04H46.94V65.37ZM59.82,61.48H60.92C60.9,61.82 60.87,62.27 60.83,62.82C60.78,63.38 60.7,64 60.58,64.71C60.47,65.4 60.29,66.12 60.04,66.88C59.8,67.63 59.48,68.38 59.07,69.11C58.66,69.85 58.14,70.55 57.51,71.21C56.89,71.87 56.12,72.44 55.22,72.92C55.14,72.8 55.03,72.67 54.88,72.53C54.74,72.39 54.58,72.27 54.43,72.17C55.32,71.71 56.07,71.17 56.68,70.56C57.28,69.94 57.78,69.28 58.17,68.58C58.56,67.88 58.87,67.17 59.08,66.46C59.3,65.74 59.46,65.06 59.56,64.41C59.67,63.76 59.73,63.18 59.76,62.68C59.79,62.17 59.82,61.77 59.82,61.48ZM60.86,61.74C60.87,61.89 60.89,62.15 60.92,62.51C60.95,62.87 61.01,63.3 61.1,63.81C61.18,64.32 61.31,64.88 61.47,65.47C61.64,66.07 61.86,66.69 62.14,67.32C62.42,67.95 62.76,68.57 63.17,69.17C63.57,69.76 64.06,70.32 64.63,70.83C65.21,71.33 65.88,71.76 66.65,72.1C66.5,72.22 66.36,72.35 66.22,72.49C66.09,72.65 65.98,72.79 65.89,72.92C65.11,72.55 64.43,72.1 63.83,71.56C63.24,71.01 62.73,70.42 62.31,69.79C61.89,69.15 61.54,68.49 61.25,67.83C60.98,67.16 60.75,66.51 60.58,65.88C60.4,65.24 60.27,64.64 60.19,64.1C60.1,63.54 60.04,63.07 60.01,62.68C59.97,62.28 59.95,61.99 59.94,61.82L60.86,61.74ZM68.25,63.41H78.73V69.52H77.72V64.36H69.22V69.58H68.25V63.41ZM68.77,67.81H78.31V68.78H68.77V67.81ZM72.95,61.08H73.98V73.03H72.95V61.08ZM83.96,64.71H84.97V71.25C84.97,71.55 85.02,71.74 85.12,71.83C85.23,71.92 85.47,71.96 85.82,71.96C85.91,71.96 86.06,71.96 86.28,71.96C86.5,71.96 86.73,71.96 86.99,71.96C87.25,71.96 87.5,71.96 87.72,71.96C87.95,71.96 88.12,71.96 88.23,71.96C88.49,71.96 88.68,71.89 88.81,71.75C88.94,71.61 89.04,71.35 89.09,70.96C89.15,70.56 89.2,69.99 89.23,69.24C89.35,69.33 89.5,69.42 89.67,69.5C89.85,69.59 90.01,69.65 90.15,69.69C90.1,70.5 90.02,71.14 89.91,71.61C89.8,72.07 89.62,72.39 89.37,72.58C89.12,72.78 88.76,72.87 88.28,72.87C88.22,72.87 88.1,72.87 87.93,72.87C87.76,72.87 87.56,72.87 87.33,72.87C87.12,72.87 86.89,72.87 86.67,72.87C86.44,72.87 86.25,72.87 86.08,72.87C85.92,72.87 85.81,72.87 85.75,72.87C85.29,72.87 84.93,72.82 84.67,72.73C84.41,72.63 84.22,72.46 84.12,72.22C84.02,71.99 83.96,71.66 83.96,71.23V64.71ZM84.07,61.89L84.68,61.13C85.2,61.31 85.74,61.53 86.31,61.78C86.87,62.03 87.4,62.29 87.89,62.56C88.39,62.82 88.82,63.07 89.17,63.3L88.53,64.16C88.2,63.91 87.78,63.65 87.28,63.37C86.79,63.09 86.26,62.82 85.69,62.56C85.14,62.29 84.6,62.07 84.07,61.89ZM81.78,65.76L82.73,65.96C82.67,66.54 82.57,67.14 82.44,67.76C82.32,68.39 82.16,68.98 81.96,69.54C81.76,70.11 81.51,70.6 81.2,71.01L80.31,70.49C80.61,70.1 80.85,69.65 81.04,69.13C81.24,68.61 81.4,68.06 81.52,67.48C81.64,66.9 81.73,66.32 81.78,65.76ZM89.37,65.76L90.24,65.33C90.63,65.82 90.99,66.36 91.32,66.93C91.66,67.5 91.95,68.07 92.18,68.63C92.42,69.19 92.6,69.7 92.7,70.17L91.74,70.62C91.64,70.16 91.48,69.65 91.25,69.09C91.01,68.52 90.73,67.95 90.4,67.37C90.08,66.79 89.74,66.25 89.37,65.76Z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="134dp"
|
||||
android:height="92dp"
|
||||
android:viewportWidth="134"
|
||||
android:viewportHeight="92">
|
||||
<path
|
||||
android:pathData="M24.21,14.12C27.14,5.67 35.11,0 44.06,0H104.66C119.06,0 129.18,14.15 124.54,27.77L110.24,69.77C107.34,78.28 99.35,84 90.36,84H29.5C15.06,84 4.93,69.77 9.66,56.12L24.21,14.12Z"
|
||||
android:strokeAlpha="0.79"
|
||||
android:fillAlpha="0.79">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="134"
|
||||
android:startY="42.2"
|
||||
android:endX="0"
|
||||
android:endY="41.8"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF9FD9F9"/>
|
||||
<item android:offset="1" android:color="#FF757EFF"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M66.5,30.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#EDFFFF"/>
|
||||
<path
|
||||
android:pathData="M65.27,28.2C64.95,28.2 64.69,28.5 64.77,28.81C65.04,29.81 65.95,30.54 67.03,30.54C68.12,30.54 69.03,29.81 69.3,28.81C69.38,28.5 69.12,28.2 68.8,28.2H65.27ZM67.03,33.97C63.53,33.97 60.7,31.13 60.7,27.64C60.7,24.14 63.53,21.3 67.03,21.3C70.53,21.3 73.37,24.14 73.37,27.64C73.37,31.13 70.53,33.97 67.03,33.97ZM70.95,34.86C73.09,34.86 74.82,36.65 74.82,38.85C74.82,39.65 74.2,40.29 73.43,40.29H60.57C59.8,40.29 59.18,39.65 59.18,38.85C59.18,36.65 60.92,34.86 63.05,34.86H70.95Z"
|
||||
android:fillColor="#69B3FF"/>
|
||||
<path
|
||||
android:pathData="M47.45,62.13C47.18,62.54 46.85,62.97 46.45,63.42C46.05,63.87 45.6,64.32 45.11,64.77C44.62,65.21 44.1,65.64 43.55,66.06C43,66.47 42.44,66.85 41.86,67.19C41.81,67.11 41.76,67.03 41.69,66.93C41.62,66.83 41.55,66.73 41.47,66.64C41.39,66.55 41.31,66.47 41.23,66.4C41.82,66.07 42.4,65.69 42.96,65.27C43.53,64.84 44.06,64.39 44.55,63.91C45.05,63.44 45.5,62.96 45.9,62.48C46.3,62.01 46.62,61.55 46.88,61.12H47.9C48.26,61.62 48.66,62.12 49.11,62.61C49.57,63.1 50.06,63.57 50.58,64.02C51.11,64.47 51.65,64.88 52.19,65.27C52.75,65.64 53.29,65.96 53.83,66.23C53.7,66.35 53.58,66.49 53.47,66.66C53.35,66.81 53.25,66.96 53.17,67.11C52.63,66.8 52.09,66.45 51.54,66.06C51,65.66 50.47,65.24 49.96,64.8C49.45,64.35 48.97,63.9 48.54,63.45C48.12,62.99 47.75,62.55 47.45,62.13ZM46.94,65.37H47.97V73.04H46.94V65.37ZM59.82,61.48H60.92C60.9,61.82 60.87,62.27 60.83,62.82C60.78,63.38 60.7,64 60.58,64.71C60.47,65.4 60.29,66.12 60.04,66.88C59.8,67.63 59.48,68.38 59.07,69.11C58.66,69.85 58.14,70.55 57.51,71.21C56.89,71.87 56.12,72.44 55.22,72.92C55.14,72.8 55.03,72.67 54.88,72.53C54.74,72.39 54.58,72.27 54.43,72.17C55.32,71.71 56.07,71.17 56.68,70.56C57.28,69.94 57.78,69.28 58.17,68.58C58.56,67.88 58.87,67.17 59.08,66.46C59.3,65.74 59.46,65.06 59.56,64.41C59.67,63.76 59.73,63.18 59.76,62.68C59.79,62.17 59.82,61.77 59.82,61.48ZM60.86,61.74C60.87,61.89 60.89,62.15 60.92,62.51C60.95,62.87 61.01,63.3 61.1,63.81C61.18,64.32 61.31,64.88 61.47,65.47C61.64,66.07 61.86,66.69 62.14,67.32C62.42,67.95 62.76,68.57 63.17,69.17C63.57,69.76 64.06,70.32 64.63,70.83C65.21,71.33 65.88,71.76 66.65,72.1C66.5,72.22 66.36,72.35 66.22,72.49C66.09,72.65 65.98,72.79 65.89,72.92C65.11,72.55 64.43,72.1 63.83,71.56C63.24,71.01 62.73,70.42 62.31,69.79C61.89,69.15 61.54,68.49 61.25,67.83C60.98,67.16 60.75,66.51 60.58,65.88C60.4,65.24 60.27,64.64 60.19,64.1C60.1,63.54 60.04,63.07 60.01,62.68C59.97,62.28 59.95,61.99 59.94,61.82L60.86,61.74ZM68.25,63.41H78.73V69.52H77.72V64.36H69.22V69.58H68.25V63.41ZM68.77,67.81H78.31V68.78H68.77V67.81ZM72.95,61.08H73.98V73.03H72.95V61.08ZM83.96,64.71H84.97V71.25C84.97,71.55 85.02,71.74 85.12,71.83C85.23,71.92 85.47,71.96 85.82,71.96C85.91,71.96 86.06,71.96 86.28,71.96C86.5,71.96 86.73,71.96 86.99,71.96C87.25,71.96 87.5,71.96 87.72,71.96C87.95,71.96 88.12,71.96 88.23,71.96C88.49,71.96 88.68,71.89 88.81,71.75C88.94,71.61 89.04,71.35 89.09,70.96C89.15,70.56 89.2,69.99 89.23,69.24C89.35,69.33 89.5,69.42 89.67,69.5C89.85,69.59 90.01,69.65 90.15,69.69C90.1,70.5 90.02,71.14 89.91,71.61C89.8,72.07 89.62,72.39 89.37,72.58C89.12,72.78 88.76,72.87 88.28,72.87C88.22,72.87 88.1,72.87 87.93,72.87C87.76,72.87 87.56,72.87 87.33,72.87C87.12,72.87 86.89,72.87 86.67,72.87C86.44,72.87 86.25,72.87 86.08,72.87C85.92,72.87 85.81,72.87 85.75,72.87C85.29,72.87 84.93,72.82 84.67,72.73C84.41,72.63 84.22,72.46 84.12,72.22C84.02,71.99 83.96,71.66 83.96,71.23V64.71ZM84.07,61.89L84.68,61.13C85.2,61.31 85.74,61.53 86.31,61.78C86.87,62.03 87.4,62.29 87.89,62.56C88.39,62.82 88.82,63.07 89.17,63.3L88.53,64.16C88.2,63.91 87.78,63.65 87.28,63.37C86.79,63.09 86.26,62.82 85.69,62.56C85.14,62.29 84.6,62.07 84.07,61.89ZM81.78,65.76L82.73,65.96C82.67,66.54 82.57,67.14 82.44,67.76C82.32,68.39 82.16,68.98 81.96,69.54C81.76,70.11 81.51,70.6 81.2,71.01L80.31,70.49C80.61,70.1 80.85,69.65 81.04,69.13C81.24,68.61 81.4,68.06 81.52,67.48C81.64,66.9 81.73,66.32 81.78,65.76ZM89.37,65.76L90.24,65.33C90.63,65.82 90.99,66.36 91.32,66.93C91.66,67.5 91.95,68.07 92.18,68.63C92.42,69.19 92.6,69.7 92.7,70.17L91.74,70.62C91.64,70.16 91.48,69.65 91.25,69.09C91.01,68.52 90.73,67.95 90.4,67.37C90.08,66.79 89.74,66.25 89.37,65.76Z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/yjl_user_page" android:state_checkable="false" />
|
||||
<item android:drawable="@drawable/yjl_user_page_choose" android:state_checkable="true" />
|
||||
|
||||
</selector>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="34dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="34"
|
||||
android:viewportHeight="24">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,20.833C11.509,25.613 22.8,24.459 34,20.833V5.419C34,2.426 33.379,0 32.612,0H1.388C0.621,0 0,2.426 0,5.419V20.833Z"/>
|
||||
<path
|
||||
android:pathData="M29,9.08V8.58C29,8.508 28.93,8.435 28.93,8.22C28.719,7.573 28.153,7.138 27.52,7.21C26.817,7.282 26.19,7.929 26.26,8.72C26.33,9.079 26.469,9.444 26.75,9.66L26.54,9.8C25.205,10.59 23.935,11.449 22.6,12.24C22.319,12.455 22.181,12.389 21.97,12.03C21.126,10.521 20.284,8.941 19.44,7.36C19.089,6.857 18.811,6.275 18.53,5.7C19.444,5.053 19.652,4.199 19.09,3.48L19.02,3.4C18.458,2.897 17.612,2.825 17.05,3.4C16.769,3.687 16.63,4.049 16.63,4.48C16.63,5.055 16.978,5.564 17.47,5.78C16.275,8.008 15.155,10.164 13.96,12.32L13.89,12.39C13.82,12.533 13.611,12.604 13.47,12.46C13.119,12.244 12.691,11.955 12.34,11.74C11.356,11.165 10.374,10.517 9.32,9.87C9.39,9.798 9.39,9.73 9.46,9.73C9.811,9.299 9.881,8.653 9.6,8.15C9.459,7.791 9.181,7.574 8.83,7.43C8.057,7.214 7.281,7.641 7.07,8.36L7,8.58V9.08C7.07,9.224 7.14,9.294 7.21,9.51C7.491,9.941 7.988,10.23 8.55,10.23C8.691,10.877 8.899,11.455 9.04,12.03C9.602,14.258 10.237,16.414 10.87,18.57C10.94,18.929 11.079,19 11.43,19H24.57C24.921,19 25.06,18.929 25.13,18.57L27.45,10.52C27.45,10.376 27.52,10.302 27.52,10.23C28.293,10.23 28.789,9.799 29,9.08Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M22.58,12.34C22.298,12.557 22.162,12.482 21.95,12.12C21.104,10.6 20.256,9.013 19.41,7.42C19.057,6.913 18.772,6.329 18.49,5.75C19.407,5.098 19.624,4.234 19.06,3.51L18.99,3.43C18.637,3.068 18.212,3 18,3V19H24.56C24.913,19 25.049,18.932 25.12,18.57L27.45,10.46C27.45,10.315 27.52,10.242 27.52,10.17C28.296,10.17 28.788,9.734 29,9.01V8.5C29,8.428 28.93,8.362 28.93,8.29C28.719,7.638 28.155,7.198 27.52,7.27C26.815,7.342 26.18,7.994 26.25,8.79C26.32,9.152 26.458,9.513 26.74,9.73L26.53,9.88C25.19,10.676 23.92,11.544 22.58,12.34Z"
|
||||
android:fillColor="#C8C8C8"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="134dp"
|
||||
android:height="84dp"
|
||||
android:viewportWidth="134"
|
||||
android:viewportHeight="84">
|
||||
<path
|
||||
android:pathData="M24.21,14.12C27.14,5.67 35.11,0 44.06,0H104.66C119.06,0 129.18,14.15 124.54,27.77L110.24,69.77C107.34,78.28 99.35,84 90.36,84H29.5C15.06,84 4.93,69.77 9.66,56.12L24.21,14.12Z"
|
||||
android:strokeAlpha="0.79"
|
||||
android:fillColor="#EEEEEE"
|
||||
android:fillAlpha="0.79"/>
|
||||
<path
|
||||
android:pathData="M66.5,32.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M76,32.5C76,37.75 71.75,42 66.5,42C61.25,42 57,37.75 57,32.5C57,27.25 61.25,23 66.5,23C71.75,23 76,27.25 76,32.5ZM69.16,33.89H67.09V32.94H69.16C69.51,32.94 69.75,32.71 69.75,32.35C69.75,32 69.51,31.76 69.16,31.76H67.09V31.33L69.37,29.05C69.61,28.81 69.61,28.46 69.37,28.22C69.14,27.99 68.78,27.99 68.55,28.22L66.48,30.29L64.42,28.22C64.18,27.99 63.83,27.99 63.59,28.22C63.35,28.46 63.35,28.81 63.59,29.05L65.91,31.37V31.76H63.84C63.49,31.76 63.25,32 63.25,32.35C63.25,32.71 63.49,32.94 63.84,32.94H65.91V33.89H63.84C63.49,33.89 63.25,34.12 63.25,34.48C63.25,34.83 63.49,35.07 63.84,35.07H65.91V36.36C65.91,36.72 66.15,36.95 66.5,36.95C66.74,36.95 66.97,36.72 67.09,36.36V35.07H69.16C69.51,35.07 69.75,34.83 69.75,34.48C69.75,34.12 69.51,33.89 69.16,33.89Z"
|
||||
android:fillColor="#BEBEC3"/>
|
||||
<path
|
||||
android:pathData="M61.67,67.45H62.65V71.54C62.65,71.74 62.68,71.87 62.75,71.93C62.83,71.99 62.99,72.01 63.24,72.01C63.3,72.01 63.41,72.01 63.56,72.01C63.7,72.01 63.87,72.01 64.05,72.01C64.24,72.01 64.41,72.01 64.57,72.01C64.72,72.01 64.84,72.01 64.92,72.01C65.1,72.01 65.24,71.96 65.32,71.86C65.41,71.75 65.47,71.54 65.5,71.22C65.54,70.9 65.57,70.41 65.58,69.76C65.65,69.82 65.74,69.87 65.84,69.93C65.96,69.99 66.07,70.03 66.18,70.08C66.29,70.11 66.39,70.15 66.48,70.18C66.45,70.91 66.39,71.48 66.3,71.88C66.21,72.28 66.06,72.56 65.86,72.71C65.66,72.87 65.37,72.95 65,72.95C64.94,72.95 64.82,72.95 64.65,72.95C64.47,72.95 64.28,72.95 64.06,72.95C63.85,72.95 63.66,72.95 63.49,72.95C63.32,72.95 63.2,72.95 63.14,72.95C62.75,72.95 62.45,72.91 62.23,72.82C62.02,72.74 61.87,72.6 61.79,72.39C61.71,72.19 61.67,71.91 61.67,71.54V67.45ZM58.3,67.53H59.32C59.26,68.23 59.17,68.87 59.03,69.45C58.9,70.03 58.68,70.55 58.38,71C58.09,71.45 57.68,71.84 57.16,72.18C56.64,72.52 55.97,72.8 55.14,73.03C55.11,72.94 55.06,72.85 54.99,72.74C54.93,72.64 54.86,72.53 54.78,72.43C54.71,72.33 54.64,72.26 54.56,72.19C55.32,72 55.94,71.77 56.4,71.49C56.88,71.21 57.25,70.87 57.5,70.49C57.76,70.11 57.94,69.67 58.06,69.18C58.17,68.68 58.25,68.13 58.3,67.53ZM61.76,64.41L62.54,63.91C62.97,64.23 63.42,64.59 63.87,64.99C64.32,65.39 64.74,65.79 65.13,66.19C65.52,66.59 65.83,66.95 66.06,67.28L65.21,67.85C64.99,67.51 64.69,67.14 64.31,66.74C63.94,66.33 63.52,65.92 63.07,65.51C62.63,65.11 62.19,64.74 61.76,64.41ZM58.71,63.16L59.75,63.49C59.56,63.86 59.36,64.25 59.15,64.65C58.94,65.06 58.73,65.45 58.51,65.82C58.29,66.19 58.09,66.51 57.9,66.8L57.09,66.5C57.28,66.21 57.47,65.86 57.67,65.47C57.87,65.08 58.07,64.69 58.25,64.28C58.43,63.87 58.58,63.5 58.71,63.16ZM55.27,66.19C56.04,66.17 56.93,66.15 57.95,66.12C58.98,66.09 60.08,66.05 61.23,66.02C62.39,65.98 63.54,65.93 64.69,65.89L64.65,66.77C63.53,66.83 62.4,66.89 61.25,66.94C60.12,67 59.04,67.04 58.02,67.09C57,67.13 56.1,67.16 55.31,67.19L55.27,66.19ZM54.87,62.65H66.17V63.58H54.87V62.65ZM59.98,61.08H60.97V63.16H59.98V61.08ZM71.28,62.41H79.06V63.28H71.28V62.41ZM70.72,71.82H79.45V72.66H70.72V71.82ZM71.97,64.49H78.3V72.05H77.39V65.25H72.85V72.05H71.97V64.49ZM72.58,66.35H77.6V67.07H72.58V66.35ZM72.56,68.19H77.79V68.89H72.56V68.19ZM72.56,70.02H77.62V70.74H72.56V70.02ZM74.79,61.08L75.83,61.15C75.76,61.55 75.68,61.99 75.58,62.44C75.48,62.9 75.39,63.33 75.29,63.74C75.2,64.15 75.1,64.51 75.01,64.81L74.16,64.72C74.24,64.41 74.32,64.04 74.4,63.6C74.48,63.17 74.56,62.73 74.63,62.29C74.7,61.85 74.75,61.44 74.79,61.08ZM70.43,61.09L71.33,61.38C71.06,62.11 70.75,62.83 70.39,63.55C70.05,64.26 69.67,64.93 69.25,65.57C68.83,66.2 68.4,66.76 67.96,67.25C67.93,67.18 67.88,67.08 67.81,66.96C67.75,66.83 67.68,66.71 67.61,66.59C67.54,66.46 67.48,66.36 67.42,66.28C67.81,65.86 68.2,65.37 68.57,64.81C68.95,64.26 69.29,63.66 69.61,63.03C69.93,62.4 70.21,61.75 70.43,61.09ZM69.07,64.5L69.96,63.58L69.98,63.59V73.04H69.07V64.5Z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="134dp"
|
||||
android:height="92dp"
|
||||
android:viewportWidth="134"
|
||||
android:viewportHeight="92">
|
||||
<path
|
||||
android:pathData="M24.21,14.12C27.14,5.67 35.11,0 44.06,0H104.66C119.06,0 129.18,14.15 124.54,27.77L110.24,69.77C107.34,78.28 99.35,84 90.36,84H29.5C15.06,84 4.93,69.77 9.66,56.12L24.21,14.12Z"
|
||||
android:strokeAlpha="0.79"
|
||||
android:fillAlpha="0.79">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="134"
|
||||
android:startY="42.2"
|
||||
android:endX="0"
|
||||
android:endY="41.8"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF9FD9F9"/>
|
||||
<item android:offset="1" android:color="#FF757EFF"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M66.5,31.5m-19.5,0a19.5,19.5 0,1 1,39 0a19.5,19.5 0,1 1,-39 0"
|
||||
android:fillColor="#EDFFFF"/>
|
||||
<path
|
||||
android:pathData="M76,31.5C76,36.75 71.75,41 66.5,41C61.25,41 57,36.75 57,31.5C57,26.25 61.25,22 66.5,22C71.75,22 76,26.25 76,31.5ZM69.16,32.89H67.09V31.94H69.16C69.51,31.94 69.75,31.71 69.75,31.35C69.75,31 69.51,30.76 69.16,30.76H67.09V30.33L69.37,28.05C69.61,27.81 69.61,27.46 69.37,27.22C69.14,26.99 68.78,26.99 68.55,27.22L66.48,29.29L64.42,27.22C64.18,26.99 63.83,26.99 63.59,27.22C63.35,27.46 63.35,27.81 63.59,28.05L65.91,30.37V30.76H63.84C63.49,30.76 63.25,31 63.25,31.35C63.25,31.71 63.49,31.94 63.84,31.94H65.91V32.89H63.84C63.49,32.89 63.25,33.12 63.25,33.48C63.25,33.83 63.49,34.07 63.84,34.07H65.91V35.36C65.91,35.72 66.15,35.95 66.5,35.95C66.74,35.95 66.97,35.72 67.09,35.36V34.07H69.16C69.51,34.07 69.75,33.83 69.75,33.48C69.75,33.12 69.51,32.89 69.16,32.89Z"
|
||||
android:fillColor="#69B3FF"/>
|
||||
<path
|
||||
android:pathData="M61.67,67.45H62.65V71.54C62.65,71.74 62.68,71.87 62.75,71.93C62.83,71.99 62.99,72.01 63.24,72.01C63.3,72.01 63.41,72.01 63.56,72.01C63.7,72.01 63.87,72.01 64.05,72.01C64.24,72.01 64.41,72.01 64.57,72.01C64.72,72.01 64.84,72.01 64.92,72.01C65.1,72.01 65.24,71.96 65.32,71.86C65.41,71.75 65.47,71.54 65.5,71.22C65.54,70.9 65.57,70.41 65.58,69.76C65.65,69.82 65.74,69.87 65.84,69.93C65.96,69.99 66.07,70.03 66.18,70.08C66.29,70.11 66.39,70.15 66.48,70.18C66.45,70.91 66.39,71.48 66.3,71.88C66.21,72.28 66.06,72.56 65.86,72.71C65.66,72.87 65.37,72.95 65,72.95C64.94,72.95 64.82,72.95 64.65,72.95C64.47,72.95 64.28,72.95 64.06,72.95C63.85,72.95 63.66,72.95 63.49,72.95C63.32,72.95 63.2,72.95 63.14,72.95C62.75,72.95 62.45,72.91 62.23,72.82C62.02,72.74 61.87,72.6 61.79,72.39C61.71,72.19 61.67,71.91 61.67,71.54V67.45ZM58.3,67.53H59.32C59.26,68.23 59.17,68.87 59.03,69.45C58.9,70.03 58.68,70.55 58.38,71C58.09,71.45 57.68,71.84 57.16,72.18C56.64,72.52 55.97,72.8 55.14,73.03C55.11,72.94 55.06,72.85 54.99,72.74C54.93,72.64 54.86,72.53 54.78,72.43C54.71,72.33 54.64,72.26 54.56,72.19C55.32,72 55.94,71.77 56.4,71.49C56.88,71.21 57.25,70.87 57.5,70.49C57.76,70.11 57.94,69.67 58.06,69.18C58.17,68.68 58.25,68.13 58.3,67.53ZM61.76,64.41L62.54,63.91C62.97,64.23 63.42,64.59 63.87,64.99C64.32,65.39 64.74,65.79 65.13,66.19C65.52,66.59 65.83,66.95 66.06,67.28L65.21,67.85C64.99,67.51 64.69,67.14 64.31,66.74C63.94,66.33 63.52,65.92 63.07,65.51C62.63,65.11 62.19,64.74 61.76,64.41ZM58.71,63.16L59.75,63.49C59.56,63.86 59.36,64.25 59.15,64.65C58.94,65.06 58.73,65.45 58.51,65.82C58.29,66.19 58.09,66.51 57.9,66.8L57.09,66.5C57.28,66.21 57.47,65.86 57.67,65.47C57.87,65.08 58.07,64.69 58.25,64.28C58.43,63.87 58.58,63.5 58.71,63.16ZM55.27,66.19C56.04,66.17 56.93,66.15 57.95,66.12C58.98,66.09 60.08,66.05 61.23,66.02C62.39,65.98 63.54,65.93 64.69,65.89L64.65,66.77C63.53,66.83 62.4,66.89 61.25,66.94C60.12,67 59.04,67.04 58.02,67.09C57,67.13 56.1,67.16 55.31,67.19L55.27,66.19ZM54.87,62.65H66.17V63.58H54.87V62.65ZM59.98,61.08H60.97V63.16H59.98V61.08ZM71.28,62.41H79.06V63.28H71.28V62.41ZM70.72,71.82H79.45V72.66H70.72V71.82ZM71.97,64.49H78.3V72.05H77.39V65.25H72.85V72.05H71.97V64.49ZM72.58,66.35H77.6V67.07H72.58V66.35ZM72.56,68.19H77.79V68.89H72.56V68.19ZM72.56,70.02H77.62V70.74H72.56V70.02ZM74.79,61.08L75.83,61.15C75.76,61.55 75.68,61.99 75.58,62.44C75.48,62.9 75.39,63.33 75.29,63.74C75.2,64.15 75.1,64.51 75.01,64.81L74.16,64.72C74.24,64.41 74.32,64.04 74.4,63.6C74.48,63.17 74.56,62.73 74.63,62.29C74.7,61.85 74.75,61.44 74.79,61.08ZM70.43,61.09L71.33,61.38C71.06,62.11 70.75,62.83 70.39,63.55C70.05,64.26 69.67,64.93 69.25,65.57C68.83,66.2 68.4,66.76 67.96,67.25C67.93,67.18 67.88,67.08 67.81,66.96C67.75,66.83 67.68,66.71 67.61,66.59C67.54,66.46 67.48,66.36 67.42,66.28C67.81,65.86 68.2,65.37 68.57,64.81C68.95,64.26 69.29,63.66 69.61,63.03C69.93,62.4 70.21,61.75 70.43,61.09ZM69.07,64.5L69.96,63.58L69.98,63.59V73.04H69.07V64.5Z"
|
||||
android:fillColor="#000000"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/yjl_vip_page" android:state_checkable="false" />
|
||||
<item android:drawable="@drawable/yjl_vip_page_choose" android:state_checkable="true" />
|
||||
|
||||
</selector>
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
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="#6FA2FA"
|
||||
android:orientation="vertical"
|
||||
|
||||
>
|
||||
|
|
@ -14,175 +15,195 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginStart="37dp"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiBack"
|
||||
android:id="@+id/dogHead"
|
||||
android:layout_width="166dp"
|
||||
android:layout_height="166dp"
|
||||
android:src="@mipmap/login_earth_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginEnd="16dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_welcome_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_mode_back"
|
||||
android:padding="5dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:text="@string/HelloWelcomeBinder"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="90dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
/>
|
||||
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_marginStart="40dp"
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="54dp"
|
||||
android:text="@string/BindAccount"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
android:id="@+id/tv_account"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_username_title_text_top_margin"
|
||||
android:text="@string/phone_number"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="13sp"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/llPhoneNumber"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_username">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_phone_number"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/username_input_error1"
|
||||
android:inputType="textPersonName"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sms"
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_pwd_title_text_top_margin"
|
||||
android:text="@string/sms_code"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="13sp"
|
||||
/>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llSmS"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_sms">
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/yjl_login_bg"
|
||||
android:layout_marginTop="13dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/clSms"
|
||||
app:layout_constraintEnd_toStartOf="@+id/clSms"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/clSms">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_sms_code"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/sixVC"
|
||||
android:inputType="number"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clSms"
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/fw_sms_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginTop="24dp"
|
||||
android:text="@string/BindAccount"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_goneMarginStart="28dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sms_code"
|
||||
<TextView
|
||||
android:id="@+id/tv_account"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="28dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/phone_number"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title"
|
||||
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/llPhoneNumber"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_account"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_account">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_phone_number"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/username_input_error1"
|
||||
android:inputType="textPersonName"
|
||||
android:maxLines="1"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sms"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/sms_code"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/llPhoneNumber"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llPhoneNumber" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llSmS"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_account"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_sms"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="8dp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/clSms"
|
||||
app:layout_constraintEnd_toStartOf="@+id/clSms"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/clSms">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_sms_code"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/sixVC"
|
||||
android:inputType="number"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clSms"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:padding="5dp"
|
||||
android:text="@string/send_sms_code"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sms_code"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:padding="5dp"
|
||||
android:text="@string/send_sms_code"
|
||||
android:textColor="#FF0291D3"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btn_band"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
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/binding"
|
||||
android:textColor="#fff"
|
||||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llSmS"
|
||||
app:layout_constraintStart_toStartOf="@+id/llSmS"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llSmS" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btn_band"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_login_tv_login_start_margin"
|
||||
android:layout_marginTop="80dp"
|
||||
android:layout_marginEnd="@dimen/layout_login_tv_login_end_margin"
|
||||
android:layout_marginBottom="@dimen/layout_login_tv_login_bottom_margin"
|
||||
android:background="@drawable/oc_change_psw_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/binding"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:textStyle="bold" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -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="#FF6FA2FA">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTitle"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -11,214 +11,173 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="43dp"
|
||||
android:layout_marginStart="37dp"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiBack"
|
||||
android:id="@+id/dogHead"
|
||||
android:layout_width="166dp"
|
||||
android:layout_height="166dp"
|
||||
android:src="@mipmap/login_earth_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginEnd="16dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_welcome_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_mode_back"
|
||||
android:padding="5dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:text="@string/HelloWelcomeChangepsw"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="90dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<TextView
|
||||
android:id="@+id/tv_welcome_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:text="@string/change_password"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/clTitle"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_original_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="23dp"
|
||||
android:text="@string/original_password"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_welcome_back" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llOldPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:layout_marginTop="5dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_original_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_original_password"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_original_password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@null"
|
||||
android:hint="@string/please_input_password"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/cb_original_password_hide"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cb_original_password_hide"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:button="@null"
|
||||
android:gravity="center"
|
||||
android:drawableBottom="@drawable/hide_pwd_cb_selector"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/et_original_password"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/et_original_password" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_original_password_error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_username_input_err_tip_text_top_margin"
|
||||
android:textColor="@color/warring"
|
||||
android:textSize="@dimen/layout_login_username_input_err_tip_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llOldPassword" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_new_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:text="@string/new_password"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_original_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_original_password_error" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llNewPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:layout_marginTop="5dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_new_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_new_password"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_new_password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@null"
|
||||
android:hint="@string/please_input_password_check"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/cb_new_password_hide"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cb_new_password_hide"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:button="@null"
|
||||
android:gravity="center"
|
||||
android:drawableBottom="@drawable/hide_pwd_cb_selector"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/et_new_password"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/et_new_password" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_new_password_error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_username_input_err_tip_text_top_margin"
|
||||
android:textColor="@color/warring"
|
||||
android:textSize="@dimen/layout_login_username_input_err_tip_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/llNewPassword"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llNewPassword" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_new_password_error">
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle"
|
||||
android:background="@drawable/yjl_login_bg"
|
||||
android:layout_marginTop="13dp"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:src="@drawable/ic_info_outline_white_48dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_original_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/first_psw_note"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginStart="28dp"
|
||||
android:text="@string/original_password"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llOldPassword"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:layout_marginTop="8dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_original_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_original_password"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_original_password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:background="@null"
|
||||
android:hint="@string/please_input_password"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/cb_original_password_hide"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cb_original_password_hide"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:button="@null"
|
||||
android:gravity="center"
|
||||
android:drawableBottom="@drawable/hide_pwd_cb_selector"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/et_original_password"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/et_original_password" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_new_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/new_password"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/llOldPassword"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llOldPassword" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llNewPassword"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llOldPassword"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_new_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_new_password">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_new_password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:background="@null"
|
||||
android:hint="@string/please_input_password_check"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/cb_new_password_hide"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cb_new_password_hide"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:button="@null"
|
||||
android:drawableBottom="@drawable/hide_pwd_cb_selector"
|
||||
android:gravity="center"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/et_new_password"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/et_new_password" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_change"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
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/confirm_the_changes"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp" />
|
||||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llNewPassword"
|
||||
app:layout_constraintStart_toStartOf="@+id/llNewPassword"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llNewPassword" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_change"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="50dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginEnd="@dimen/layout_login_tv_login_end_margin"
|
||||
android:background="@drawable/oc_change_psw_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/confirm_the_changes"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llNewPassword" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -4,133 +4,122 @@
|
|||
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">
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="37dp"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiBack"
|
||||
android:id="@+id/dogHead"
|
||||
android:layout_width="166dp"
|
||||
android:layout_height="166dp"
|
||||
android:src="@mipmap/login_earth_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginEnd="16dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_welcome_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/ic_mode_back"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/HelloWelcomeForPsw"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="90dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_welcome_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginTop="@dimen/layout_login_welcome_text_top_margin"
|
||||
android:text="@string/forget_pwd"
|
||||
android:textColor="@color/orange_B36C1B"
|
||||
android:textSize="@dimen/layout_login_welcome_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle"
|
||||
android:background="@drawable/yjl_login_bg"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tv_username"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="23dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginStart="28dp"
|
||||
android:text="@string/phone_and_email"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="@dimen/layout_login_username_title_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_welcome_back" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llUserName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_username"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_username">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_username"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_height="match_parent"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/username_input_error1"
|
||||
android:inputType="textPersonName"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_username_error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_username_input_err_tip_text_top_margin"
|
||||
android:textColor="@color/orange_B36C1B"
|
||||
android:textSize="@dimen/layout_login_username_input_err_tip_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llUserName" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sms"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/sms_code"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="@dimen/layout_login_pwd_title_textsize"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_username"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_username_error"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llUserName"
|
||||
tools:ignore="MissingConstraints" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llSmS"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_sms">
|
||||
app:layout_constraintEnd_toEndOf="@+id/llUserName"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_sms"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_sms"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/clSMStv"
|
||||
app:layout_constraintEnd_toStartOf="@+id/clSMStv"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
@ -139,18 +128,15 @@
|
|||
<EditText
|
||||
android:id="@+id/et_sms_code"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/sixVC"
|
||||
android:inputType="number"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
|
|
@ -164,10 +150,10 @@
|
|||
android:id="@+id/clSMStv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/fw_sms_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/send_sms_tv"
|
||||
|
|
@ -179,8 +165,9 @@
|
|||
android:layout_marginBottom="8dp"
|
||||
android:padding="5dp"
|
||||
android:text="@string/send_sms_code"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="13sp"
|
||||
android:textColor="#FF0291D3"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
@ -195,38 +182,34 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_pwd_title_text_top_margin"
|
||||
android:text="@string/new_password"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="@dimen/layout_login_pwd_title_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_sms"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llSmS" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llSmS"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_sms"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_password">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:autofillHints=""
|
||||
android:hint="@string/new_password"
|
||||
android:background="@null"
|
||||
android:hint="@string/new_password"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
|
|
@ -253,39 +236,35 @@
|
|||
android:id="@+id/tv_password_check"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/new_password_check"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="@dimen/layout_login_pwd_title_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_password_error" />
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_sms"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llPassword" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llNewPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="35dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:background="@drawable/oc_login_username_edit_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llPassword"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_sms"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_password_check">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_password_check"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:autofillHints=""
|
||||
android:background="@null"
|
||||
android:hint="@string/new_password_check"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textColor="#000"
|
||||
android:textColorHint="@color/gray_BDBDBD"
|
||||
android:textSize="@dimen/layout_login_et_textsize"
|
||||
android:textStyle="bold"
|
||||
|
|
@ -307,21 +286,10 @@
|
|||
app:layout_constraintTop_toTopOf="@+id/et_password_check" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_password_error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/warring"
|
||||
android:textSize="@dimen/layout_login_username_input_err_tip_textsize"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_welcome_back"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llPassword" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_change_password"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_login_tv_login_start_margin"
|
||||
android:layout_marginEnd="@dimen/layout_login_tv_login_end_margin"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
android:paddingTop="@dimen/layout_login_tv_login_top_padding"
|
||||
|
|
@ -331,8 +299,8 @@
|
|||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llNewPassword"
|
||||
app:layout_constraintStart_toStartOf="@+id/llNewPassword"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llNewPassword" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@
|
|||
<EditText
|
||||
android:id="@+id/et_username"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="35dp"
|
||||
android:autofillHints=""
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
|
|
@ -85,98 +85,87 @@
|
|||
app:layout_constraintStart_toStartOf="@+id/tv_username"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_username" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_username_error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_register_username_input_err_tip_text_top_margin"
|
||||
android:textColor="@color/warring"
|
||||
android:layout_marginStart="35dp"
|
||||
android:textSize="@dimen/layout_register_username_input_err_tip_textsize"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/et_username" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/smsCode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_login_pwd_title_text_top_margin"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/sms_code"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="@dimen/layout_login_username_title_textsize"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_username"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_username_error"
|
||||
app:layout_constraintTop_toBottomOf="@+id/et_username"
|
||||
/>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llSmsCode"
|
||||
android:layout_marginStart="@dimen/layout_login_et_start_margin"
|
||||
android:layout_marginTop="@dimen/layout_login_et_top_margin"
|
||||
android:layout_marginEnd="@dimen/layout_login_et_end_margin"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/smsCode"
|
||||
app:layout_constraintEnd_toEndOf="@+id/et_username"
|
||||
|
||||
app:layout_constraintStart_toStartOf="@+id/smsCode"
|
||||
app:layout_constraintTop_toBottomOf="@+id/smsCode">
|
||||
|
||||
>
|
||||
<EditText
|
||||
android:maxLength="6"
|
||||
android:id="@+id/et_sms_code"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
android:maxLines="1"
|
||||
android:inputType="number"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:hint="@string/correctCode"
|
||||
android:inputType="number"
|
||||
android:maxLength="6"
|
||||
android:maxLines="1"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textColorHint="#BDBDBD"
|
||||
/>
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_marginLeft="20dp"
|
||||
android:id="@+id/tv_sms_code"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="0.4"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_weight="0.4"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/dp_10"
|
||||
android:text="@string/SendVerificationCode"
|
||||
android:textColor="@color/orange_B36C1B"
|
||||
android:text="@string/ObtainVerificationCode"
|
||||
android:textColor="#FF0291D3"
|
||||
android:textSize="@dimen/layout_login_tv_login_textsize"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_register_pwd_title_text_top_margin"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/password"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="@dimen/layout_login_username_title_textsize"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_username"
|
||||
app:layout_constraintTop_toBottomOf="@+id/llSmsCode" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_password"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_register_et_start_margin"
|
||||
android:layout_marginTop="@dimen/layout_register_et_top_margin"
|
||||
android:layout_marginEnd="@dimen/layout_register_et_end_margin"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="@dimen/layout_register_et_textsize"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textColorHint="#BDBDBD"
|
||||
android:hint="@string/please_input_password"
|
||||
app:layout_constraintEnd_toEndOf="@+id/llSmsCode"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_password" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_password_hide"
|
||||
|
|
@ -195,27 +184,28 @@
|
|||
android:id="@+id/tv_password_check"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_register_pwd_title_text_top_margin"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/password_check"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="@dimen/layout_login_username_title_textsize"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_password"
|
||||
app:layout_constraintTop_toBottomOf="@+id/et_password" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_password_check"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_register_et_start_margin"
|
||||
android:layout_marginTop="@dimen/layout_register_et_top_margin"
|
||||
android:layout_marginEnd="@dimen/layout_register_et_end_margin"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/login_et_bg_selector"
|
||||
android:inputType="textPassword"
|
||||
android:maxLines="1"
|
||||
android:textColor="#4F4F4F"
|
||||
android:textSize="@dimen/layout_register_et_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:hint="@string/please_input_password"
|
||||
app:layout_constraintEnd_toEndOf="@+id/et_password"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_password_check"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_password_check" />
|
||||
|
||||
<CheckBox
|
||||
|
|
@ -230,34 +220,22 @@
|
|||
app:layout_constraintBottom_toBottomOf="@+id/et_password_check"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/et_password_check" />
|
||||
<TextView
|
||||
android:id="@+id/tv_password_error"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_register_username_input_err_tip_text_top_margin"
|
||||
android:layout_marginStart="35dp"
|
||||
android:textColor="@color/warring"
|
||||
android:textSize="@dimen/layout_register_username_input_err_tip_textsize"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/et_password_check" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_register"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginStart="@dimen/layout_register_tv_login_start_margin"
|
||||
android:layout_marginEnd="@dimen/layout_register_tv_login_end_margin"
|
||||
android:layout_marginBottom="@dimen/layout_register_tv_login_bottom_margin"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
android:text="@string/register"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="@dimen/layout_register_tv_login_textsize"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/llBt"
|
||||
app:layout_constraintBottom_toTopOf="@+id/llBt"
|
||||
app:layout_constraintEnd_toEndOf="@+id/et_password_check"
|
||||
app:layout_constraintStart_toStartOf="@+id/et_password_check"
|
||||
app:layout_constraintTop_toBottomOf="@+id/et_password_check" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
|||
|
|
@ -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="#FF6FA2FA"
|
||||
android:orientation="vertical">
|
||||
<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="#FF333333"
|
||||
/>
|
||||
<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"
|
||||
|
|
@ -40,439 +41,170 @@
|
|||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clVerSionUpdate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/yjl_setting_user_bg"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginTop="31dp"
|
||||
android:visibility="gone"
|
||||
android:background="@drawable/oc_setting_lo_bg"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/VersionUp"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
android:layout_marginTop="22dp"
|
||||
android:layout_marginStart="21dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/nowVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:text="@string/VersionUp"
|
||||
android:textColor="#828282"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/tvVersion"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvVersion" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiLo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/nowVersion"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvVersion" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="@string/VersionStr"
|
||||
android:textColor="#828282"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aiLo"
|
||||
app:layout_constraintEnd_toStartOf="@+id/aiLo"
|
||||
app:layout_constraintTop_toTopOf="@+id/aiLo" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clLanguageSwitching"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginTop="31dp"
|
||||
android:background="@drawable/oc_setting_lo_bg"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clLanguageSwitchingStr"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="46dp"
|
||||
android:layout_height="46dp"
|
||||
android:src="@mipmap/yjl_usericon"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/LanguageSwitchingStr"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiLanguage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvLanguage"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvLanguage" />
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="@string/Consistentdevice"
|
||||
android:textColor="#828282"
|
||||
android:visibility="gone"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aiLanguage"
|
||||
app:layout_constraintEnd_toStartOf="@+id/aiLanguage"
|
||||
app:layout_constraintTop_toTopOf="@+id/aiLanguage" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clSwitching"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clLanguageSwitchingStr"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSwitching"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/source_switch"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiSwitching"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvSwitching"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvSwitching" />
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="@string/Consistentdevice"
|
||||
android:textColor="#828282"
|
||||
android:visibility="gone"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aiSwitching"
|
||||
app:layout_constraintEnd_toStartOf="@+id/aiSwitching"
|
||||
app:layout_constraintTop_toTopOf="@+id/aiSwitching" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clChushihua"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clSwitching"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvChushihua"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/InitializationRepair"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiChushihua"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvChushihua"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvChushihua" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clDelete"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clChushihua"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvDelete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/deleteStr"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiDelete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvDelete"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvDelete" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clApplicationModeTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginTop="31dp"
|
||||
android:visibility="gone"
|
||||
android:background="@drawable/oc_setting_lo_bg"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clApplicationModeTitleStr"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/TVApplicationModeTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/ApplicationMode"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/TVApplicationModeTxt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:text="@string/allow_all_apps"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/TVApplicationModeTitle"
|
||||
/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aittt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/clApplicationModeTitleStr" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/llControlApplication"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="22dp"
|
||||
android:layout_marginBottom="22dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clApplicationModeTitleStr"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/TVControlApplication"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/AccessControlApplication"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/TVControlApplicationTxt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/ConfigurePermissions"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/TVControlApplication"
|
||||
/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiTVControlApplication"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/TVControlApplication" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginTop="31dp"
|
||||
android:background="@drawable/oc_setting_lo_bg"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clServiceTerms"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvServiceTerms"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/ServiceTerms"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiServiceTerms"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvServiceTerms"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvServiceTerms" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/LineView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#E59E4D"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clServiceTerms"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="14dp"
|
||||
android:layout_marginBottom="14dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:drawablePadding="5dp"
|
||||
android:drawableRight="@drawable/ic_s_arrow_right"
|
||||
android:text="AAAAA"
|
||||
android:layout_marginEnd="28dp"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/yjl_setting_user_bg"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clyszc"
|
||||
android:id="@+id/clChanPsw"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/LineView"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/press_effect"
|
||||
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvyszc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/PrivacyPolicy"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/change_password"
|
||||
android:textSize="14sp"
|
||||
android:textColor="#FF333333"
|
||||
android:textStyle="bold"
|
||||
android:padding="5dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textColor="#5A2B31"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="20dp"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiyszc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_xy"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvyszc"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvyszc" />
|
||||
android:src="@drawable/ic_s_arrow_right"
|
||||
android:layout_marginEnd="28dp"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clFowdPsw"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clChanPsw"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginTop="20dp"
|
||||
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/forgetPwds"
|
||||
android:textSize="14sp"
|
||||
android:textColor="#FF333333"
|
||||
android:textStyle="bold"
|
||||
android:padding="5dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="20dp"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:src="@drawable/ic_s_arrow_right"
|
||||
android:layout_marginEnd="28dp"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clDeletePsw"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clFowdPsw"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginTop="20dp"
|
||||
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/deleteStr"
|
||||
android:textSize="14sp"
|
||||
android:textColor="#FF333333"
|
||||
android:textStyle="bold"
|
||||
android:padding="5dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="20dp"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:src="@drawable/ic_s_arrow_right"
|
||||
android:layout_marginEnd="28dp"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvExit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/ExitNumber"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="70dp"
|
||||
android:gravity="center"
|
||||
android:paddingTop="18dp"
|
||||
android:paddingBottom="18dp"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="14sp"
|
||||
android:background="@drawable/yjl_setting_user_bg"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/ui_bg"
|
||||
>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fragmentContainer"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
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"
|
||||
>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_navigation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="59dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@color/translate"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivHome"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/yjl_vip_page_choose"
|
||||
android:layout_weight="1"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivCenter"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/yjl_user_page"
|
||||
android:layout_weight="1"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivVip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/yjl_vip_page"
|
||||
android:layout_weight="1"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -1,135 +1,97 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@color/translate"
|
||||
>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clContentView"
|
||||
android:layout_width="350dp"
|
||||
android:layout_height="400dp"
|
||||
android:layout_margin="10dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/oc_activity_add_group_bg"
|
||||
<TextView
|
||||
android:id="@+id/tvNewTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="28dp"
|
||||
android:layout_marginTop="150dp"
|
||||
android:gravity="center"
|
||||
android:text="AAA"
|
||||
android:textColor="#000000"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/contentNet"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvMySee"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvNewTitle"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/noticeTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/tvDogHead"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/oc_dog_head"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginTop="24dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
||||
/>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/LatestAnnouncement"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="16sp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toEndOf="@+id/tvDogHead"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvDogHead"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvDogHead"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:id="@+id/tv_notice_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:autoLink="web"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_marginTop="5dp"
|
||||
android:id="@+id/tv_notice_url"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:autoLink="web"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="12sp" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_cancel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
android:text="@string/close"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sure"
|
||||
android:id="@+id/tv_notice_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:layout_marginStart="21dp"
|
||||
android:layout_marginEnd="21dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:autoLink="web"
|
||||
android:maxHeight="200dp"
|
||||
android:layout_gravity="center"
|
||||
android:maxLines="100"
|
||||
android:gravity="center"
|
||||
android:text="@string/ReadAlready"
|
||||
android:textColor="@color/white"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/noticeTitle"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="24dp"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/tvMySee"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="28dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:gravity="center"
|
||||
android:text="AAA"
|
||||
android:textColor="#fff"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:paddingStart="24dp"
|
||||
android:paddingEnd="24dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="20dp"
|
||||
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icActivityClose"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/close"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clContentView"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
app:srcCompat="@drawable/ic_close_activity"
|
||||
app:tint="#8FE2F5" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -5,161 +5,288 @@
|
|||
android:id="@+id/main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:ignore="ContentDescription,MissingConstraints">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/clBtShow"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvTimeInfo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/YkStr"
|
||||
app:layout_constraintBottom_toTopOf="@+id/llTime"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textSize="18sp"
|
||||
android:textColor="#B36C1B"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/llTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/iv_accelerate"
|
||||
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/expire_date"
|
||||
android:visibility="gone"
|
||||
android:textColor="@color/orange_B36C1B"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_end_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:textColor="@color/orange_FF8A04"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:drawableRight="@drawable/ic_refresh"
|
||||
android:drawablePadding="5dp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_accelerate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/accelerate_iv_selector"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintHeight_percent="0.50"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:layout_editor_absoluteX="0dp" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clBtShow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:layout_marginStart="60dp"
|
||||
android:layout_marginEnd="60dp"
|
||||
android:background="@drawable/node_choose"
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/CurrentRoute"
|
||||
android:textColor="#B9B9B9"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAiNodes"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="15dp"
|
||||
android:textColor="#FE9C35"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/AIRoute"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvAiNodes"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginTop="2dp"
|
||||
android:gravity="center"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvDelayMs"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/delayDefault"
|
||||
android:textColor="#6ECB6C"
|
||||
android:textSize="15sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginStart="20dp"
|
||||
/>
|
||||
<View
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="5dp"
|
||||
android:background="@drawable/node_clrle"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvCurrent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/RecommendedRoutes"
|
||||
android:textColor="#CECECE"
|
||||
android:textSize="15sp"
|
||||
android:textStyle="bold"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginEnd="20dp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
tools:ignore="ContentDescription,MissingConstraints"
|
||||
android:background="@mipmap/yjl_home_bkg"
|
||||
>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clUserCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="34dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:background="@drawable/yjl_home_user_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/userIcon"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:src="@mipmap/yjl_usericon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userIcon"
|
||||
app:layout_constraintEnd_toStartOf="@+id/clGetVip"
|
||||
app:layout_constraintStart_toEndOf="@+id/userIcon"
|
||||
app:layout_constraintTop_toTopOf="@+id/userIcon">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableRight="@drawable/ic_s_copy"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text=""
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserTimeEnd"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:drawableRight="@drawable/ic_refresh"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text=""
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="16sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clGetVip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@drawable/yjl_user_link_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVipGet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawableRight="@drawable/yjl_home_back"
|
||||
android:text="@string/GORecharge"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clLinks"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clUserCard"
|
||||
android:layout_marginTop="30dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvYjl"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="44dp"
|
||||
android:text="@string/wf"
|
||||
android:textColor="#FF000000"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="20dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvClick"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvYjl"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/LinkJS"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:textColor="#FFA9A9A9"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clLink"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvClick"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivCustomService"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:src="@drawable/home_kf_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="16dp"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/ivAccelerate"
|
||||
android:layout_width="250dp"
|
||||
android:layout_height="250dp"
|
||||
android:src="@mipmap/yjl_home_clink_bg"
|
||||
tools:layout_editor_absoluteX="0dp"
|
||||
tools:layout_editor_absoluteY="-2dp" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/clProxy"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:orientation="horizontal"
|
||||
android:background="@drawable/oc_proxy_bg"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clLinks"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginEnd="40dp"
|
||||
android:visibility="visible"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvIntelligentMode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/oc_proxy_choose_bg"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/IntelligentMode"
|
||||
android:gravity="center"
|
||||
android:textColor="#FF006AFB"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvGlobalMode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/GlobalMode"
|
||||
android:gravity="center"
|
||||
android:textColor="#FF000000"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clNode"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clProxy"
|
||||
android:background="@drawable/yjl_home_node_bg"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:visibility="visible"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivNodeImg"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:src="@drawable/yjl_node_icon"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="14sp"
|
||||
android:layout_marginTop="13dp"
|
||||
android:layout_marginBottom="13dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNodeStr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:text="@string/CurrentRoute"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aivNodeImg"
|
||||
app:layout_constraintStart_toEndOf="@+id/aivNodeImg"
|
||||
app:layout_constraintTop_toTopOf="@+id/aivNodeImg"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNodeName"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/CurrentRoute"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:textColor="#FF333333"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvNodeStr"
|
||||
app:layout_constraintEnd_toStartOf="@+id/appCompatImageView"
|
||||
app:layout_constraintStart_toEndOf="@+id/tvNodeStr"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvNodeStr" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/appCompatImageView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:src="@drawable/yjl_home_back"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:ignore="ContentDescription,MissingConstraints"
|
||||
android:background="@mipmap/yjl_home_bkg"
|
||||
>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="34dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:background="@drawable/yjl_home_user_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/userIcon"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:src="@mipmap/yjl_usericon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userIcon"
|
||||
app:layout_constraintEnd_toStartOf="@+id/clGetVip"
|
||||
app:layout_constraintStart_toEndOf="@+id/userIcon"
|
||||
app:layout_constraintTop_toTopOf="@+id/userIcon">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableRight="@drawable/ic_s_copy"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserTimeEnd"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:drawableRight="@drawable/ic_refresh"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="16sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clGetVip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@drawable/yjl_user_link_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVipGet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawableRight="@drawable/yjl_home_back"
|
||||
android:text="@string/GORecharge"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clLink"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvClick"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivCustomService"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:src="@drawable/home_kf_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="16dp"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/ivAccelerate"
|
||||
android:layout_width="204dp"
|
||||
android:layout_height="203dp"
|
||||
android:src="@mipmap/yjl_home_clink_bg"
|
||||
tools:layout_editor_absoluteX="0dp"
|
||||
tools:layout_editor_absoluteY="-3dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lineTxt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/NotConnected"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="#FF000000"
|
||||
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvClick"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvYjl"
|
||||
android:layout_marginBottom="14dp"
|
||||
android:text="@string/LinkJS"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:textColor="#FFA9A9A9"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvYjl"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="44dp"
|
||||
android:text="@string/wf"
|
||||
android:textColor="#FF000000"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@+id/clProxy"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/clProxy"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:orientation="horizontal"
|
||||
android:background="@drawable/oc_proxy_bg"
|
||||
app:layout_constraintBottom_toTopOf="@+id/clNode"
|
||||
android:layout_marginBottom="22dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginEnd="40dp"
|
||||
android:visibility="visible"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvIntelligentMode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/oc_proxy_choose_bg"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/IntelligentMode"
|
||||
android:gravity="center"
|
||||
android:textColor="#FF006AFB"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvGlobalMode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/GlobalMode"
|
||||
android:gravity="center"
|
||||
android:textColor="#FF000000"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clNode"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/yjl_home_node_bg"
|
||||
android:layout_marginBottom="21dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:visibility="visible"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivNodeImg"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:src="@drawable/yjl_node_icon"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="14sp"
|
||||
android:layout_marginTop="13dp"
|
||||
android:layout_marginBottom="13dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNodeStr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:text="@string/CurrentRoute"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aivNodeImg"
|
||||
app:layout_constraintStart_toEndOf="@+id/aivNodeImg"
|
||||
app:layout_constraintTop_toTopOf="@+id/aivNodeImg"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNodeName"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/CurrentRoute"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:textColor="#FF333333"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvNodeStr"
|
||||
app:layout_constraintEnd_toStartOf="@+id/appCompatImageView"
|
||||
app:layout_constraintStart_toEndOf="@+id/tvNodeStr"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvNodeStr" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/appCompatImageView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:src="@drawable/yjl_home_back"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -245,7 +245,7 @@
|
|||
android:paddingTop="15dp"
|
||||
android:paddingBottom="15dp"
|
||||
android:text="@string/register"
|
||||
android:textColor="@color/orange_B36C1B"
|
||||
android:textColor="#FF000000"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="@+id/tv_login"
|
||||
app:layout_constraintStart_toStartOf="@+id/tv_login"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/clTop"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<LinearLayout
|
||||
android:id="@+id/llLine"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/img_click_effect"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivIcon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/user_uplog_icon" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/itemName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text=""
|
||||
android:textColor="#000000"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -4,7 +4,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"
|
||||
>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTitle"
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="48dp"
|
||||
android:layout_marginTop="12dp"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aiBack"
|
||||
|
|
@ -21,6 +21,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_mode_back"
|
||||
android:padding="5dp"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="15dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
|
|
@ -29,7 +30,7 @@
|
|||
<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"
|
||||
|
|
@ -37,18 +38,16 @@
|
|||
android:text="@string/recharge"
|
||||
android:textSize="18sp"
|
||||
/>
|
||||
<TextView
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/tvRechargeRecord"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#B36C1B"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/recharge_record"
|
||||
android:textSize="18sp"
|
||||
android:src="@drawable/vip_lsjl"
|
||||
android:padding="5dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -71,113 +70,344 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/setting_head_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/appCompatImageView3"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="25dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/payTips"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/payTips"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="13dp"
|
||||
android:textColor="#B36C1B"
|
||||
android:textSize="13sp"
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/userIcon"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:src="@mipmap/yjl_usericon"
|
||||
android:layout_marginTop="18dp"
|
||||
android:layout_marginBottom="18dp"
|
||||
android:layout_marginStart="10dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<TextView
|
||||
android:id="@+id/payTips2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/payTips2"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textColor="#FF8A04"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/payTips"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="13dp"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toEndOf="@+id/userIcon"
|
||||
app:layout_constraintEnd_toStartOf="@+id/aivStart"
|
||||
app:layout_constraintTop_toTopOf="@+id/userIcon"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userIcon"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvUserName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableRight="@drawable/ic_s_copy"
|
||||
android:drawablePadding="5dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserTimeEnd"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="16sp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableRight="@drawable/ic_refresh"
|
||||
android:drawablePadding="5dp"
|
||||
/>
|
||||
|
||||
|
||||
</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.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/appCompatImageView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="28dp"
|
||||
android:background="@mipmap/oc_rectangle_dog"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:text="@string/SelectDuration"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/clUser"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clUser" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/MultiTerminal"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/textView3"
|
||||
app:layout_constraintStart_toEndOf="@+id/textView3"
|
||||
app:layout_constraintTop_toTopOf="@+id/textView3"
|
||||
/>
|
||||
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeLayout"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvPay"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView3"
|
||||
android:background="@drawable/yjl_login_bg"
|
||||
app:layout_constraintBottom_toTopOf="@+id/clButton"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clUser"
|
||||
android:layout_marginBottom="12dp"
|
||||
>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rvRechargeList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvPay"
|
||||
<TextView
|
||||
android:id="@+id/textView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/SelectDuration"
|
||||
android:textColor="@color/black_4F4F4F"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginBottom="16dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/clCustomTxt"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView3"
|
||||
tools:layout_editor_absoluteX="10dp">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rvRechargeList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clCustomTxt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvPay"
|
||||
android:layout_marginBottom="14dp"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivNosee"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/vector_notice_pick"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="16dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tvTxtShow"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aivNosee"
|
||||
android:text="@string/VipSerTxt"
|
||||
android:layout_marginStart="5dp"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="14sp"
|
||||
android:padding="5dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTxtShowLink"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="@string/LinekCustom"
|
||||
android:textColor="#FFFC4863"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/tvTxtShow"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<TextView
|
||||
android:id="@+id/tvPay"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:layout_marginBottom="14dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
android:paddingTop="13dp"
|
||||
android:paddingBottom="13dp"
|
||||
android:text="开通VIP (¥36.8)"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:layout_marginBottom="26dp"
|
||||
android:background="@drawable/oc_login_bg"
|
||||
android:gravity="center"
|
||||
android:paddingTop="13dp"
|
||||
android:paddingBottom="13dp"
|
||||
android:text="开通VIP (¥36.8)"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/yjl_login_bg"
|
||||
>
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivTabTxt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/img_line_bg"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="70dp"
|
||||
android:layout_marginEnd="70dp"
|
||||
android:layout_marginTop="8dp"
|
||||
/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/aivTabTxt"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="24dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/buton_a" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/jstime"
|
||||
android:textColor="#FF5E2A12"
|
||||
android:textSize="14sp"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/jstimeStr"
|
||||
android:textColor="#FF5E2A12"
|
||||
android:textSize="14sp"
|
||||
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/linearLayout2"
|
||||
app:layout_constraintStart_toEndOf="@+id/linearLayout"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/buton_b" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/jstime"
|
||||
android:textColor="#FF5E2A12"
|
||||
android:textSize="14sp"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/jstimeStr"
|
||||
android:textColor="#FF5E2A12"
|
||||
android:textSize="14sp"
|
||||
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/button_c" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/jstime"
|
||||
android:textColor="#FF5E2A12"
|
||||
android:textSize="14sp"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/jstimeStr"
|
||||
android:textColor="#FF5E2A12"
|
||||
android:textSize="14sp"
|
||||
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:background="@mipmap/oc_index_bg"
|
||||
tools:context=".act.NewMainActivity">
|
||||
tools:context=".act.MainActivity">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,323 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/yjl_setting_bg">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="24dp"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/tvSetting"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="#FF333333"
|
||||
android:text="@string/userCenter"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clTitle">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/userIcon"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:src="@mipmap/yjl_usericon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userIcon"
|
||||
app:layout_constraintEnd_toStartOf="@+id/clGetVip"
|
||||
app:layout_constraintStart_toEndOf="@+id/userIcon"
|
||||
app:layout_constraintTop_toTopOf="@+id/userIcon">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableRight="@drawable/ic_s_copy"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUserTimeEnd"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:drawableRight="@drawable/ic_refresh"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="ID:33333AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
android:textColor="#FFF96B10"
|
||||
android:textSize="16sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clGetVip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="10dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVipGet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawableRight="@drawable/small_bing"
|
||||
android:text="@string/BindAccount"
|
||||
android:textColor="#FF643E00"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clUserPage"
|
||||
android:background="@drawable/yjl_login_bg"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginTop="8dp"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clVipCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:background="@drawable/user_center_vip_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivA"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:src="@drawable/yjl_vip_hg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivvipCad"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:src="@drawable/vip_cart_txt"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aivA"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvEndTimes"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:text="AAA"
|
||||
android:textColor="#FFB3B3B3"
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/goGetVip"
|
||||
app:layout_constraintStart_toEndOf="@+id/aivvipCad"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/goGetVip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:background="@drawable/givip_bg"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="10dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/TopUpNow"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/shareCard"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/setting_share_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/clVipCard"
|
||||
app:layout_constraintStart_toStartOf="@+id/clVipCard"
|
||||
app:layout_constraintTop_toBottomOf="@+id/clVipCard">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aivshareimg"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:src="@mipmap/shareicons"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aivshareimg"
|
||||
app:layout_constraintEnd_toStartOf="@+id/goSee"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvShareText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawablePadding="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="@string/shareTime"
|
||||
android:textColor="#FF333333"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvxa"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:drawablePadding="4dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="@string/getTimes"
|
||||
android:textColor="#FFB0B0B0"
|
||||
android:textSize="12sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/goSee"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="17dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:background="@drawable/givip_see_bg"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="10dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="@string/TopUpNowSee"
|
||||
android:textColor="#FFFFFFFF"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvService"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/mySerVice"
|
||||
android:textColor="#FF000000"
|
||||
android:layout_marginTop="20dp"
|
||||
android:textSize="13sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="@+id/shareCard"
|
||||
app:layout_constraintTop_toBottomOf="@+id/shareCard" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rvSettingTab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tvVersion"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvService"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#FF000000"
|
||||
android:layout_marginTop="20dp"
|
||||
android:textSize="13sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="20dp"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/navigation_home"
|
||||
android:icon="@drawable/yjl_home_page_select"
|
||||
android:title="@string/forget_pwd"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/navigation_setting"
|
||||
android:icon="@drawable/yjl_user_page_select"
|
||||
android:title="@string/forget_pwd"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/navigation_my"
|
||||
android:icon="@drawable/yjl_vip_page_select"
|
||||
android:title="@string/forget_pwd"/>
|
||||
</menu>
|
||||
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 467 KiB |
|
After Width: | Height: | Size: 276 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 325 KiB |