diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index ba0b2e9..c9ca964 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class CompletedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var completedAdapter: CompletedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index ba0b2e9..c9ca964 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class CompletedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var completedAdapter: CompletedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 66e27d6..d4791bf 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class InHandleOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var inHandleAdapter: InHandleOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index ba0b2e9..c9ca964 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class CompletedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var completedAdapter: CompletedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 66e27d6..d4791bf 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class InHandleOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var inHandleAdapter: InHandleOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index da557cf..5e79db6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class UndeterminedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var undeterminedAdapter: UndeterminedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index ba0b2e9..c9ca964 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class CompletedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var completedAdapter: CompletedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 66e27d6..d4791bf 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class InHandleOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var inHandleAdapter: InHandleOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index da557cf..5e79db6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class UndeterminedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var undeterminedAdapter: UndeterminedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 70ca160..251b69c 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,9 +2,13 @@ + + + android:width="1dp" + android:color="@color/mainBackground" /> \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index ba0b2e9..c9ca964 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class CompletedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var completedAdapter: CompletedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 66e27d6..d4791bf 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class InHandleOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var inHandleAdapter: InHandleOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index da557cf..5e79db6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class UndeterminedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var undeterminedAdapter: UndeterminedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 70ca160..251b69c 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,9 +2,13 @@ + + + android:width="1dp" + android:color="@color/mainBackground" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_inhandle_detail.xml b/app/src/main/res/layout/activity_order_inhandle_detail.xml index 861c3a8..e2033fa 100644 --- a/app/src/main/res/layout/activity_order_inhandle_detail.xml +++ b/app/src/main/res/layout/activity_order_inhandle_detail.xml @@ -299,6 +299,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_10" android:nestedScrollingEnabled="false" /> diff --git a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt index 91b5fc8..7ab67f2 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/TimeLineItemDecoration.kt @@ -1,89 +1,90 @@ -package com.casic.app.smartwell.utils; +package com.casic.app.smartwell.utils -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.view.View; +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView +import com.casic.app.smartwell.R +import com.casic.app.smartwell.extensions.covertColor +import com.pengxh.app.multilib.utils.SizeUtil -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +class TimeLineItemDecoration(private val context: Context) : RecyclerView.ItemDecoration() { + private val circlePaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG) + private val linePaint: Paint + private val radius: Int -import com.casic.app.smartwell.R; -import com.pengxh.app.multilib.utils.SizeUtil; - -public class TimeLineItemDecoration extends RecyclerView.ItemDecoration { - - private final Context context; - private final Paint circlePaint, linePaint; - private final int radius; - - public TimeLineItemDecoration(Context context) { - this.context = context; - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - circlePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - - linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - linePaint.setColor(context.getResources().getColor(R.color.mainThemeColor)); - linePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); - - radius = SizeUtil.dp2px(context, 8); + init { + circlePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint = Paint(Paint.ANTI_ALIAS_FLAG) + linePaint.color = R.color.mainThemeColor.covertColor(context) + linePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() + radius = SizeUtil.dp2px(context, 8f) } - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.getItemOffsets(outRect, view, parent, state); - outRect.left = SizeUtil.dp2px(context, 20); + override fun getItemOffsets( + outRect: Rect, view: View, + parent: RecyclerView, state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.left = SizeUtil.dp2px(context, 20f) } - @Override - public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { - super.onDraw(canvas, parent, state); - int childCount = parent.getChildCount(); - RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); - for (int i = 0; i < childCount; i++) { - View childView = parent.getChildAt(i); - int childViewHeight = childView.getHeight(); - int itemCount = parent.getAdapter().getItemCount(); - int leftDecorationWidth = layoutManager.getLeftDecorationWidth(childView); - int topDecorationHeight = layoutManager.getTopDecorationHeight(childView); - - float startX = leftDecorationWidth >> 1; + override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDraw(canvas, parent, state) + val childCount = parent.childCount + val layoutManager = parent.layoutManager + for (i in 0 until childCount) { + val childView = parent.getChildAt(i) + val childViewHeight = childView.height + val itemCount = parent.adapter!!.itemCount + val leftDecorationWidth = layoutManager!!.getLeftDecorationWidth(childView) + val topDecorationHeight = layoutManager.getTopDecorationHeight(childView) + val startX = (leftDecorationWidth shr 1).toFloat() // 圆顶部部分竖线,起点 Y - float topStartY = childView.getTop() - topDecorationHeight; + val topStartY = (childView.top - topDecorationHeight).toFloat() // 圆顶部部分竖线,终点 Y - float topStopY = childView.getTop() + (childViewHeight >> 1) - radius; + val topStopY = (childView.top + (childViewHeight shr 1) - radius).toFloat() // 圆底部部分竖线,起点 Y - float bottomStartY = childView.getTop() + (childViewHeight >> 1) + radius; + val bottomStartY = (childView.top + (childViewHeight shr 1) + radius).toFloat() // 圆底部部分竖线,终点 Y - float bottomStopY = childView.getBottom(); + val bottomStopY = childView.bottom.toFloat() // 获取当前 item 是 recyclerview 的第几个 childView - int childPosition = parent.getChildLayoutPosition(childView); + val childPosition = parent.getChildLayoutPosition(childView) // 绘制圆 if (childPosition == 0 || childPosition == itemCount - 1) { - circlePaint.setStyle(Paint.Style.FILL); + circlePaint.style = Paint.Style.FILL } else { - circlePaint.setStyle(Paint.Style.STROKE); - circlePaint.setStrokeWidth(SizeUtil.dp2px(context, 2)); + circlePaint.style = Paint.Style.STROKE + circlePaint.strokeWidth = SizeUtil.dp2px(context, 2f).toFloat() } - canvas.drawCircle(startX, childView.getTop() + (childViewHeight >> 1), radius, circlePaint); + canvas.drawCircle( + startX, + (childView.top + (childViewHeight shr 1)).toFloat(), + radius.toFloat(), + circlePaint + ) // 绘制竖线 - // 第 0 位置上只需绘制下半部分 - if (childPosition == 0) { - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + when (childPosition) { + // 第 0 位置上只需绘制下半部分 + 0 -> { + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } // 最后位置只需绘制上半部分 - } else if (childPosition == parent.getAdapter().getItemCount() - 1) { - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - } else { + parent.adapter!!.itemCount - 1 -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + } // 都要绘制 - canvas.drawLine(startX, topStartY, startX, topStopY, linePaint); - // 当前 item position = curPosition 时,绘制下半部分竖线时,颜色设置为浅色 - canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint); + else -> { + canvas.drawLine(startX, topStartY, startX, topStopY, linePaint) + canvas.drawLine(startX, bottomStartY, startX, bottomStopY, linePaint) + } } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 16300ba..5c21819 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.app.smartwell.view +import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider @@ -20,10 +21,11 @@ class MainActivity : BaseActivity() { + private lateinit var userDetailViewModel: UserDetailViewModel private var menuItem: MenuItem? = null private var fragmentList: ArrayList = ArrayList() private val gson = Gson() - private lateinit var userDetailViewModel: UserDetailViewModel + private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) @@ -96,4 +98,16 @@ } }) } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return if (keyCode == KeyEvent.KEYCODE_BACK) { + if (System.currentTimeMillis() - clickTime > 2000) { + "再按一次退出程序".show(this) + clickTime = System.currentTimeMillis() + true + } else { + super.onKeyDown(keyCode, event) + } + } else super.onKeyDown(keyCode, event) + } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt index fee22d1..4105a7e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/TodoDetailActivity.kt @@ -44,6 +44,7 @@ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) } override fun initEvent() { @@ -111,8 +112,6 @@ //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - wellDetailViewModel = - ViewModelProvider(this).get(WellDetailViewModel::class.java) val wellId = orderDetail.wellId.toString() if (wellId == "") { "窨井ID异常,无法导航".show(context) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index ba0b2e9..c9ca964 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class CompletedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var completedAdapter: CompletedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 66e27d6..d4791bf 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class InHandleOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var inHandleAdapter: InHandleOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index da557cf..5e79db6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -13,7 +13,9 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity +import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel +import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* import java.lang.ref.WeakReference @@ -21,6 +23,7 @@ class UndeterminedOrderFragment : BaseFragment() { private lateinit var workOrderListViewModel: WorkOrderListViewModel + private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel private lateinit var undeterminedAdapter: UndeterminedOrderAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 @@ -43,6 +46,7 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(this) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) + workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java) } override fun initEvent() { @@ -84,6 +88,19 @@ pageIndex++ obtainWorkOrderList(pageIndex) } + + workOrderDetailViewModel.detailModel.observe(this, { + if (it.code == 200) { + val orderDetail = it.data!![0] + val orderFlow = orderDetail.flow!! + if (orderFlow.size != 0) { + TimeLineBottomSheet.Builder().setContext(requireContext()) + .setFlowItems(orderFlow).build().show() + } else { + "抱歉,无法查到该工单的流转记录".show(requireContext()) + } + } + }) } private fun obtainWorkOrderList(index: Int) { @@ -133,7 +150,12 @@ } override fun onTransferViewClicked(position: Int) { - + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看工单流转记录".show(fragment.requireContext()) + return + } + fragment.workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) } }) } diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 70ca160..251b69c 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,9 +2,13 @@ + + + android:width="1dp" + android:color="@color/mainBackground" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_inhandle_detail.xml b/app/src/main/res/layout/activity_order_inhandle_detail.xml index 861c3a8..e2033fa 100644 --- a/app/src/main/res/layout/activity_order_inhandle_detail.xml +++ b/app/src/main/res/layout/activity_order_inhandle_detail.xml @@ -299,6 +299,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_10" android:nestedScrollingEnabled="false" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 00f7dfa..a9eb339 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -13,6 +13,7 @@ 30dp 50dp 100dp + 150dp 200dp