| | |
| | | android:screenOrientation="portrait" |
| | | android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize" |
| | | android:name=".ui.work.site.SiteNavActivity" |
| | | android:windowSoftInputMode="adjustResize" |
| | | android:launchMode="singleTop" /> |
| | | <activity |
| | | android:screenOrientation="portrait" |
| | |
| | | package com.xw.yunwei.model |
| | | |
| | | import com.google.gson.annotations.SerializedName |
| | | import org.json.JSONObject |
| | | |
| | | /** |
| | | * 应用版本更新信息数据类 |
| | |
| | | @SerializedName("forceUpdateFlag") |
| | | val forceUpdateFlag: Int? = null, |
| | | |
| | | ) |
| | | ) { |
| | | //获取下载路径 |
| | | fun getDownloadUrl(): String? { |
| | | return try { |
| | | JSONObject(androidFile ?: "").optString("url") |
| | | } catch (e: Exception) { |
| | | e.printStackTrace() |
| | | null |
| | | } |
| | | } |
| | | } |
| | |
| | | import android.os.Parcelable |
| | | import com.google.gson.annotations.SerializedName |
| | | import com.xw.common.utils.BindUtils.getUrl |
| | | import com.xw.yunwei.R |
| | | import kotlinx.parcelize.Parcelize |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 是否已经打开后备箱 1是 前端字段 |
| | | */ |
| | | val hadTrunkOpened: String? = null |
| | | val hadTrunkOpened: String? = null, |
| | | |
| | | /** |
| | | * 车辆状态(1=运营中,2=出车中,3=接单中,4=停止接单,5=已收车,6=车辆异常,7=维修中,8=充电中) |
| | | */ |
| | | val vehicleStatus: String? = null |
| | | ) : Parcelable { |
| | | //获取车辆图片 |
| | | fun getShowVehiclePicture(): String { |
| | |
| | | fun hadOpenedTrunk(): Boolean { |
| | | return hadTrunkOpened == "1" |
| | | } |
| | | |
| | | //是否正在工作中 |
| | | fun isWorking(): Boolean { |
| | | return operatingStatus == 1 |
| | |
| | | fun isArrivingPoint(): Boolean { |
| | | return !pointName.isNullOrEmpty() |
| | | } |
| | | |
| | | //获取显示状态 1=运营中,2=出车中,3=接单中,4=停止接单,5=已收车,6=车辆异常,7=维修中,8=充电中 |
| | | fun getShowStatus(): String { |
| | | return when (vehicleStatus) { |
| | | "1" -> "运营中" |
| | | "2" -> "出车中" |
| | | "3" -> "接单中" |
| | | "4" -> "停止接单" |
| | | "5" -> "已收车" |
| | | "6" -> "车辆异常" |
| | | "7" -> "维修中" |
| | | "8" -> "充电中" |
| | | else -> "" |
| | | } |
| | | } |
| | | |
| | | //获取显示状态文字颜色 1=运营中,2=出车中,3=接单中,4=停止接单,5=已收车,6=车辆异常,7=维修中,8=充电中 |
| | | fun getShowStatusTextColor(): Int { |
| | | return when (vehicleStatus) { |
| | | "1", "2", "3" -> com.xw.common.R.color.blue_5 |
| | | "4", "5" -> com.xw.common.R.color.gray_8 |
| | | "6", "7", "8" -> com.xw.common.R.color.orange_5 |
| | | else -> com.xw.common.R.color.black |
| | | } |
| | | } |
| | | |
| | | //获取显示状态背景资源 1=运营中,2=出车中,3=接单中,4=停止接单,5=已收车,6=车辆异常,7=维修中,8=充电中 |
| | | fun getShowStatusBgResource(): Int { |
| | | return when (vehicleStatus) { |
| | | "1", "2", "3" -> R.drawable.shape_blue_1_bg_2 |
| | | "4", "5" -> R.drawable.shape_gray_3_bg_2 |
| | | "6", "7", "8" -> R.drawable.shape_orange_1_bg_2 |
| | | else -> 0 |
| | | } |
| | | } |
| | | |
| | | //获取显示状态图片资源 1=运营中,2=出车中,3=接单中,4=停止接单,5=已收车,6=车辆异常,7=维修中,8=充电中 |
| | | fun getShowStatusImageResource(): Int { |
| | | return when (vehicleStatus) { |
| | | "1" -> R.mipmap.icon_car_running |
| | | "2" -> R.mipmap.icon_car_working |
| | | "3" -> R.mipmap.icon_car_order |
| | | "4" -> R.mipmap.icon_car_stop_order |
| | | "5" -> R.mipmap.ic_work_quche |
| | | "6" -> R.mipmap.icon_car_exception |
| | | "7" -> R.mipmap.ic_work_weixiu |
| | | "8" -> R.mipmap.icon_car_charge |
| | | else -> 0 |
| | | } |
| | | } |
| | | } |
| | |
| | | import android.annotation.SuppressLint |
| | | import android.app.Activity |
| | | import android.content.Intent |
| | | import android.os.Handler |
| | | import android.os.Looper |
| | | import android.webkit.WebSettings |
| | | import android.webkit.WebView |
| | | import androidx.appcompat.app.AppCompatActivity |
| | | import androidx.databinding.DataBindingUtil |
| | | import androidx.lifecycle.lifecycleScope |
| | | import com.afollestad.materialdialogs.customview.customView |
| | | import com.afollestad.materialdialogs.customview.getCustomView |
| | | import com.blankj.utilcode.util.AppUtils |
| | | import com.google.android.material.tabs.TabLayout |
| | | import com.xw.common.net.UpdateManager |
| | | import com.xw.common.net.interceptor.ApiException |
| | | import com.xw.common.utils.KeyPreferences |
| | | import com.xw.common.utils.LogUtils |
| | | import com.xw.common.utils.MMKVManager |
| | |
| | | import com.xw.yunwei.databinding.DialogProtocolBinding |
| | | import com.xw.yunwei.extension.safeLoadDataWithBaseURL |
| | | import com.xw.yunwei.extension.setSafeSetting |
| | | import com.xw.yunwei.model.AgreeInfo |
| | | import com.xw.yunwei.model.SwitchTabMain |
| | | import com.xw.yunwei.model.SwitchTabTask |
| | | import com.xw.yunwei.net.UserRepository |
| | |
| | | import com.xw.yunwei.ui.user.mine.protocol.ProtocolActivity |
| | | import com.xw.yunwei.ui.user.mine.scheduling.SchedulingActivity |
| | | import com.xw.yunwei.utils.DialogFactory |
| | | import kotlinx.coroutines.CoroutineExceptionHandler |
| | | import kotlinx.coroutines.CoroutineScope |
| | | import kotlinx.coroutines.DelicateCoroutinesApi |
| | | import kotlinx.coroutines.Dispatchers |
| | | import kotlinx.coroutines.GlobalScope |
| | | import kotlinx.coroutines.delay |
| | | import kotlinx.coroutines.launch |
| | | import org.greenrobot.eventbus.EventBus |
| | | import org.json.JSONObject |
| | | import org.koin.core.component.KoinComponent |
| | | import org.koin.core.component.inject |
| | | import java.io.IOException |
| | | import java.net.ConnectException |
| | | import java.net.SocketException |
| | | import java.net.SocketTimeoutException |
| | | import java.net.UnknownHostException |
| | | |
| | | object MessageHandler : KoinComponent { |
| | | var TAG = "zmc-${this.javaClass.simpleName}" |
| | | val userRepository: UserRepository by inject() |
| | | |
| | | fun handlePushEvent(content: String?, isPush: Boolean = false) { |
| | |
| | | GlobalScope.launch { |
| | | val currentShowActivity = MyApp.myApp.getCurrentShowActivity() |
| | | LogUtils.i( |
| | | "zmc-MessageHandler", |
| | | "handlePushEvent ${currentShowActivity.javaClass.name}" |
| | | "zmc-MessageHandler", "handlePushEvent ${currentShowActivity.javaClass.name}" |
| | | ) |
| | | handleMsg(currentShowActivity, strategy, id, isPush) |
| | | } |
| | |
| | | currentShowActivity.startActivity( |
| | | Intent(currentShowActivity, AccidentDetailActivity::class.java).apply { |
| | | putExtra("taskId", id.toLong()) |
| | | } |
| | | ) |
| | | }) |
| | | } |
| | | |
| | | 4 -> { // 排班信息变动 |
| | |
| | | currentShowActivity.startActivity( |
| | | Intent(currentShowActivity, NormalTaskDetailActivity::class.java).apply { |
| | | putExtra("taskId", id.toLong()) |
| | | } |
| | | ) |
| | | }) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | fun showUpdateDialog(currentShowActivity: Activity) { |
| | | (currentShowActivity as AppCompatActivity).lifecycleScope.launch { |
| | | launchRequest { |
| | | userRepository.getVersion()?.let { |
| | | Handler(Looper.getMainLooper()).post { |
| | | runOnMainThread { |
| | | UpdateManager.instance!! |
| | | .setContext(currentShowActivity) |
| | | .apkUrl(it.androidFile ?: "") |
| | | .apkUrl(it.getDownloadUrl() ?: "") |
| | | .updateContent(it.updateDescription ?: "") |
| | | .updateVersionCode(it.versionCode ?: 1) |
| | | .updateVersionName(it.version ?: "1.0") |
| | |
| | | forced: Boolean, |
| | | dismissBlock: (() -> Unit)? = null |
| | | ) { |
| | | Handler(Looper.getMainLooper()).post { |
| | | DialogFactory.produce(currentShowActivity).cornerRadius(15f).cancelable(!forced).show { |
| | | customView( |
| | | com.xw.yunwei.R.layout.dialog_protocol, |
| | | noVerticalPadding = true, |
| | | dialogWrapContent = true |
| | | ) |
| | | DataBindingUtil.bind<DialogProtocolBinding>(getCustomView())?.let { bind -> |
| | | // val tab1 = bind.protocolLayout.tabLayout.newTab().apply { text = "用户协议" } |
| | | // val tab2 = bind.protocolLayout.tabLayout.newTab().apply { text = "隐私条款" } |
| | | |
| | | val tab1 = bind.protocolLayout.tabLayout.newTab() |
| | | .apply { text = "小鹏Robotaxi...隐私政策" } |
| | | val tab2 = |
| | | bind.protocolLayout.tabLayout.newTab().apply { text = "第三方共享信息清单" } |
| | | val tab3 = |
| | | bind.protocolLayout.tabLayout.newTab().apply { text = "个人信息收集清单" } |
| | | val tab4 = bind.protocolLayout.tabLayout.newTab().apply { text = "权限调用" } |
| | | |
| | | bind.protocolLayout.tabLayout.addTab(tab1, true) |
| | | bind.protocolLayout.tabLayout.addTab(tab2, false) |
| | | bind.protocolLayout.tabLayout.addTab(tab3, false) |
| | | bind.protocolLayout.tabLayout.addTab(tab4, false) |
| | | |
| | | // bind.btnLeft.text = if (forced) "取消并退出" else "关闭" |
| | | bind.btnLeft.text = "关闭" |
| | | bind.btnLeft.setOnClickListener { |
| | | dismiss() |
| | | if (forced) { |
| | | currentShowActivity.finishAffinity() |
| | | android.os.Process.killProcess(android.os.Process.myPid()) |
| | | } |
| | | } |
| | | bind.btnRight.setOnClickListener { |
| | | MMKVManager.getInstance().saveBoolean(KeyPreferences.NEED_READ, false) |
| | | dismiss() |
| | | } |
| | | initWeb(bind.protocolLayout.web) |
| | | |
| | | val getProtocol: (Int) -> Unit = { type -> |
| | | (currentShowActivity as AppCompatActivity).lifecycleScope.launch { |
| | | val data = userRepository.getProtocol(type) |
| | | Handler(Looper.getMainLooper()).post { |
| | | setContent(bind.protocolLayout.web, data?.content ?: "") |
| | | } |
| | | } |
| | | } |
| | | |
| | | getProtocol(8) |
| | | bind.protocolLayout.tabLayout.addOnTabSelectedListener(object : |
| | | TabLayout.OnTabSelectedListener { |
| | | override fun onTabSelected(tab: TabLayout.Tab?) { |
| | | tab?.let { |
| | | when (it.text) { |
| | | "用户协议" -> getProtocol(1) |
| | | "隐私条款" -> getProtocol(2) |
| | | "小鹏Robotaxi...隐私政策" -> getProtocol(8) |
| | | "第三方共享信息清单" -> getProtocol(9) |
| | | "个人信息收集清单" -> getProtocol(10) |
| | | "权限调用" -> getProtocol(11) |
| | | else -> {} |
| | | } |
| | | } |
| | | } |
| | | |
| | | override fun onTabUnselected(tab: TabLayout.Tab?) {} |
| | | override fun onTabReselected(tab: TabLayout.Tab?) {} |
| | | }) |
| | | launchRequest { |
| | | userRepository.getAgreeConfig()?.also { list -> |
| | | runOnMainThread { |
| | | showProtocolDialog(currentShowActivity, forced, list, dismissBlock) |
| | | } |
| | | setOnDismissListener { dismissBlock?.invoke() } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //显示隐私弹窗 |
| | | private fun showProtocolDialog( |
| | | currentShowActivity: Activity, |
| | | forced: Boolean, |
| | | list: List<AgreeInfo>, |
| | | dismissBlock: (() -> Unit)? = null |
| | | ) { |
| | | DialogFactory.produce(currentShowActivity).cornerRadius(15f).cancelable(!forced).show { |
| | | customView( |
| | | com.xw.yunwei.R.layout.dialog_protocol, |
| | | noVerticalPadding = true, |
| | | dialogWrapContent = true |
| | | ) |
| | | DataBindingUtil.bind<DialogProtocolBinding>(getCustomView())?.let { bind -> |
| | | list.forEachIndexed { index, info -> |
| | | val tab = bind.protocolLayout.tabLayout.newTab().apply { text = info.name } |
| | | bind.protocolLayout.tabLayout.addTab(tab, index == 0) |
| | | } |
| | | // bind.btnLeft.text = if (forced) "取消并退出" else "关闭" |
| | | bind.btnLeft.text = "关闭" |
| | | bind.btnLeft.setOnClickListener { |
| | | dismiss() |
| | | if (forced) { |
| | | currentShowActivity.finishAffinity() |
| | | android.os.Process.killProcess(android.os.Process.myPid()) |
| | | } |
| | | } |
| | | bind.btnRight.setOnClickListener { |
| | | MMKVManager.getInstance().saveBoolean(KeyPreferences.NEED_READ, false) |
| | | dismiss() |
| | | } |
| | | initWeb(bind.protocolLayout.web) |
| | | |
| | | bind.protocolLayout.tabLayout.addOnTabSelectedListener(object : |
| | | TabLayout.OnTabSelectedListener { |
| | | override fun onTabSelected(tab: TabLayout.Tab?) { |
| | | tab?.let { |
| | | loadProtocolWeb(bind.protocolLayout.web, list, it.position) |
| | | } |
| | | } |
| | | |
| | | override fun onTabUnselected(tab: TabLayout.Tab?) {} |
| | | override fun onTabReselected(tab: TabLayout.Tab?) {} |
| | | }) |
| | | } |
| | | setOnDismissListener { dismissBlock?.invoke() } |
| | | } |
| | | } |
| | | |
| | | //加载协议网页 |
| | | private fun loadProtocolWeb(webView: WebView, list: List<AgreeInfo>, position: Int) { |
| | | list.getOrNull(position)?.takeIf { (it.id?.toIntOrNull() ?: 0) > 0 }?.also { it -> |
| | | launchRequest { |
| | | userRepository.getLoginProtocol(it.id!!.toInt())?.let { |
| | | runOnMainThread { setContent(webView, it.content ?: "") } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | private val exceptionHandler = CoroutineExceptionHandler { _, throwable -> |
| | | LogUtils.e(TAG, "Uncaught coroutine exception: ${throwable.message}") |
| | | runOnMainThread { |
| | | ToastUtilCommon.showError(getNetworkErrorMessage(throwable)) |
| | | } |
| | | } |
| | | |
| | | private suspend fun errorHandling( |
| | | e: Throwable, |
| | | error: suspend (code: Int, msg: String) -> Unit |
| | | ) { |
| | | if (e is ApiException) { |
| | | when { |
| | | e.isTokenExpired() -> { |
| | | MMKVManager.getInstance().clear() |
| | | ToastUtilCommon.showWarn("登录已过期,请重新登录") |
| | | CoroutineScope(Dispatchers.IO + exceptionHandler).launch { |
| | | delay(1000) |
| | | AppUtils.relaunchApp(true) |
| | | } |
| | | } |
| | | |
| | | else -> { |
| | | error.invoke(e.code, e.message ?: "") |
| | | } |
| | | } |
| | | } else { |
| | | val errorMsg = getNetworkErrorMessage(e) |
| | | error.invoke(-1, errorMsg) |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取网络异常的友好提示信息 |
| | | */ |
| | | private fun getNetworkErrorMessage(e: Throwable): String { |
| | | return when (e) { |
| | | is UnknownHostException -> "网络连接失败,请检查网络设置" |
| | | is ConnectException -> "无法连接到服务器,请检查网络" |
| | | is SocketTimeoutException -> "连接超时,请稍后重试" |
| | | is SocketException -> "网络异常,请检查网络连接" |
| | | is IOException -> "网络请求失败,请检查网络" |
| | | else -> e.message ?: "未知错误" |
| | | } |
| | | } |
| | | |
| | | //运行在主线程 |
| | | private fun runOnMainThread(block: () -> Unit) { |
| | | CoroutineScope(Dispatchers.Main + exceptionHandler).launch { |
| | | block() |
| | | } |
| | | } |
| | | |
| | | private fun launchRequest( |
| | | error: suspend (code: Int, msg: String) -> Unit = { code, msg -> |
| | | ToastUtilCommon.showError(msg) |
| | | LogUtils.e(TAG, "launchRequest: code = $code msg = $msg") |
| | | }, request: suspend () -> Unit |
| | | ) { |
| | | CoroutineScope(Dispatchers.IO + exceptionHandler).launch { |
| | | try { |
| | | request() |
| | | } catch (e: Throwable) { |
| | | try { |
| | | errorHandling(e, error) |
| | | } catch (handlingError: Throwable) { |
| | | LogUtils.e(TAG, "Error handling failed: ${handlingError.message}") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | import android.content.pm.PackageManager |
| | | import android.os.Build |
| | | import android.os.Bundle |
| | | import android.view.View |
| | | import androidx.core.content.ContextCompat |
| | | import androidx.fragment.app.Fragment |
| | | import androidx.fragment.app.FragmentTransaction |
| | | import androidx.lifecycle.lifecycleScope |
| | | import com.amap.api.location.AMapLocation |
| | | import com.blankj.utilcode.util.AppUtils |
| | |
| | | MineFragment::class.java.name |
| | | ) |
| | | lateinit var gpsHelper: GpsHelper |
| | | |
| | | /** |
| | | * 进程被杀重建时(如后台禁用运行时权限触发进程死亡), |
| | | * ViewModel 会被重建、selectIndex 丢失并回退到默认 0。 |
| | | * 此处在 ViewModel 创建之后、setObservable 注册观察者之前, |
| | | * 先把上次保存的 index 恢复回去,避免重建后底部导航错乱。 |
| | | */ |
| | | override fun myCreate(savedInstanceState: Bundle?) { |
| | | super.myCreate(savedInstanceState) |
| | | savedInstanceState?.let { |
| | | if (it.containsKey(KEY_SELECT_INDEX)) { |
| | | viewModel.selectIndex.value = it.getInt(KEY_SELECT_INDEX) |
| | | } |
| | | } |
| | | } |
| | | |
| | | override fun onSaveInstanceState(outState: Bundle) { |
| | | super.onSaveInstanceState(outState) |
| | | viewModel.selectIndex.value?.let { outState.putInt(KEY_SELECT_INDEX, it) } |
| | | } |
| | | |
| | | override fun init() { |
| | | super.init() |
| | | val user = MMKVManager.getInstance().getModel<UserInfo>(KeyPreferences.USER) |
| | |
| | | super.setObservable() |
| | | viewModel.selectIndex.observe(this) { |
| | | showFragment(it) |
| | | if (viewModel.taskPermissions.value == true) { |
| | | binding.navView.visibility = if (viewModel.workPermissions.value == true) { |
| | | if (it == 1) View.GONE else View.VISIBLE |
| | | } else { |
| | | if (it == 0) View.GONE else View.VISIBLE |
| | | } |
| | | } else { |
| | | binding.navView.visibility = View.VISIBLE |
| | | } |
| | | updateNavViewVisibility(it) |
| | | } |
| | | MyApp.permissions.observe(this) { |
| | | viewModel.workPermissions.value = MyApp.findPermissionByName("工作台")?.visible == "0" |
| | |
| | | currentIndex = 2 |
| | | } |
| | | viewModel.changeSelectFragmentIndex(currentIndex) |
| | | // 权限可能在 index 不变的情况下变化,需主动重算底部主导航可见性, |
| | | // 否则 selectIndex 不发射时 navView 可见性无法被纠正(双 Tab bar 叠加根因之一) |
| | | updateNavViewVisibility(currentIndex) |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重新计算 Activity 底部主导航(工作台/任务中心/我的)的可见性。 |
| | | * 进入任务中心(index==1)时隐藏主导航,仅展示 TaskFragment 自带的底部栏。 |
| | | * 抽成独立方法,使其在 index 变化与权限变化时都能被触发。 |
| | | */ |
| | | private fun updateNavViewVisibility(index: Int) { |
| | | binding.navView.visibility = if (viewModel.taskPermissions.value == true) { |
| | | if (viewModel.workPermissions.value == true) { |
| | | if (index == 1) View.GONE else View.VISIBLE |
| | | } else { |
| | | if (index == 0) View.GONE else View.VISIBLE |
| | | } |
| | | } else { |
| | | View.VISIBLE |
| | | } |
| | | } |
| | | |
| | |
| | | if (it.forceUpdateFlag == 1) { |
| | | UpdateManager.instance!! |
| | | .setContext(this@MainActivity) |
| | | .apkUrl(it.androidFile ?: "") |
| | | .apkUrl(it.getDownloadUrl() ?: "") |
| | | .updateContent(it.updateDescription ?: "") |
| | | .updateVersionCode(it.versionCode ?: 1) |
| | | .updateVersionName(it.version ?: "1.0") |
| | |
| | | private fun showFragment(from: Fragment?, to: Fragment, tag: String) { |
| | | val transaction = supportFragmentManager.beginTransaction() |
| | | if (from == null) { |
| | | // 进程重建后 mCurrentFragment 丢失,FragmentManager 会自动恢复之前 add 过的 |
| | | // Fragment 并保留其显隐状态。此处主动隐藏除目标外的其他 Fragment, |
| | | // 避免任务中心与工作台等 Fragment 叠加导致出现两套底部 Tab bar。 |
| | | hideOtherFragments(transaction, tag) |
| | | if (to.isAdded) { |
| | | transaction.show(to) |
| | | } else { |
| | |
| | | } |
| | | transaction.commit() |
| | | mCurrentFragment = to |
| | | } |
| | | |
| | | /** |
| | | * 隐藏除 currentTag 之外、已被 FragmentManager 恢复/添加的导航 Fragment, |
| | | * 保证同一时刻只有一个 Fragment 可见。 |
| | | */ |
| | | private fun hideOtherFragments(transaction: FragmentTransaction, currentTag: String) { |
| | | for (name in fragmentNames) { |
| | | if (name == currentTag) continue |
| | | supportFragmentManager.findFragmentByTag(name)?.let { transaction.hide(it) } |
| | | } |
| | | } |
| | | |
| | | override fun onResume() { |
| | |
| | | override fun location(pLocation: AMapLocation?) { |
| | | |
| | | } |
| | | |
| | | companion object { |
| | | private const val KEY_SELECT_INDEX = "key_select_index" |
| | | } |
| | | } |
| | |
| | | map["disposalImage"] = "${adapters[2].data.map { it.url }}" |
| | | map["taskTypeId"] = getSelectType() |
| | | taskRepository.handleVehicleAccident(map) |
| | | ToastUtilCommon.showSuc("提交成功") |
| | | ToastUtilCommon.showSuc("提交成功,事故已归档") |
| | | |
| | | startActivity(MainActivity::class.java) |
| | | } |
| | |
| | | bind.minutes.text = if (list[1] < 10) "0${list[1]}" else "${list[1]}" |
| | | bind.second.text = if (list[2] < 10) "0${list[2]}" else "${list[2]}" |
| | | |
| | | // 当剩余时间不足1分钟时,切换为红色警示样式 |
| | | val showRed = list[0] == 0L && list[1] == 0L |
| | | // 当剩余时间不足3分钟时,切换为红色警示样式 |
| | | val showRed = list[0] == 0L && list[1] <= 3L |
| | | |
| | | val countdownId = |
| | | if (showRed) R.mipmap.img_task_item_top_bg_red else R.mipmap.img_task_item_top_bg_blue |
| | |
| | | if (versionCode < (it.forceUpdateFlag ?: 0)) { |
| | | UpdateManager.instance!! |
| | | .setContext(this@SetActivity) |
| | | .apkUrl(it.androidFile ?: "") |
| | | .apkUrl(it.getDownloadUrl() ?: "") |
| | | .updateContent(it.updateDescription ?: "") |
| | | .updateVersionCode(it.versionCode ?: 1) |
| | | .updateVersionName(it.version ?: "1.0") |
| | |
| | | ) |
| | | ) |
| | | binding.batteryView.setLevel(item.currentElectricity ?: 0) |
| | | |
| | | val setStatus: (Int) -> Unit = { id -> |
| | | binding.status.setImageResource(id) |
| | | } |
| | | |
| | | // 1=运营中 2=维修中 3=已收车 4=车辆异常 |
| | | when (item.operatingStatus) { |
| | | 1 -> setStatus(R.mipmap.ic_work_fache) |
| | | 2 -> setStatus(R.mipmap.ic_work_weixiu) |
| | | 3 -> setStatus(R.mipmap.ic_work_quche) |
| | | 4 -> setStatus(R.mipmap.ic_work_weixiu) |
| | | } |
| | | binding.status.setImageResource(item.getShowStatusImageResource()) |
| | | } |
| | | } |
| | | |
| | |
| | | binding.slideView1.animateReset() |
| | | }, |
| | | confirmBlock = { point, dialog -> |
| | | dialog.dismiss() |
| | | viewModel.vehicleDispatchDeparture( |
| | | setStatus = setStatus, |
| | | xpPointId = point.id, |
| | | error = { |
| | | SelectConfirmAcceptCarPointDialog.hadOperation = false |
| | | }) { |
| | | dialog.dismiss() |
| | | if (getSlideDirection() == DIRECTION_RIGHT) { |
| | | resetSlideView(this, DIRECTION_LEFT, "左滑收车") |
| | | } else if (getSlideDirection() == DIRECTION_LEFT) { |
| | |
| | | |
| | | import android.annotation.SuppressLint |
| | | import android.net.Uri |
| | | import android.widget.TextView |
| | | import androidx.lifecycle.MutableLiveData |
| | | import androidx.recyclerview.widget.GridLayoutManager |
| | | import com.blankj.utilcode.util.UriUtils |
| | | import com.luck.picture.lib.config.PictureMimeType |
| | |
| | | import com.xw.common.base.ImageEventListener |
| | | import com.xw.common.base.ImageSelectAdapter |
| | | import com.xw.common.base.ShowImgListDialog |
| | | import com.xw.common.custom.SlideSwitchView.OnStateChangeListener |
| | | import com.xw.common.utils.ToastUtilCommon |
| | | import com.xw.common.viewAdapter.ImageDefault |
| | | import com.xw.common.viewAdapter.ViewAdapter |
| | | import com.xw.yunwei.BR |
| | |
| | | import com.xw.yunwei.Constants.user |
| | | import com.xw.yunwei.R |
| | | import com.xw.yunwei.databinding.ActivityCarCheckBinding |
| | | import com.xw.yunwei.extension.colorIdToColorValue |
| | | import com.xw.yunwei.model.CarModel |
| | | import com.xw.yunwei.model.CheckRecordModel |
| | | import com.xw.yunwei.utils.PictureSelectorFactory |
| | | import androidx.core.net.toUri |
| | | |
| | | /** |
| | | * 车辆检测 |
| | |
| | | ) |
| | | viewModel.queryInfo() |
| | | initAdapter() |
| | | viewModel.switchs.clear() |
| | | viewModel.switchs.addAll( |
| | | listOf( |
| | | binding.switch1, |
| | | binding.switch2, |
| | | binding.switch3, |
| | | binding.switch4, |
| | | binding.switch5 |
| | | ) |
| | | ) |
| | | } |
| | | |
| | | override fun setListener() { |
| | | super.setListener() |
| | | /** |
| | | * 未检测状态必须是没有照片的情况下修改,传了照片不能修改为未检测:提示先删除照片; |
| | | * 未传照片可以改为已检测,照片非必传 |
| | | */ |
| | | binding.switch1.setOnStateChangeListener(object : OnStateChangeListener { |
| | | override fun onStateChanged(isChecked: Boolean) { |
| | | if (viewModel.adapters[0].data.isNotEmpty() && !isChecked) { |
| | | binding.switch1.setChecked(checked = true, animate = true) |
| | | ToastUtilCommon.showWarn("请先删除照片") |
| | | } else { |
| | | viewModel.requestModel.sensorCleaning = if (isChecked) 1 else 0 |
| | | } |
| | | } |
| | | }) |
| | | binding.switch2.setOnStateChangeListener(object : OnStateChangeListener { |
| | | override fun onStateChanged(isChecked: Boolean) { |
| | | if (viewModel.adapters[1].data.isNotEmpty() && !isChecked) { |
| | | binding.switch2.setChecked(checked = true, animate = true) |
| | | ToastUtilCommon.showWarn("请先删除照片") |
| | | } else { |
| | | viewModel.requestModel.interactiveScreen = if (isChecked) 1 else 0 |
| | | } |
| | | } |
| | | }) |
| | | binding.switch3.setOnStateChangeListener(object : OnStateChangeListener { |
| | | override fun onStateChanged(isChecked: Boolean) { |
| | | if (viewModel.adapters[2].data.isNotEmpty() && !isChecked) { |
| | | binding.switch3.setChecked(checked = true, animate = true) |
| | | ToastUtilCommon.showWarn("请先删除照片") |
| | | } else { |
| | | viewModel.requestModel.helpButton = if (isChecked) 1 else 0 |
| | | } |
| | | } |
| | | }) |
| | | binding.switch4.setOnStateChangeListener(object : OnStateChangeListener { |
| | | override fun onStateChanged(isChecked: Boolean) { |
| | | if (viewModel.adapters[3].data.isNotEmpty() && !isChecked) { |
| | | binding.switch4.setChecked(checked = true, animate = true) |
| | | ToastUtilCommon.showWarn("请先删除照片") |
| | | } else { |
| | | viewModel.requestModel.paymentFunction = if (isChecked) 1 else 0 |
| | | } |
| | | } |
| | | }) |
| | | binding.switch5.setOnStateChangeListener(object : OnStateChangeListener { |
| | | override fun onStateChanged(isChecked: Boolean) { |
| | | if (viewModel.adapters[4].data.isNotEmpty() && !isChecked) { |
| | | binding.switch5.setChecked(checked = true, animate = true) |
| | | ToastUtilCommon.showWarn("请先删除照片") |
| | | } else { |
| | | viewModel.requestModel.systemCheck = if (isChecked) 1 else 0 |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | override fun setObservable() { |
| | |
| | | } else { |
| | | adapter.setList(it) // 后续更新 |
| | | } |
| | | } |
| | | |
| | | viewModel.checkStatus1.observe(this) { |
| | | refreshStatus(binding.tvStatus1, it) |
| | | } |
| | | |
| | | viewModel.checkStatus2.observe(this) { |
| | | refreshStatus(binding.tvStatus2, it) |
| | | } |
| | | |
| | | viewModel.checkStatus3.observe(this) { |
| | | refreshStatus(binding.tvStatus3, it) |
| | | } |
| | | |
| | | viewModel.checkStatus4.observe(this) { |
| | | refreshStatus(binding.tvStatus4, it) |
| | | } |
| | | |
| | | viewModel.checkStatus5.observe(this) { |
| | | refreshStatus(binding.tvStatus5, it) |
| | | } |
| | | } |
| | | |
| | | //刷新状态 |
| | | private fun refreshStatus(textView: TextView, hadChecked: Boolean) { |
| | | textView.setBackgroundResource(if (hadChecked) R.drawable.shape_green_1_bg_2 else R.drawable.shape_gray_3_bg_2) |
| | | textView.setTextColor( |
| | | (if (hadChecked) com.xw.common.R.color.green_5 else com.xw.common.R.color.gray_8).colorIdToColorValue( |
| | | this |
| | | ) |
| | | ) |
| | | textView.text = if (hadChecked) "检测完成" else "待检测" |
| | | } |
| | | |
| | | //获取状态 |
| | | private fun getStatusLiveData(position: Int): MutableLiveData<Boolean> { |
| | | return when (position) { |
| | | 0 -> viewModel.checkStatus1 |
| | | 1 -> viewModel.checkStatus2 |
| | | 2 -> viewModel.checkStatus3 |
| | | 3 -> viewModel.checkStatus4 |
| | | 4 -> viewModel.checkStatus5 |
| | | else -> MutableLiveData(false) |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | override fun deleteImage(item: FileSelectBean) { |
| | | viewModel.adapters[index].remove(item) |
| | | if (viewModel.adapters[index].data.isEmpty() && viewModel.switchs[index].isChecked()) { |
| | | viewModel.switchs[index].setChecked( |
| | | checked = false, |
| | | animate = true |
| | | ) |
| | | if (viewModel.adapters[index].data.isEmpty() && getStatusLiveData(index).value == true) { |
| | | getStatusLiveData(index).value = false |
| | | } |
| | | } |
| | | } |
| | |
| | | val path: String = item.availablePath |
| | | var imgPath = |
| | | if (PictureMimeType.isContent(path) && !item.isCut && !item.isCompressed) { |
| | | UriUtils.uri2File(Uri.parse(path)).absolutePath |
| | | UriUtils.uri2File(path.toUri()).absolutePath |
| | | } else { |
| | | path |
| | | } |
| | | dataList.add(FileSelectBean(localPath = imgPath, type = "img")) |
| | | } |
| | | viewModel.adapters[viewModel.operateIndex].setList(dataList) |
| | | if (dataList.isNotEmpty() && !viewModel.switchs[viewModel.operateIndex].isChecked()) { |
| | | viewModel.switchs[viewModel.operateIndex].setChecked( |
| | | checked = true, |
| | | animate = true |
| | | ) |
| | | if (dataList.isNotEmpty() && getStatusLiveData(viewModel.operateIndex).value != true) { |
| | | getStatusLiveData(viewModel.operateIndex).value = true |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.xw.common.base.FileSelectBean |
| | | import com.xw.common.base.ImageEventListener |
| | | import com.xw.common.base.ImageSelectAdapter |
| | | import com.xw.common.custom.SlideSwitchView |
| | | import com.xw.common.utils.ToastUtilCommon |
| | | import com.xw.yunwei.R |
| | | import com.xw.yunwei.model.CarCheckModel |
| | |
| | | } |
| | | } |
| | | |
| | | val switchs = mutableListOf<SlideSwitchView>() |
| | | val adaptersName = |
| | | listOf("传感器清洁", "车内交互屏检查", "紧急求助按钮/应答机", "支付功能", "订单系统检查") |
| | | //传感器清洁 检测状态 |
| | | val checkStatus1 = MutableLiveData(false) |
| | | |
| | | //车内交互屏检查 检测状态 |
| | | val checkStatus2 = MutableLiveData(false) |
| | | |
| | | //紧急求助按钮/应答机 检测状态 |
| | | val checkStatus3 = MutableLiveData(false) |
| | | |
| | | //支付功能 检测状态 |
| | | val checkStatus4 = MutableLiveData(false) |
| | | |
| | | //订单系统检查 检测状态 |
| | | val checkStatus5 = MutableLiveData(false) |
| | | |
| | | val adapters = mutableListOf<ImageSelectAdapter>() |
| | | val imageEvents = mutableListOf<ImageEventListener<FileSelectBean>>() |
| | | val maxSizes = listOf(6, 6, 6, 6, 6) // 先默认每个都是最大9张 |
| | |
| | | // return |
| | | // } |
| | | adapters.forEachIndexed { index, adapter -> |
| | | if ((adapter.data.isEmpty() || !switchs[index].isChecked()) && index != 3) { |
| | | if ((adapter.data.isEmpty() && index != 3) || |
| | | checkStatus1.value != true || |
| | | checkStatus2.value != true || |
| | | checkStatus3.value != true || |
| | | // checkStatus4.value != true || |
| | | checkStatus5.value != true |
| | | ) { |
| | | // ToastUtilCommon.showError("请上传${adaptersName[index]}照片或修改检测状态") |
| | | ToastUtilCommon.showError("请完成所有检测项并上传图片") |
| | | return |
| | |
| | | import com.xw.common.viewAdapter.ViewAdapter |
| | | import com.xw.yunwei.R |
| | | import com.xw.yunwei.databinding.ItemWorkManageCarBinding |
| | | import com.xw.yunwei.extension.colorIdToColorValue |
| | | import com.xw.yunwei.model.CarModel |
| | | |
| | | class CarAdapter(var listener: OnItemClickListener<CarModel>) : |
| | |
| | | ) |
| | | ) |
| | | binding.batteryView.setLevel(item.currentElectricity ?: 0) |
| | | |
| | | val setStatus: (Int, Int) -> Unit = { text, bg -> |
| | | binding.status.setTextColor(text) |
| | | binding.status.setBackgroundResource(bg) |
| | | } |
| | | |
| | | // 1=运营中 2=维修中 3=已收车 4=车辆异常 |
| | | when (item.operatingStatus) { |
| | | 1 -> { |
| | | setStatus( |
| | | getResColor(com.xw.common.R.color.blue_5), |
| | | com.xw.common.R.color.blue_1 |
| | | ) |
| | | binding.status.text = "运营中" |
| | | } |
| | | |
| | | 2 -> { |
| | | setStatus( |
| | | getResColor(com.xw.common.R.color.red_5), |
| | | com.xw.common.R.color.red_1 |
| | | ) |
| | | binding.status.text = "维修中" |
| | | } |
| | | |
| | | 3 -> { |
| | | setStatus( |
| | | getResColor(com.xw.common.R.color.gray_7), |
| | | com.xw.common.R.color.gray_3 |
| | | ) |
| | | binding.status.text = "已收车" |
| | | } |
| | | |
| | | 4 -> { |
| | | setStatus( |
| | | getResColor(com.xw.common.R.color.orange_5), |
| | | com.xw.common.R.color.orange_1 |
| | | ) |
| | | binding.status.text = "车辆异常" |
| | | } |
| | | } |
| | | binding.status.setBackgroundResource(item.getShowStatusBgResource()) |
| | | binding.status.setTextColor(item.getShowStatusTextColor().colorIdToColorValue(it.root.context)) |
| | | binding.status.text=item.getShowStatus() |
| | | } |
| | | } |
| | | |
| | |
| | | dismiss() |
| | | } |
| | | } |
| | | setOnDismissListener { binding.filterOverlay.visibility = View.GONE } |
| | | } |
| | | } |
| | | |
| | | filterDialog?.show() |
| | | binding.filterOverlay.visibility = View.VISIBLE |
| | | // 关键:让软键盘把 BottomSheet 顶上去 |
| | | filterDialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) |
| | | filterDialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) |
| | | filterDialog?.window?.setLayout( |
| | | ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT |
| | | ) |
| New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <shape xmlns:android="http://schemas.android.com/apk/res/android"> |
| | | <corners android:radius="@dimen/dp_2" /> |
| | | <solid android:color="@color/blue_1" /> |
| | | </shape> |
| | |
| | | |
| | | <RelativeLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_66" |
| | | android:layout_height="wrap_content" |
| | | android:background="@color/white" |
| | | app:layout_constraintBottom_toBottomOf="parent"> |
| | | |
| | |
| | | android:background="@color/gray_4" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_notice" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:layout_centerHorizontal="true" |
| | | android:layout_marginHorizontal="@dimen/dp_28" |
| | | android:text="提交归档后,任务列表不再展示本条事故" |
| | | android:textColor="@color/gray_7" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tvControl" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_40" |
| | | android:layout_centerVertical="true" |
| | | android:layout_below="@id/tv_notice" |
| | | android:layout_marginVertical="@dimen/dp_12" |
| | | android:layout_marginHorizontal="@dimen/dp_28" |
| | | android:background="@drawable/shape_blue_5_bg_4" |
| | | android:gravity="center" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_168" |
| | | android:layout_marginTop="@dimen/dp_10" |
| | | android:scaleType="centerCrop" |
| | | android:adjustViewBounds="true" |
| | | android:scaleType="centerCrop" |
| | | android:src="@mipmap/img_work_car1" /> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | |
| | | android:id="@+id/viewDetail" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:layout_marginEnd="@dimen/dp_16" |
| | | android:onClick="@{viewModel.onClick}" |
| | | android:padding="4dp" |
| | | android:text="标准说明" |
| | |
| | | app:layout_constraintStart_toEndOf="@id/v_point1" |
| | | app:layout_constraintTop_toBottomOf="@+id/tv1" /> |
| | | |
| | | <com.xw.common.custom.SlideSwitchView |
| | | android:id="@+id/switch1" |
| | | android:layout_width="@dimen/dp_110" |
| | | android:layout_height="@dimen/dp_36" |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_status1" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:background="@drawable/shape_gray_3_bg_2" |
| | | android:textColor="@color/gray_8" |
| | | android:gravity="center" |
| | | android:paddingHorizontal="@dimen/dp_8" |
| | | android:paddingVertical="@dimen/dp_4" |
| | | android:text="待检测" |
| | | android:textSize="@dimen/sp_12" |
| | | app:layout_constraintBottom_toBottomOf="@+id/tv2" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/tv2" |
| | | app:switchBackgroundColorChecked="@color/gray_3" |
| | | app:switchBackgroundColorUnchecked="@color/gray_3" |
| | | app:switchChecked="false" |
| | | app:switchCornerRadius="@dimen/dp_4" |
| | | app:switchEnable="false" |
| | | app:switchTextChecked="检测完成" |
| | | app:switchTextColorChecked="@color/white" |
| | | app:switchTextColorUnchecked="@color/white" |
| | | app:switchTextSize="@dimen/sp_12" |
| | | app:switchTextUnchecked="待检测" |
| | | app:switchThumbColorChecked="@color/green_5" |
| | | app:switchThumbColorUnchecked="@color/gray_6" |
| | | app:switchThumbCornerRadius="@dimen/dp_4" |
| | | app:switchThumbMargin="@dimen/dp_2" /> |
| | | app:layout_constraintTop_toTopOf="@+id/tv2" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_label2" |
| | |
| | | app:layout_constraintStart_toEndOf="@id/v_point2" |
| | | app:layout_constraintTop_toBottomOf="@+id/rv1" /> |
| | | |
| | | <com.xw.common.custom.SlideSwitchView |
| | | android:id="@+id/switch2" |
| | | android:layout_width="@dimen/dp_110" |
| | | android:layout_height="@dimen/dp_36" |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_status2" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:background="@drawable/shape_gray_3_bg_2" |
| | | android:textColor="@color/gray_8" |
| | | android:gravity="center" |
| | | android:paddingHorizontal="@dimen/dp_8" |
| | | android:paddingVertical="@dimen/dp_4" |
| | | android:text="待检测" |
| | | android:textSize="@dimen/sp_12" |
| | | app:layout_constraintBottom_toBottomOf="@+id/tv3" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/tv3" |
| | | app:switchBackgroundColorChecked="@color/gray_3" |
| | | app:switchBackgroundColorUnchecked="@color/gray_3" |
| | | app:switchChecked="false" |
| | | app:switchCornerRadius="@dimen/dp_4" |
| | | app:switchEnable="false" |
| | | app:switchTextChecked="检测完成" |
| | | app:switchTextColorChecked="@color/white" |
| | | app:switchTextColorUnchecked="@color/white" |
| | | app:switchTextSize="@dimen/sp_12" |
| | | app:switchTextUnchecked="待检测" |
| | | app:switchThumbColorChecked="@color/green_5" |
| | | app:switchThumbColorUnchecked="@color/gray_6" |
| | | app:switchThumbCornerRadius="@dimen/dp_4" |
| | | app:switchThumbMargin="@dimen/dp_2" /> |
| | | app:layout_constraintTop_toTopOf="@+id/tv3" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_label3" |
| | |
| | | app:layout_constraintStart_toEndOf="@id/v_point3" |
| | | app:layout_constraintTop_toBottomOf="@+id/rv2" /> |
| | | |
| | | <com.xw.common.custom.SlideSwitchView |
| | | android:id="@+id/switch3" |
| | | android:layout_width="@dimen/dp_110" |
| | | android:layout_height="@dimen/dp_36" |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_status3" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:background="@drawable/shape_gray_3_bg_2" |
| | | android:textColor="@color/gray_8" |
| | | android:gravity="center" |
| | | android:paddingHorizontal="@dimen/dp_8" |
| | | android:paddingVertical="@dimen/dp_4" |
| | | android:text="待检测" |
| | | android:textSize="@dimen/sp_12" |
| | | app:layout_constraintBottom_toBottomOf="@+id/tv4" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/tv4" |
| | | app:switchBackgroundColorChecked="@color/gray_3" |
| | | app:switchBackgroundColorUnchecked="@color/gray_3" |
| | | app:switchChecked="false" |
| | | app:switchCornerRadius="@dimen/dp_4" |
| | | app:switchEnable="false" |
| | | app:switchTextChecked="检测完成" |
| | | app:switchTextColorChecked="@color/white" |
| | | app:switchTextColorUnchecked="@color/white" |
| | | app:switchTextSize="@dimen/sp_12" |
| | | app:switchTextUnchecked="待检测" |
| | | app:switchThumbColorChecked="@color/green_5" |
| | | app:switchThumbColorUnchecked="@color/gray_6" |
| | | app:switchThumbCornerRadius="@dimen/dp_4" |
| | | app:switchThumbMargin="@dimen/dp_2" /> |
| | | app:layout_constraintTop_toTopOf="@+id/tv4" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_label4" |
| | |
| | | app:layout_constraintTop_toBottomOf="@+id/rv3" |
| | | tools:visibility="visible" /> |
| | | |
| | | <com.xw.common.custom.SlideSwitchView |
| | | android:id="@+id/switch4" |
| | | android:layout_width="@dimen/dp_110" |
| | | android:layout_height="@dimen/dp_36" |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_status4" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:background="@drawable/shape_gray_3_bg_2" |
| | | android:textColor="@color/gray_8" |
| | | android:gravity="center" |
| | | android:paddingHorizontal="@dimen/dp_8" |
| | | android:paddingVertical="@dimen/dp_4" |
| | | android:text="待检测" |
| | | android:textSize="@dimen/sp_12" |
| | | android:visibility="gone" |
| | | app:layout_constraintBottom_toBottomOf="@+id/tv5" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/tv5" |
| | | app:switchBackgroundColorChecked="@color/gray_3" |
| | | app:switchBackgroundColorUnchecked="@color/gray_3" |
| | | app:switchChecked="false" |
| | | app:switchCornerRadius="@dimen/dp_4" |
| | | app:switchEnable="false" |
| | | app:switchTextChecked="检测完成" |
| | | app:switchTextColorChecked="@color/white" |
| | | app:switchTextColorUnchecked="@color/white" |
| | | app:switchTextSize="@dimen/sp_12" |
| | | app:switchTextUnchecked="待检测" |
| | | app:switchThumbColorChecked="@color/green_5" |
| | | app:switchThumbColorUnchecked="@color/gray_6" |
| | | app:switchThumbCornerRadius="@dimen/dp_4" |
| | | app:switchThumbMargin="@dimen/dp_2" |
| | | tools:visibility="visible" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | |
| | | app:layout_constraintStart_toEndOf="@id/v_point5" |
| | | app:layout_constraintTop_toBottomOf="@+id/rv4" /> |
| | | |
| | | <com.xw.common.custom.SlideSwitchView |
| | | android:id="@+id/switch5" |
| | | android:layout_width="@dimen/dp_110" |
| | | android:layout_height="@dimen/dp_36" |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_status5" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:background="@drawable/shape_gray_3_bg_2" |
| | | android:textColor="@color/gray_8" |
| | | android:gravity="center" |
| | | android:paddingHorizontal="@dimen/dp_8" |
| | | android:paddingVertical="@dimen/dp_4" |
| | | android:text="待检测" |
| | | android:textSize="@dimen/sp_12" |
| | | app:layout_constraintBottom_toBottomOf="@+id/tv6" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/tv6" |
| | | app:switchBackgroundColorChecked="@color/gray_3" |
| | | app:switchBackgroundColorUnchecked="@color/gray_3" |
| | | app:switchChecked="false" |
| | | app:switchCornerRadius="@dimen/dp_4" |
| | | app:switchEnable="false" |
| | | app:switchTextChecked="检测完成" |
| | | app:switchTextColorChecked="@color/white" |
| | | app:switchTextColorUnchecked="@color/white" |
| | | app:switchTextSize="@dimen/sp_12" |
| | | app:switchTextUnchecked="待检测" |
| | | app:switchThumbColorChecked="@color/green_5" |
| | | app:switchThumbColorUnchecked="@color/gray_6" |
| | | app:switchThumbCornerRadius="@dimen/dp_4" |
| | | app:switchThumbMargin="@dimen/dp_2" /> |
| | | app:layout_constraintTop_toTopOf="@+id/tv6" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv_label6" |
| | |
| | | </LinearLayout> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | <View |
| | | android:id="@+id/filterOverlay" |
| | | android:layout_width="0dp" |
| | | android:layout_height="0dp" |
| | | android:background="#80000000" |
| | | android:elevation="@dimen/dp_4" |
| | | android:visibility="gone" |
| | | app:layout_constraintTop_toBottomOf="@id/topLayout" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" /> |
| | | |
| | | <androidx.coordinatorlayout.widget.CoordinatorLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/back" /> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/searchLayout" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_56" |
| | | android:layout_marginTop="@dimen/dp_88" |
| | | android:gravity="center_vertical" |
| | | android:paddingHorizontal="@dimen/dp_10" |
| | | app:layout_constraintTop_toTopOf="parent"> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/searchLayout" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_56" |
| | | android:background="@color/white" |
| | | android:gravity="center_vertical" |
| | | android:paddingHorizontal="@dimen/dp_10" |
| | | app:layout_constraintTop_toBottomOf="@+id/topLayout"> |
| | | |
| | | <com.xw.yunwei.ui.widget.ClearEditText |
| | | android:id="@+id/searchEt" |
| | |
| | | |
| | | </LinearLayout> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | <androidx.coordinatorlayout.widget.CoordinatorLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:elevation="@dimen/dp_2" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/topLayout"> |
| | | app:layout_constraintTop_toBottomOf="@+id/searchLayout"> |
| | | |
| | | <!-- 底部滑动面板 --> |
| | | <LinearLayout |
| | |
| | | |
| | | </data> |
| | | |
| | | <androidx.core.widget.NestedScrollView |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content"> |
| | | android:layout_height="wrap_content" |
| | | android:background="@color/white" |
| | | android:paddingBottom="@dimen/dp_10"> |
| | | |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/title" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@color/white" |
| | | android:paddingBottom="@dimen/dp_10"> |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:text="车辆状态筛选" |
| | | android:textColor="@color/gray_10" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/title" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:text="车辆状态筛选" |
| | | android:textColor="@color/gray_10" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:id="@+id/close" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:adjustViewBounds="true" |
| | | android:src="@drawable/svg_close" |
| | | app:layout_constraintBottom_toBottomOf="@+id/title" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/title" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:id="@+id/close" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:adjustViewBounds="true" |
| | | android:src="@drawable/svg_close" |
| | | app:layout_constraintBottom_toBottomOf="@+id/title" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/title" /> |
| | | <View |
| | | android:id="@+id/v_line1" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1px" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:background="@color/gray_4" |
| | | app:layout_constraintTop_toBottomOf="@+id/title" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1px" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:background="@color/gray_4" |
| | | app:layout_constraintTop_toBottomOf="@+id/title" /> |
| | | <androidx.core.widget.NestedScrollView |
| | | android:layout_width="0dp" |
| | | android:layout_height="0dp" |
| | | android:orientation="vertical" |
| | | app:layout_constraintBottom_toTopOf="@id/v_line2" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/v_line1"> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_40" |
| | | android:text="运营区域" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_14" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/title" /> |
| | | |
| | | <com.xw.common.custom.ShowTextLinearLayout |
| | | android:id="@+id/stllArea" |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginHorizontal="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@+id/tv" |
| | | app:margin_width="@dimen/dp_8" |
| | | app:max_padding_width="@dimen/dp_12" |
| | | app:min_padding_width="@dimen/dp_12" |
| | | app:padding_height="@dimen/dp_6" |
| | | app:padding_left="0dp" |
| | | app:padding_right="0dp" |
| | | app:text_bg="@drawable/shape_f8f9fa_bg_4" |
| | | app:text_color="@color/gray_9" |
| | | app:text_size="@dimen/sp_12" /> |
| | | android:orientation="vertical"> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv1" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:text="车辆状态" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_14" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/stllArea" /> |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:text="运营区域" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_14" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/title" /> |
| | | |
| | | <com.xw.common.custom.ShowTextLinearLayout |
| | | android:id="@+id/stllStatus" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginHorizontal="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@+id/tv1" |
| | | app:margin_width="@dimen/dp_8" |
| | | app:max_padding_width="@dimen/dp_12" |
| | | app:min_padding_width="@dimen/dp_12" |
| | | app:padding_height="@dimen/dp_6" |
| | | app:padding_left="0dp" |
| | | app:padding_right="0dp" |
| | | app:text_bg="@drawable/shape_f8f9fa_bg_4" |
| | | app:text_color="@color/gray_9" |
| | | app:text_size="@dimen/sp_12" /> |
| | | <com.xw.common.custom.ShowTextLinearLayout |
| | | android:id="@+id/stllArea" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginHorizontal="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@+id/tv" |
| | | app:margin_width="@dimen/dp_8" |
| | | app:max_padding_width="@dimen/dp_12" |
| | | app:min_padding_width="@dimen/dp_12" |
| | | app:padding_height="@dimen/dp_6" |
| | | app:padding_left="0dp" |
| | | app:padding_right="0dp" |
| | | app:text_bg="@drawable/shape_f8f9fa_bg_4" |
| | | app:text_color="@color/gray_9" |
| | | app:text_size="@dimen/sp_12" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1px" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:background="@color/gray_4" |
| | | app:layout_constraintTop_toBottomOf="@+id/stllStatus" /> |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:id="@+id/tv1" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_20" |
| | | android:text="车辆状态" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_14" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/stllArea" /> |
| | | |
| | | <com.google.android.material.button.MaterialButton |
| | | android:id="@+id/btnLeft" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_30" |
| | | android:layout_marginEnd="@dimen/dp_5" |
| | | android:backgroundTint="@color/blue_1" |
| | | android:text="重置" |
| | | android:textColor="@color/blue_5" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | app:cornerRadius="@dimen/dp_4" |
| | | app:layout_constraintHorizontal_weight="1" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintRight_toLeftOf="@+id/btnRight" |
| | | app:layout_constraintTop_toBottomOf="@id/stllStatus" /> |
| | | <com.xw.common.custom.ShowTextLinearLayout |
| | | android:id="@+id/stllStatus" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginHorizontal="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@+id/tv1" |
| | | app:margin_width="@dimen/dp_8" |
| | | app:max_padding_width="@dimen/dp_12" |
| | | app:min_padding_width="@dimen/dp_12" |
| | | app:padding_height="@dimen/dp_6" |
| | | app:padding_left="0dp" |
| | | app:padding_right="0dp" |
| | | app:text_bg="@drawable/shape_f8f9fa_bg_4" |
| | | app:text_color="@color/gray_9" |
| | | app:text_size="@dimen/sp_12" /> |
| | | </LinearLayout> |
| | | </androidx.core.widget.NestedScrollView> |
| | | |
| | | <com.google.android.material.button.MaterialButton |
| | | android:id="@+id/btnRight" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_5" |
| | | android:layout_marginTop="@dimen/dp_30" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:backgroundTint="@color/blue_5" |
| | | android:text="确定" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | app:cornerRadius="@dimen/dp_4" |
| | | app:layout_constraintHorizontal_weight="1" |
| | | app:layout_constraintLeft_toRightOf="@+id/btnLeft" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/stllStatus" /> |
| | | <View |
| | | android:id="@+id/v_line2" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1px" |
| | | android:layout_marginTop="@dimen/dp_260" |
| | | android:background="@color/gray_4" |
| | | app:layout_constraintTop_toBottomOf="@id/v_line1" /> |
| | | |
| | | <com.google.android.material.button.MaterialButton |
| | | android:id="@+id/btnLeft" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:layout_marginEnd="@dimen/dp_5" |
| | | android:backgroundTint="@color/blue_1" |
| | | android:text="重置" |
| | | android:textColor="@color/blue_5" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | app:cornerRadius="@dimen/dp_4" |
| | | app:layout_constraintHorizontal_weight="1" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintRight_toLeftOf="@+id/btnRight" |
| | | app:layout_constraintTop_toBottomOf="@id/v_line2" /> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | </androidx.core.widget.NestedScrollView> |
| | | <com.google.android.material.button.MaterialButton |
| | | android:id="@+id/btnRight" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_5" |
| | | android:layout_marginTop="@dimen/dp_12" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:backgroundTint="@color/blue_5" |
| | | android:text="确定" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | app:cornerRadius="@dimen/dp_4" |
| | | app:layout_constraintHorizontal_weight="1" |
| | | app:layout_constraintLeft_toRightOf="@+id/btnLeft" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/v_line2" /> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | </layout> |
| | |
| | | android:orientation="horizontal" |
| | | app:layout_flexBasisPercent="50%"> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_30" |
| | | android:src="@drawable/svg_car_zhengbei" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginStart="@dimen/dp_18" |
| | | android:layout_weight="1" |
| | | android:text="车辆整备" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_16" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:src="@drawable/svg_car_zhengbei" /> |
| | | |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | |
| | | android:orientation="horizontal" |
| | | app:layout_flexBasisPercent="50%"> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_31" |
| | | android:src="@drawable/svg_car_chongdian" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:text="车辆充电" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_16" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:src="@drawable/svg_car_chongdian" /> |
| | | |
| | | </LinearLayout> |
| | | |
| | |
| | | android:gravity="center" |
| | | android:orientation="horizontal" |
| | | app:layout_flexBasisPercent="50%"> |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_33" |
| | | android:src="@drawable/svg_car_jiance" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:layout_width="0dp" |
| | |
| | | android:text="车辆检测" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_16" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:src="@drawable/svg_car_jiance" /> |
| | | |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | |
| | | android:orientation="horizontal" |
| | | app:layout_flexBasisPercent="50%"> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_30" |
| | | android:src="@drawable/svg_car_weixiu" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginStart="@dimen/dp_18" |
| | | android:layout_weight="1" |
| | | android:text="车辆维修" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_16" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:src="@drawable/svg_car_weixiu" /> |
| | | |
| | | </LinearLayout> |
| | | |
| | |
| | | android:orientation="horizontal" |
| | | app:layout_flexBasisPercent="50%"> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_31" |
| | | android:src="@drawable/svg_car_qingjie" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatTextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginStart="@dimen/dp_18" |
| | | android:layout_weight="1" |
| | | android:text="车身清洁" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_16" /> |
| | | |
| | | <androidx.appcompat.widget.AppCompatImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | android:src="@drawable/svg_car_qingjie" /> |
| | | |
| | | </LinearLayout> |
| | | |
| | |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_6" |
| | | android:text="@{viewModel.userInfo.phoneNumber}" |
| | | android:textColor="@color/blue_5" |
| | | android:textColor="@color/gray_9" |
| | | android:textSize="@dimen/sp_14" |
| | | app:layout_constraintBottom_toBottomOf="@+id/name" |
| | | app:layout_constraintStart_toEndOf="@+id/name" |
| | |
| | | <!-- |
| | | ~ Copyright (C) 2026 The Android Open Source Project |
| | | ~ |
| | | ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| | | ~ you may not use this file except in compliance with the License. |
| | | ~ You may obtain a copy of the License at |
| | | ~ |
| | | ~ http://www.apache.org/licenses/LICENSE-2.0 |
| | | ~ |
| | | ~ Unless required by applicable law or agreed to in writing, software |
| | | ~ distributed under the License is distributed on an "AS IS" BASIS, |
| | | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | ~ See the License for the specific language governing permissions and |
| | | ~ limitations under the License. |
| | | --> |
| | | <vector xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:width="17dp" |
| | | android:height="17dp" |
| | |
| | | android:viewportHeight="17"> |
| | | <path |
| | | android:pathData="M12.75,0C13.924,0 14.875,0.951 14.875,2.125L14.875,15.229L16.115,15.229C16.604,15.229 17,15.626 17,16.115C17,16.604 16.604,17 16.115,17L0.885,17C0.396,17 -0,16.604 -0,16.115C-0,15.626 0.396,15.229 0.885,15.229L2.125,15.229L2.125,2.125C2.125,0.951 3.076,0 4.25,0L12.75,0ZM9.507,7.437L6.021,11.377L7.847,11.377L7.349,14.167L11.333,10.064L9.507,10.064L9.507,7.437ZM12.396,2.125L4.604,2.125C4.233,2.125 3.925,2.411 3.898,2.78L3.896,2.833L3.896,5.313C3.896,5.683 4.181,5.991 4.551,6.019L4.604,6.021L12.396,6.021C12.767,6.021 13.075,5.735 13.102,5.366L13.104,5.313L13.104,2.833C13.104,2.442 12.787,2.125 12.396,2.125Z" |
| | | android:fillColor="#31456A"/> |
| | | android:fillColor="#31456A" |
| | | android:fillAlpha="0.8"/> |
| | | </vector> |
| | |
| | | <!-- |
| | | ~ Copyright (C) 2026 The Android Open Source Project |
| | | ~ |
| | | ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| | | ~ you may not use this file except in compliance with the License. |
| | | ~ You may obtain a copy of the License at |
| | | ~ |
| | | ~ http://www.apache.org/licenses/LICENSE-2.0 |
| | | ~ |
| | | ~ Unless required by applicable law or agreed to in writing, software |
| | | ~ distributed under the License is distributed on an "AS IS" BASIS, |
| | | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | ~ See the License for the specific language governing permissions and |
| | | ~ limitations under the License. |
| | | --> |
| | | <vector xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:width="20dp" |
| | | android:height="20dp" |
| | | android:viewportWidth="20" |
| | | android:viewportHeight="20"> |
| | | <group> |
| | | <clip-path |
| | | android:pathData="M0,0h20v20h-20z"/> |
| | | <path |
| | | android:pathData="M17.31,5.64L16,4.1L14.88,2.86C14.408,2.313 13.722,1.999 13,2L5.49,2C4.115,2 3,3.115 3,4.49L3,16.11C3,17.485 4.115,18.6 5.49,18.6L15.49,18.6C16.865,18.6 17.98,17.485 17.98,16.11L17.98,7.29C17.971,6.675 17.732,6.087 17.31,5.64ZM13.19,10.82L10.5,14.14C10.347,14.332 10.116,14.446 9.87,14.45C9.626,14.454 9.393,14.352 9.23,14.17L7.77,12.51C7.524,12.165 7.576,11.691 7.892,11.408C8.208,11.126 8.685,11.127 9,11.41L9.81,12.33L11.9,9.78C12.138,9.319 12.736,9.186 13.146,9.504C13.556,9.822 13.577,10.434 13.19,10.78L13.19,10.82ZM13.79,7.15C13.238,7.15 12.79,6.702 12.79,6.15L12.79,3.15L16.54,7.15L13.79,7.15Z" |
| | | android:fillColor="#31456A"/> |
| | | </group> |
| | | android:width="14.98dp" |
| | | android:height="16.6dp" |
| | | android:viewportWidth="14.98" |
| | | android:viewportHeight="16.6"> |
| | | <path |
| | | android:pathData="M14.31,3.64L13,2.1L11.88,0.86C11.408,0.313 10.722,-0.001 10,0L2.49,0C1.115,0 0,1.115 0,2.49L0,14.11C0,15.485 1.115,16.6 2.49,16.6L12.49,16.6C13.865,16.6 14.98,15.485 14.98,14.11L14.98,5.29C14.971,4.676 14.732,4.087 14.31,3.64ZM10.19,8.82L7.5,12.14C7.347,12.333 7.116,12.446 6.87,12.45C6.626,12.454 6.393,12.352 6.23,12.17L4.77,10.51C4.524,10.166 4.576,9.691 4.892,9.409C5.208,9.126 5.685,9.127 6,9.41L6.81,10.33L8.9,7.78C9.138,7.319 9.736,7.187 10.146,7.504C10.556,7.822 10.577,8.435 10.19,8.78L10.19,8.82ZM10.79,5.15C10.238,5.15 9.79,4.702 9.79,4.15L9.79,1.15L13.54,5.15L10.79,5.15Z" |
| | | android:fillColor="#31456A" |
| | | android:fillAlpha="0.8"/> |
| | | </vector> |
| | |
| | | <!-- |
| | | ~ Copyright (C) 2026 The Android Open Source Project |
| | | ~ |
| | | ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| | | ~ you may not use this file except in compliance with the License. |
| | | ~ You may obtain a copy of the License at |
| | | ~ |
| | | ~ http://www.apache.org/licenses/LICENSE-2.0 |
| | | ~ |
| | | ~ Unless required by applicable law or agreed to in writing, software |
| | | ~ distributed under the License is distributed on an "AS IS" BASIS, |
| | | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | ~ See the License for the specific language governing permissions and |
| | | ~ limitations under the License. |
| | | --> |
| | | <vector xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:width="20dp" |
| | | android:width="18.75dp" |
| | | android:height="20dp" |
| | | android:viewportWidth="20" |
| | | android:viewportWidth="18.75" |
| | | android:viewportHeight="20"> |
| | | <group> |
| | | <clip-path |
| | | android:pathData="M0,0h20v20h-20z"/> |
| | | <path |
| | | android:pathData="M7.985,5.611C9.315,5.418 10.665,5.418 11.995,5.611C12.929,5.793 13.864,5.939 14.745,6.174C15.392,6.329 15.914,6.806 16.127,7.437Q16.698,8.999 17.323,10.533C17.398,10.705 17.623,10.96 17.754,10.942C18.485,10.814 19.187,11.287 19.342,12.014C19.389,12.198 19.389,12.391 19.342,12.576L18.274,12.856C18.34,13.216 18.384,13.581 18.405,13.947L18.405,18.981C18.392,19.287 18.28,19.58 18.086,19.816C17.099,20.001 16.089,20.02 15.096,19.871C14.405,19.444 14.835,18.725 14.611,18.145L5.528,18.145C5.35,18.763 5.247,19.798 5.042,19.871C4.029,20.043 2.994,20.043 1.98,19.871C1.766,19.596 1.648,19.257 1.644,18.908C1.588,18.181 1.588,17.492 1.588,16.783C1.588,15.467 1.588,14.15 1.644,12.824L0.651,12.569C0.619,12.423 0.619,12.271 0.651,12.124C0.932,11.397 1.306,10.835 2.268,10.917C2.381,10.917 2.595,10.698 2.661,10.535C3.019,9.727 3.332,8.899 3.598,8.056C3.972,6.796 5.088,5.9 6.399,5.806C6.913,5.716 7.446,5.652 7.962,5.571L7.99,5.606L7.985,5.611ZM3.848,11.224C7.88,12.052 12.039,12.052 16.071,11.224C15.728,10.218 15.383,9.317 15.14,8.407C14.979,7.685 14.328,7.178 13.588,7.2C11.651,7.118 9.714,7.055 7.776,7.036C7.144,7.06 6.517,7.155 5.907,7.318C5.628,7.372 5.382,7.535 5.225,7.772C4.701,8.871 4.309,10.007 3.85,11.224L3.848,11.224ZM4.642,15.509C4.977,15.527 5.312,15.509 5.642,15.455C5.899,15.399 6.119,15.237 6.25,15.01C6.296,14.874 6.084,14.538 5.895,14.456C5.134,14.11 4.353,13.806 3.558,13.548C3.166,13.423 2.717,13.448 2.624,13.985C2.436,14.776 2.624,15.214 3.231,15.339C3.714,15.415 4.201,15.466 4.689,15.493L4.642,15.509ZM15.416,15.509C15.909,15.475 16.399,15.415 16.885,15.327C17.585,15.173 17.436,14.619 17.416,14.14C17.397,13.66 17.137,13.431 16.755,13.54C15.796,13.817 14.86,14.163 13.952,14.575C13.538,14.766 13.69,15.293 14.157,15.395C14.575,15.455 14.996,15.491 15.418,15.503L15.416,15.509Z" |
| | | android:fillColor="#31456A"/> |
| | | <path |
| | | android:pathData="M11.367,2.201C11.364,2.953 10.751,3.559 9.999,3.556C9.246,3.559 8.634,2.953 8.63,2.201C8.63,1.451 9.999,0 9.999,0C9.999,0 11.367,1.452 11.367,2.201Z" |
| | | android:fillColor="#31456A"/> |
| | | <path |
| | | android:pathData="M11.995,5.611C10.665,5.418 9.315,5.418 7.985,5.611L7.99,5.606L7.962,5.571C7.446,5.652 6.913,5.716 6.399,5.806C5.088,5.9 3.972,6.796 3.598,8.056C3.332,8.899 3.019,9.727 2.661,10.535C2.595,10.698 2.381,10.917 2.268,10.917C1.306,10.835 0.932,11.397 0.651,12.124C0.619,12.271 0.619,12.423 0.651,12.569L1.644,12.824C1.588,14.15 1.588,15.467 1.588,16.783C1.588,17.492 1.588,18.181 1.644,18.908C1.648,19.257 1.766,19.596 1.98,19.871C2.994,20.043 4.029,20.043 5.042,19.871C5.247,19.798 5.35,18.763 5.528,18.145L14.611,18.145C14.694,18.359 14.687,18.592 14.681,18.822C14.671,19.216 14.66,19.602 15.096,19.871C16.089,20.02 17.099,20.001 18.086,19.816C18.28,19.58 18.392,19.287 18.405,18.981L18.405,13.947C18.384,13.581 18.34,13.216 18.274,12.856L19.342,12.576C19.389,12.391 19.389,12.198 19.342,12.014C19.187,11.287 18.485,10.814 17.754,10.942C17.623,10.96 17.398,10.705 17.323,10.533Q16.698,8.999 16.127,7.437C15.914,6.806 15.392,6.329 14.745,6.174C13.864,5.939 12.929,5.793 11.995,5.611ZM16.071,11.224C12.039,12.052 7.881,12.052 3.849,11.224L3.851,11.224C4.309,10.007 4.702,8.872 5.225,7.772C5.383,7.536 5.629,7.373 5.907,7.318C6.518,7.155 7.145,7.06 7.777,7.037C9.714,7.055 11.652,7.118 13.589,7.2C14.329,7.179 14.98,7.685 15.14,8.408C15.384,9.317 15.729,10.218 16.071,11.224ZM5.643,15.453C5.313,15.506 4.977,15.525 4.643,15.507L4.69,15.491C4.202,15.464 3.715,15.413 3.232,15.337C2.624,15.212 2.437,14.774 2.624,13.983C2.718,13.446 3.166,13.421 3.559,13.546C4.354,13.804 5.134,14.107 5.895,14.454C6.085,14.536 6.297,14.872 6.25,15.007C6.12,15.235 5.899,15.397 5.643,15.453ZM16.885,15.325C16.399,15.413 15.909,15.473 15.417,15.507L15.419,15.501C14.997,15.489 14.576,15.453 14.158,15.393C13.691,15.291 13.538,14.764 13.952,14.573C14.86,14.161 15.797,13.815 16.755,13.538C17.137,13.429 17.397,13.658 17.417,14.138C17.419,14.201 17.424,14.265 17.429,14.329C17.461,14.756 17.493,15.192 16.885,15.325Z" |
| | | android:fillColor="#31456A" |
| | | android:fillType="evenOdd"/> |
| | | <path |
| | | android:pathData="M11.367,2.201C11.364,2.953 10.751,3.559 9.999,3.556C9.246,3.559 8.634,2.953 8.63,2.201C8.63,1.451 9.999,0 9.999,0C9.999,0 11.367,1.452 11.367,2.201Z" |
| | | android:fillColor="#31456A"/> |
| | | <path |
| | | android:pathData="M6.746,3.212C6.743,3.723 6.327,4.135 5.816,4.132C5.305,4.135 4.888,3.723 4.886,3.212C4.886,2.703 5.816,1.716 5.816,1.716C5.816,1.716 6.746,2.703 6.746,3.212Z" |
| | | android:fillColor="#31456A"/> |
| | | <path |
| | | android:pathData="M15.113,3.212C15.111,3.723 14.694,4.135 14.183,4.132C13.672,4.135 13.256,3.723 13.253,3.212C13.253,2.703 14.183,1.716 14.183,1.716C14.183,1.716 15.113,2.703 15.113,3.212Z" |
| | | android:fillColor="#31456A"/> |
| | | </group> |
| | | <path |
| | | android:pathData="M7.358,5.611C8.688,5.418 10.038,5.418 11.368,5.611C12.302,5.793 13.237,5.939 14.118,6.174C14.765,6.329 15.287,6.806 15.5,7.437Q16.071,8.999 16.696,10.533C16.771,10.705 16.996,10.96 17.127,10.942C17.858,10.814 18.56,11.287 18.715,12.014C18.762,12.198 18.762,12.391 18.715,12.576L17.647,12.856C17.713,13.216 17.757,13.581 17.778,13.947L17.778,18.981C17.765,19.287 17.653,19.58 17.459,19.816C16.472,20.001 15.462,20.02 14.47,19.871C13.778,19.444 14.208,18.725 13.984,18.145L4.901,18.145C4.723,18.763 4.62,19.798 4.415,19.871C3.402,20.043 2.367,20.043 1.353,19.871C1.139,19.596 1.021,19.257 1.017,18.908C0.961,18.181 0.961,17.492 0.961,16.783C0.961,15.467 0.961,14.15 1.017,12.824L0.024,12.569C-0.008,12.423 -0.008,12.271 0.024,12.124C0.305,11.397 0.679,10.835 1.641,10.917C1.754,10.917 1.968,10.698 2.034,10.535C2.392,9.727 2.705,8.899 2.971,8.056C3.345,6.796 4.461,5.9 5.772,5.806C6.286,5.716 6.819,5.652 7.335,5.571L7.363,5.606L7.358,5.611ZM3.221,11.224C7.253,12.052 11.412,12.052 15.444,11.224C15.101,10.218 14.756,9.317 14.513,8.407C14.352,7.685 13.701,7.178 12.961,7.2C11.024,7.118 9.087,7.055 7.149,7.036C6.517,7.06 5.89,7.155 5.28,7.318C5.001,7.372 4.755,7.535 4.598,7.772C4.074,8.871 3.682,10.007 3.223,11.224L3.221,11.224ZM4.015,15.509C4.35,15.527 4.685,15.509 5.015,15.455C5.272,15.399 5.492,15.237 5.623,15.01C5.669,14.874 5.457,14.538 5.268,14.456C4.507,14.11 3.727,13.806 2.931,13.548C2.539,13.423 2.091,13.448 1.997,13.985C1.809,14.776 1.997,15.214 2.604,15.339C3.087,15.415 3.574,15.466 4.062,15.493L4.015,15.509ZM14.79,15.509C15.282,15.475 15.772,15.415 16.258,15.327C16.958,15.173 16.809,14.619 16.789,14.14C16.77,13.66 16.51,13.431 16.128,13.54C15.169,13.817 14.233,14.163 13.325,14.575C12.911,14.766 13.063,15.293 13.53,15.395C13.948,15.455 14.369,15.491 14.791,15.503L14.79,15.509ZM10.74,2.201C10.737,2.953 10.124,3.559 9.372,3.556C8.62,3.559 8.007,2.953 8.003,2.201C8.003,1.451 9.372,0 9.372,0C9.372,0 10.74,1.452 10.74,2.201ZM6.119,3.212C6.116,3.723 5.7,4.135 5.189,4.132C4.678,4.135 4.261,3.723 4.259,3.212C4.259,2.703 5.189,1.716 5.189,1.716C5.189,1.716 6.119,2.703 6.119,3.212ZM14.486,3.212C14.484,3.723 14.067,4.135 13.556,4.132C13.045,4.135 12.628,3.723 12.626,3.212C12.626,2.703 13.556,1.716 13.556,1.716C13.556,1.716 14.486,2.703 14.486,3.212Z" |
| | | android:fillColor="#31456A" |
| | | android:fillAlpha="0.8"/> |
| | | </vector> |
| | |
| | | <!-- |
| | | ~ Copyright (C) 2026 The Android Open Source Project |
| | | ~ |
| | | ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| | | ~ you may not use this file except in compliance with the License. |
| | | ~ You may obtain a copy of the License at |
| | | ~ |
| | | ~ http://www.apache.org/licenses/LICENSE-2.0 |
| | | ~ |
| | | ~ Unless required by applicable law or agreed to in writing, software |
| | | ~ distributed under the License is distributed on an "AS IS" BASIS, |
| | | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | ~ See the License for the specific language governing permissions and |
| | | ~ limitations under the License. |
| | | --> |
| | | <vector xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:width="19.973dp" |
| | | android:height="18.888dp" |
| | |
| | | android:viewportHeight="18.888"> |
| | | <path |
| | | android:pathData="M6.923,2.217C6.923,3.434 5.924,4.433 4.707,4.433C3.489,4.433 2.49,3.434 2.49,2.217C2.49,0.999 3.489,0 4.707,0C5.924,0 6.923,0.999 6.923,2.217ZM13.417,12.082C11.544,12.082 10.045,13.612 10.045,15.485C10.045,17.358 11.544,18.888 13.417,18.888C15.29,18.888 16.789,17.358 16.789,15.485C16.789,13.612 15.259,12.082 13.417,12.082ZM13.417,17.046C12.574,17.046 11.856,16.359 11.856,15.485C11.856,14.611 12.543,13.924 13.417,13.924C14.26,13.924 14.978,14.611 14.978,15.485C14.978,16.328 14.26,17.046 13.417,17.046ZM14.322,6.775C14.198,6.244 9.671,1.342 8.516,2.092C7.704,2.622 8.391,3.497 8.391,3.497C9.92,3.871 12.886,7.368 12.886,7.368L8.141,9.21C7.579,9.553 6.549,9.553 6.549,11.458L6.549,14.142C6.549,14.985 7.579,15.922 8.391,15.922L9.171,15.922C9.171,15.922 9.14,15.547 9.14,15.422C9.14,13.081 11.013,11.145 13.323,11.145C15.634,11.145 17.507,13.112 17.507,15.454C17.507,15.61 17.507,15.953 17.476,15.953L19.973,15.953L19.973,4.527L14.322,6.775ZM7.798,11.426C6.892,9.647 10.576,9.553 10.576,9.553L7.798,11.426ZM8.765,7.212C8.765,7.212 7.954,6.65 6.518,7.305C4.644,8.148 4.957,4.87 3.021,4.215C3.021,4.215 1.054,4.215 0.211,7.524C0.211,7.524 -0.444,9.678 0.555,12.519L0.555,17.42C0.555,17.42 1.554,18.981 3.052,17.42L3.052,12.425C3.052,12.425 3.021,9.335 4.176,8.18C4.176,8.18 4.426,9.272 6.361,9.179C6.361,9.21 10.639,8.585 8.765,7.212Z" |
| | | android:fillColor="#31456A"/> |
| | | android:fillColor="#31456A" |
| | | android:fillAlpha="0.8"/> |
| | | </vector> |
| | |
| | | <!-- |
| | | ~ Copyright (C) 2026 The Android Open Source Project |
| | | ~ |
| | | ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| | | ~ you may not use this file except in compliance with the License. |
| | | ~ You may obtain a copy of the License at |
| | | ~ |
| | | ~ http://www.apache.org/licenses/LICENSE-2.0 |
| | | ~ |
| | | ~ Unless required by applicable law or agreed to in writing, software |
| | | ~ distributed under the License is distributed on an "AS IS" BASIS, |
| | | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | ~ See the License for the specific language governing permissions and |
| | | ~ limitations under the License. |
| | | --> |
| | | <vector xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:width="20.006dp" |
| | | android:height="15.955dp" |
| | |
| | | android:viewportHeight="15.955"> |
| | | <path |
| | | android:pathData="M7.853,0.159C9.271,-0.053 10.713,-0.053 12.131,0.159C13.128,0.358 14.125,0.518 15.062,0.777C15.76,0.955 16.317,1.478 16.538,2.163Q17.146,3.878 17.814,5.563C17.894,5.753 18.133,6.032 18.273,6.012C19.064,5.878 19.817,6.401 19.968,7.188C20.018,7.391 20.018,7.604 19.968,7.807L18.831,8.116C18.902,8.511 18.948,8.911 18.971,9.312L18.971,14.836C18.958,15.17 18.839,15.491 18.632,15.753C17.58,15.956 16.5,15.976 15.441,15.813C14.703,15.344 15.162,14.557 14.923,13.919L5.231,13.919C5.042,14.597 4.932,15.733 4.713,15.813C3.631,16.003 2.524,16.003 1.442,15.813C1.213,15.508 1.087,15.138 1.083,14.756C1.023,13.959 1.023,13.201 1.023,12.423C1.023,10.977 1.023,9.531 1.083,8.076L0.026,7.797C-0.009,7.636 -0.009,7.469 0.026,7.308C0.325,6.51 0.724,5.892 1.751,5.982C1.871,5.982 2.1,5.743 2.17,5.563C2.551,4.674 2.884,3.766 3.167,2.841C3.551,1.475 4.744,0.492 6.158,0.378C6.707,0.279 7.275,0.209 7.823,0.119L7.853,0.159ZM3.446,6.321C7.746,7.231 12.188,7.231 16.488,6.321C16.119,5.214 15.75,4.227 15.491,3.23C15.332,2.446 14.636,1.888 13.836,1.904C11.772,1.814 9.698,1.744 7.634,1.724C6.96,1.751 6.291,1.855 5.64,2.033C5.34,2.095 5.078,2.275 4.912,2.532C4.354,3.738 3.935,4.985 3.446,6.321ZM4.294,11.027C4.651,11.046 5.008,11.026 5.361,10.967C5.636,10.904 5.872,10.726 6.009,10.479C6.059,10.329 5.829,9.96 5.63,9.871C4.819,9.491 3.987,9.158 3.137,8.873C2.718,8.734 2.24,8.764 2.14,9.352C1.941,10.219 2.14,10.698 2.788,10.838C3.297,10.937 3.785,10.957 4.344,11.007L4.294,11.027ZM15.79,11.027C16.315,10.99 16.838,10.923 17.356,10.828C18.103,10.658 17.944,10.05 17.924,9.522C17.904,8.993 17.625,8.744 17.216,8.863C16.192,9.168 15.192,9.548 14.225,10C13.786,10.21 13.946,10.788 14.444,10.897C14.89,10.964 15.339,11.004 15.79,11.017L15.79,11.027Z" |
| | | android:fillColor="#31456A"/> |
| | | android:fillColor="#31456A" |
| | | android:fillAlpha="0.8"/> |
| | | </vector> |