[6.9.0]
[fea] [离线流程]
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
<color name="common_19FF7F">#19FF7F</color>
|
||||
|
||||
<color name="common_2EACFF">#2EACFF</color>
|
||||
<color name="common_4D2EACFF">#4D2EACFF</color>
|
||||
|
||||
<color name="common_3B4577">#3B4577</color>
|
||||
<color name="common_232A3F">#232A3F</color>
|
||||
|
||||
@@ -21,7 +21,7 @@ data class LineDataBean(
|
||||
* 线路名称
|
||||
*/
|
||||
@ColumnInfo(name = "line_name", typeAffinity = ColumnInfo.TEXT)
|
||||
@SerializedName("name")
|
||||
@SerializedName("name", alternate = ["lineName"])
|
||||
var lineName: String? = null,
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
|
||||
import com.mogo.och.bridge.autopilot.autopilot.OchAutopilotAnalytics
|
||||
import com.mogo.och.bridge.ui.autopilot.AutopilotState
|
||||
import com.mogo.och.offline.model.LineModel
|
||||
import com.mogo.och.offline.ui.bizswitch.SwitchBizView
|
||||
import com.mogo.och.offline.ui.fragment.OfflineFragment
|
||||
import com.mogo.och.offline.util.BusAnalyticsManager
|
||||
@@ -37,12 +38,14 @@ class ShuttleDriverProvider : CommonServiceImpl() {
|
||||
}
|
||||
OchAutopilotAnalytics.ochEventKey = BusAnalyticsManager.getInstance()
|
||||
OffLineTrajectoryManager.load()
|
||||
LineModel.init()
|
||||
return busFragment!!
|
||||
}
|
||||
|
||||
override fun resetFragment() {
|
||||
OchAutopilotAnalytics.ochEventKey = null
|
||||
OffLineTrajectoryManager.release()
|
||||
LineModel.release()
|
||||
busFragment = null
|
||||
}
|
||||
|
||||
|
||||
@@ -58,10 +58,10 @@ object LineModel {
|
||||
private val context = AbsMogoApplication.getApp()
|
||||
|
||||
// 判断接口是否变化
|
||||
private const val EXECUTABLECHANGEMD5 = "EXECUTABLECHANGEMD5"
|
||||
private const val EXECUTABLECHANGEMD5 = "EXECUTABLECHANGEMD5_offline"
|
||||
|
||||
// 展示上一次刷新时间
|
||||
const val EXECUTABLECHANGETIME = "executablechangetime"
|
||||
const val EXECUTABLECHANGETIME = "executablechangetime_offLine"
|
||||
|
||||
var currentTask: TaskDataBean? = null
|
||||
|
||||
@@ -208,7 +208,7 @@ object LineModel {
|
||||
fun commitSwitchLineId(task: TaskDataBean, line: LineDataBean) {
|
||||
RxUtils.disposeSubscribe(startTaskDisposable)
|
||||
line.getLineIdAndName { lineId, lineName ->
|
||||
RepositoryManager.startTask(task.taskId?:0, lineId, lineName)
|
||||
RepositoryManager.startTask(task, lineId, lineName)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())
|
||||
?.subscribe(object : Observer<Boolean> {
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.mogo.och.data.bean.SiteIntroduce
|
||||
import com.mogo.och.data.db.bean.LineDataBean
|
||||
import com.mogo.och.offline.model.LineModel
|
||||
import com.mogo.och.offline.model.LineModel.currentTask
|
||||
import com.mogo.och.offline.repository.db.bean.TaskDataBean
|
||||
import com.mogo.och.offline.repository.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.offline.repository.db.repository.ContraiDb
|
||||
import com.mogo.och.offline.repository.db.repository.LineDb
|
||||
@@ -33,8 +34,8 @@ object RepositoryManager {
|
||||
return LineDb.queryCanUseLineRx()
|
||||
}
|
||||
|
||||
fun startTask(taskId:Long,lineId:Long,lineName:String): Observable<Boolean>? {
|
||||
return TaskDb.startTask(taskId, lineId, lineName)
|
||||
fun startTask(task: TaskDataBean, lineId:Long, lineName:String): Observable<Boolean>? {
|
||||
return TaskDb.startTask(task, lineId, lineName)
|
||||
}
|
||||
|
||||
fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback<BindLineListResponse>) {
|
||||
|
||||
@@ -129,11 +129,12 @@ data class TaskSiteDataBean(
|
||||
/**
|
||||
* 开始任务 并把第一站置为 2 当前站
|
||||
*/
|
||||
fun toTaskSiteDatas(querySites: List<SiteDataBean>, lineName: String): MutableList<TaskSiteDataBean> {
|
||||
fun toTaskSiteDatas(querySites: List<SiteDataBean>,taskId:Long, lineName: String): MutableList<TaskSiteDataBean> {
|
||||
val result = mutableListOf<TaskSiteDataBean>()
|
||||
var temp: TaskSiteDataBean?
|
||||
querySites.forEach {
|
||||
temp = TaskSiteDataBean()
|
||||
temp?.taskId = taskId
|
||||
temp?.lineId = it.lineId
|
||||
temp?.lineName = lineName
|
||||
temp?.siteId = it.siteId
|
||||
|
||||
@@ -19,7 +19,7 @@ object TaskDb : IDbRepository {
|
||||
|
||||
private var taskDataDao: TaskDataDao? = null
|
||||
get() {
|
||||
if(field==null){
|
||||
if (field == null) {
|
||||
field = MyDataBase.instance?.taskDataDao
|
||||
register()
|
||||
}
|
||||
@@ -30,17 +30,17 @@ object TaskDb : IDbRepository {
|
||||
taskDataDao = null
|
||||
}
|
||||
|
||||
fun addOrUpdate(vararg lineDataBean: TaskDataBean){
|
||||
fun addOrUpdate(vararg lineDataBean: TaskDataBean) {
|
||||
// 从接口恢复数据
|
||||
taskDataDao?.insert(*lineDataBean)
|
||||
}
|
||||
|
||||
fun addOrUpdate(serverDateList: List<TaskDataBean>, lineId: Long?) {
|
||||
val runable = object :Runnable {
|
||||
val runable = object : Runnable {
|
||||
override fun run() {
|
||||
taskDataDao?.let { taskDataDao ->
|
||||
val localTasks = taskDataDao.querySitesByLineId(lineId)
|
||||
if(localTasks==null){
|
||||
if (localTasks == null) {
|
||||
taskDataDao.insert(*serverDateList.toTypedArray())
|
||||
// TODO: Ui展示需要动态刷新UI去
|
||||
return
|
||||
@@ -61,11 +61,11 @@ object TaskDb : IDbRepository {
|
||||
val needSaveTask = mutableListOf<TaskDataBean>()
|
||||
// 删除任务
|
||||
needMinusDatas.forEach {
|
||||
if(it.status==TaskDataBean.useing||it.status==TaskDataBean.used){
|
||||
if (it.status == TaskDataBean.useing || it.status == TaskDataBean.used) {
|
||||
needSaveTask.add(it)
|
||||
}
|
||||
}
|
||||
val failneedMinusDatas = needMinusDatas-needSaveTask
|
||||
val failneedMinusDatas = needMinusDatas - needSaveTask
|
||||
taskDataDao.delete(*failneedMinusDatas.toTypedArray())
|
||||
}
|
||||
}
|
||||
@@ -75,49 +75,84 @@ object TaskDb : IDbRepository {
|
||||
|
||||
}
|
||||
|
||||
fun startTask(taskId: Long, lineId: Long,lineName:String): Observable<Boolean>? {
|
||||
return Observable.just(taskId)
|
||||
fun startTask(task: TaskDataBean, lineId: Long, lineName: String): Observable<Boolean>? {
|
||||
return Observable.just(task)
|
||||
.flatMap {
|
||||
var updateCount:Int? = 0
|
||||
var startTime = System.currentTimeMillis()
|
||||
try {
|
||||
// 更新task状态
|
||||
taskDataDao?.queryTaskByTaskIdOne(taskId)?.let {
|
||||
it.startTime = System.currentTimeMillis()
|
||||
it.status = TaskDataBean.useing
|
||||
// 更新任务状态
|
||||
taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.useing,it.id)
|
||||
OchChainLogManager.writeChainLogDb("开始任务", "变更线路:${lineId}_${lineName}_task:${taskId} 为正在使用的状态")
|
||||
}
|
||||
CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}")
|
||||
startTime = System.currentTimeMillis()
|
||||
updateCount = TaskSiteDb.startTask(taskId, lineId, lineName)
|
||||
OchChainLogManager.writeChainLogDb("开始任务", "把正在使用的数据更新到RunningTask表格一共${updateCount}行数据")
|
||||
CallerLogger.d(TAG,"插入正在运行的线路用时:${System.currentTimeMillis()-startTime}")
|
||||
} catch (e: Exception) {
|
||||
if (e is DbException) {
|
||||
println("数据不全")
|
||||
// 恢复数据
|
||||
taskDataDao?.queryTaskByTaskIdOne(taskId)?.let {
|
||||
addOrUpdate(task)
|
||||
val taskID = task.taskId?:0
|
||||
var updateCount: Int? = 0
|
||||
var startTime = System.currentTimeMillis()
|
||||
try {
|
||||
// 更新task状态
|
||||
taskDataDao?.queryTaskByTaskIdOne(taskID)?.let {
|
||||
it.startTime = System.currentTimeMillis()
|
||||
it.status = TaskDataBean.unUse
|
||||
it.status = TaskDataBean.useing
|
||||
// 更新任务状态
|
||||
taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.unUse,it.id)
|
||||
OchChainLogManager.writeChainLogDb("开始任务", "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}")
|
||||
taskDataDao?.updateStatus(
|
||||
System.currentTimeMillis(),
|
||||
TaskDataBean.useing,
|
||||
it.id
|
||||
)
|
||||
OchChainLogManager.writeChainLogDb(
|
||||
"开始任务",
|
||||
"变更线路:${lineId}_${lineName}_task:${taskID} 为正在使用的状态"
|
||||
)
|
||||
}
|
||||
CallerLogger.d(
|
||||
TAG,
|
||||
"更新任务状态用时:${System.currentTimeMillis() - startTime}"
|
||||
)
|
||||
startTime = System.currentTimeMillis()
|
||||
updateCount = TaskSiteDb.startTask(taskID, lineId, lineName)
|
||||
OchChainLogManager.writeChainLogDb(
|
||||
"开始任务",
|
||||
"把正在使用的数据更新到RunningTask表格一共${updateCount}行数据"
|
||||
)
|
||||
CallerLogger.d(
|
||||
TAG,
|
||||
"插入正在运行的线路用时:${System.currentTimeMillis() - startTime}"
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
if (e is DbException) {
|
||||
println("数据不全")
|
||||
// 恢复数据
|
||||
taskDataDao?.queryTaskByTaskIdOne(task.taskId ?: 0)?.let {
|
||||
it.startTime = System.currentTimeMillis()
|
||||
it.status = TaskDataBean.unUse
|
||||
// 更新任务状态
|
||||
taskDataDao?.updateStatus(
|
||||
System.currentTimeMillis(),
|
||||
TaskDataBean.unUse,
|
||||
it.id
|
||||
)
|
||||
OchChainLogManager.writeChainLogDb(
|
||||
"开始任务",
|
||||
"异常情况${lineId}_${lineName}_task:${taskID} 为未使用的状态 原因:${e.message}"
|
||||
)
|
||||
}
|
||||
}
|
||||
return@flatMap Observable.error(
|
||||
DataException(
|
||||
DataException.startTaskErrorCode,
|
||||
e.message ?: ""
|
||||
)
|
||||
)
|
||||
}
|
||||
updateCount?.let {
|
||||
if (it <= 0) {
|
||||
// 插入失败
|
||||
return@flatMap Observable.error(
|
||||
DataException(
|
||||
DataException.startTaskErrorCode,
|
||||
"未插入数据"
|
||||
)
|
||||
)
|
||||
} else {
|
||||
// 开始任务成功
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
}
|
||||
return@flatMap Observable.error(DataException(DataException.startTaskErrorCode,e.message?:""))
|
||||
}
|
||||
updateCount?.let {
|
||||
if(it<=0){
|
||||
// 插入失败
|
||||
return@flatMap Observable.error(DataException(DataException.startTaskErrorCode,"未插入数据"))
|
||||
}else{
|
||||
// 开始任务成功
|
||||
return@flatMap Observable.just(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -143,35 +178,35 @@ object TaskDb : IDbRepository {
|
||||
|
||||
|
||||
fun endTask(taskId: Long) {
|
||||
BizLoopManager.runInIoThread{
|
||||
BizLoopManager.runInIoThread {
|
||||
taskDataDao?.endTask(taskId)
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteObsoleteData(){
|
||||
fun deleteObsoleteData() {
|
||||
taskDataDao?.deleteObsoleteData()?.let {
|
||||
OchChainLogManager.writeChainLogDb("删除临时数据","Task删除数量:${it}")
|
||||
OchChainLogManager.writeChainLogDb("删除临时数据", "Task删除数量:${it}")
|
||||
}
|
||||
}
|
||||
|
||||
fun saveRunningInfo(lineId: Int, taskId: Int, taskTime: Long) {
|
||||
val runningTask = taskDataDao?.queryTaskByTaskIdOne(taskId.toLong())
|
||||
if (runningTask==null) {
|
||||
if (runningTask == null) {
|
||||
val taskDataBean = TaskDataBean()
|
||||
taskDataBean.taskId = taskId.toLong()
|
||||
taskDataBean.lineId = lineId.toLong()
|
||||
taskDataBean.status = TaskDataBean.useing
|
||||
taskDataDao?.insert(taskDataBean)
|
||||
}else{
|
||||
} else {
|
||||
runningTask.status = TaskDataBean.useing
|
||||
taskDataDao?.insert(runningTask)
|
||||
}
|
||||
}
|
||||
|
||||
fun endTaskByOther(taskId: Long) {
|
||||
BizLoopManager.runInIoThread{
|
||||
BizLoopManager.runInIoThread {
|
||||
val taskInfo = taskDataDao?.queryTaskByTaskIdOne(taskId)
|
||||
if(taskInfo!=null){
|
||||
if (taskInfo != null) {
|
||||
if (taskInfo.status == TaskDataBean.unUse) {
|
||||
taskDataDao?.endTask(taskId)
|
||||
}
|
||||
@@ -185,7 +220,7 @@ object TaskDb : IDbRepository {
|
||||
it.startTime = System.currentTimeMillis()
|
||||
it.status = TaskDataBean.useing
|
||||
// 更新任务状态
|
||||
taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.useing,it.id)
|
||||
taskDataDao?.updateStatus(System.currentTimeMillis(), TaskDataBean.useing, it.id)
|
||||
OchChainLogManager.writeChainLogDb("恢复任务", "线路任务改为正在执行的状态")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ object TaskSiteDb : IDbRepository {
|
||||
startTime = System.currentTimeMillis()
|
||||
val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas(
|
||||
querySites,
|
||||
taskId,
|
||||
lineName
|
||||
)
|
||||
CallerLogger.d(TAG, "数据转换用时:${System.currentTimeMillis() - startTime}")
|
||||
|
||||
@@ -1,36 +1,63 @@
|
||||
package com.mogo.och.offline.repository.net.bean
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import java.util.*
|
||||
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.och.data.bean.SiteIntroduce
|
||||
import com.mogo.och.data.db.bean.ContrailDataBean
|
||||
import com.mogo.och.data.db.bean.LineDataBean
|
||||
import com.mogo.och.data.db.bean.SiteDataBean
|
||||
import com.mogo.och.offline.repository.db.repository.ContraiDb
|
||||
import com.mogo.och.offline.repository.db.repository.LineDb
|
||||
import com.mogo.och.offline.repository.db.repository.SiteDb
|
||||
/**
|
||||
*
|
||||
*/
|
||||
data class BindLineListResponse(val data: List<Result>?) : BaseData(){
|
||||
|
||||
data class Result(
|
||||
var line: LineInfo?,
|
||||
var siteList: List<BusStationBean>?,//站点名称
|
||||
val contrail: Contrail?,//站点名称
|
||||
var line: LineDataBean?,
|
||||
var siteList: List<SiteDataBean>?,//站点名称
|
||||
val contrail: ContrailDataBean?,//站点名称
|
||||
)
|
||||
|
||||
data class LineInfo(
|
||||
val lineId:Long?,
|
||||
var lineName:String?,
|
||||
)
|
||||
|
||||
data class Contrail(
|
||||
val csvFileUrl:String?,
|
||||
val csvFileMd5:String?,
|
||||
val txtFileUrl:String?,
|
||||
val txtFileMd5:String?,
|
||||
val contrailSaveTime:Long?,
|
||||
)
|
||||
companion object{
|
||||
fun save2Db(data: BindLineListResponse) {
|
||||
val lineList = mutableListOf<LineDataBean>()
|
||||
val contrailList = mutableListOf<ContrailDataBean>()
|
||||
val siteList = mutableListOf<SiteDataBean>()
|
||||
|
||||
data.data?.forEach { dataInfo->
|
||||
var lineId:Long?=null
|
||||
dataInfo.line?.let { lineInfo->
|
||||
val tempLineInfo = LineDataBean()
|
||||
lineId = lineInfo.lineId
|
||||
tempLineInfo.lineId = lineInfo.lineId
|
||||
tempLineInfo.lineName = lineInfo.lineName
|
||||
tempLineInfo.endStationName = dataInfo.siteList?.last()?.name?:""
|
||||
lineList.add(tempLineInfo)
|
||||
}
|
||||
dataInfo.contrail?.let { contrailInfo->
|
||||
contrailInfo.lineId = lineId
|
||||
contrailList.add(contrailInfo)
|
||||
}
|
||||
dataInfo.siteList?.let {siteListInfo->
|
||||
siteListInfo.forEach {
|
||||
it.lineId = lineId
|
||||
val videoInfoList = mutableListOf<SiteIntroduce>()
|
||||
it.videoList?.forEach { videoInfoIt->
|
||||
videoInfoList.add(videoInfoIt)
|
||||
}
|
||||
if(videoInfoList.isNotEmpty()) {
|
||||
it.videoListDB = GsonUtils.toJson(videoInfoList)
|
||||
}
|
||||
}
|
||||
siteList.addAll(siteListInfo)
|
||||
}
|
||||
}
|
||||
|
||||
LineDb.checkAndUpdate(lineList)
|
||||
ContraiDb.addOrUpdate(contrailList)
|
||||
SiteDb.addOrUpdate(siteList)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
|
||||
mAdapter.setOnLineItemClickListener(object : SwitchLineAdapter.LineItemClickListener{
|
||||
override fun onItemClick(data: LineDataBean) {
|
||||
CallerLogger.d(TAG,"选择线路 线路信息:${data}")
|
||||
|
||||
viewModel?.changeLineStart(data)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -95,7 +95,6 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
|
||||
override fun reload() {
|
||||
viewbizModel?.showSwitchLineInfo()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +104,7 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
|
||||
fun loadingDatas() {
|
||||
CallerLogger.d(TAG,"加载线路去")
|
||||
viewModel?.queryBusLines(true)
|
||||
viewModel?.setRefreshTime()
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
@@ -168,6 +168,9 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
|
||||
animator?.cancel()
|
||||
}
|
||||
},dex,UiThreadHandler.MODE.QUEUE,)
|
||||
}
|
||||
|
||||
override fun showLoading() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
package com.mogo.och.offline.ui.switchline
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.data.db.bean.LineDataBean
|
||||
import com.mogo.och.offline.callback.IBusLinesCallback
|
||||
import com.mogo.och.offline.model.LineModel
|
||||
import com.mogo.och.offline.model.LineModel.EXECUTABLECHANGETIME
|
||||
import com.mogo.och.offline.repository.RepositoryManager
|
||||
import com.mogo.och.offline.repository.db.bean.TaskDataBean
|
||||
import io.reactivex.Observer
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
@@ -77,6 +81,28 @@ class SwtichLineModel : ViewModel(), IBusLinesCallback {
|
||||
fun onBusLinesChange(data: MutableList<LineDataBean>?, show:Boolean)
|
||||
fun refreshDate(formatLongToString: String?)
|
||||
fun onBusLinesChangeFaile()
|
||||
fun showLoading()
|
||||
}
|
||||
|
||||
fun changeLineStart(checkTask:LineDataBean) {
|
||||
if(checkTask==null){
|
||||
ToastUtils.showShort("请重新选择线路")
|
||||
return
|
||||
}
|
||||
val newTask = TaskDataBean()
|
||||
newTask.taskId = System.currentTimeMillis()
|
||||
newTask.lineId = checkTask.lineId
|
||||
newTask.startTime = System.currentTimeMillis()
|
||||
newTask.status = TaskDataBean.unUse
|
||||
newTask.taskgetTime = System.currentTimeMillis()
|
||||
LineModel.commitSwitchLineId(newTask,checkTask)
|
||||
}
|
||||
|
||||
fun setRefreshTime() {
|
||||
val lastUpdateTime = SharedPrefsMgr.getInstance().getLong(EXECUTABLECHANGETIME, -1)
|
||||
if(lastUpdateTime>0){
|
||||
this.onRefreshSuccess(lastUpdateTime)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRefreshSuccess(currentTimeStamp: Long) {
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<gradient
|
||||
android:endColor="#CC0043FF"
|
||||
android:startColor="#0028345E" />
|
||||
<solid android:color="@color/common_4D2EACFF"/>
|
||||
<corners android:radius="@dimen/dp_30" />
|
||||
</shape>
|
||||
@@ -17,16 +17,6 @@
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:layout_height="@dimen/dp_30"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/switch_line_item_select_iv"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_32"
|
||||
android:layout_marginEnd="@dimen/dp_30"
|
||||
android:background="@drawable/offline_line_task_arrow"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/switch_line_name"
|
||||
android:layout_width="0dp"
|
||||
@@ -40,7 +30,7 @@
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_line_point"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_line_point"
|
||||
app:layout_constraintStart_toEndOf="@+id/aciv_line_point"
|
||||
app:layout_constraintEnd_toStartOf="@+id/switch_line_item_select_iv"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
tools:text="@string/offline_switch_line_item_line_name" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
@@ -57,6 +47,6 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/switch_line_name"
|
||||
app:layout_constraintTop_toBottomOf="@+id/switch_line_name"
|
||||
app:layout_constraintEnd_toStartOf="@+id/switch_line_item_select_iv"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
tools:text="@string/offline_switch_line_endstation_name" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
Reference in New Issue
Block a user