[fea]
[登录页面、统一弹窗]
This commit is contained in:
yangyakun
2024-09-30 15:33:55 +08:00
parent 8221f41ff9
commit ead568aea1
33 changed files with 568 additions and 143 deletions

View File

@@ -1,35 +1,49 @@
package com.mogo.och.biz.login.ui
import android.animation.Animator
import android.animation.Animator.AnimatorListener
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.graphics.Rect
import android.os.SystemClock
import android.view.*
import android.view.ViewTreeObserver.OnGlobalLayoutListener
import androidx.constraintlayout.widget.ConstraintLayout
import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.MvpFragment
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.biz.BuildConfig
import com.mogo.och.biz.R
import com.mogo.och.biz.login.callback.ILoginViewCallback
import com.mogo.och.biz.login.presenter.LoginPresenter
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.Debuger
import kotlinx.android.synthetic.main.biz_login_view.biz_acbtn_login
import kotlinx.android.synthetic.main.biz_login_view.biz_ace_login_phone_value
import kotlinx.android.synthetic.main.biz_login_view.biz_acet_phone_code_value
import kotlinx.android.synthetic.main.biz_login_view.biz_actv_login_get_code
import kotlinx.android.synthetic.main.biz_login_view.biz_actv_login_show_sn
import kotlinx.android.synthetic.main.biz_login_view.biz_actv_welcome_login_title
import kotlinx.android.synthetic.main.biz_login_view.biz_cl_driver_main
import kotlinx.android.synthetic.main.biz_login_view.biz_login_svp
import kotlinx.android.synthetic.main.biz_login_view.bv_switch_business
import kotlinx.android.synthetic.main.biz_login_view.cl_login_info
import kotlinx.android.synthetic.main.biz_login_view.eiv_Info
import me.jessyan.autosize.utils.AutoSizeUtils
/**
@@ -38,7 +52,10 @@ import kotlinx.android.synthetic.main.biz_login_view.eiv_Info
*/
class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginViewCallback {
private var biz_cl_driver_main: ConstraintLayout? = null
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
private var showLoginInfoAnimator1: ObjectAnimator? = null
private var showLoginInfoAnimator2: ObjectAnimator? = null
private var onlayoutListener: OnGlobalLayoutListener? = object : OnGlobalLayoutListener {
override fun onGlobalLayout() {
@@ -71,7 +88,74 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
override fun initViews() {
CallerLogger.d(TAG, "init")
biz_cl_driver_main = mRootView.findViewById(R.id.biz_cl_driver_main)
context?.let {
val videoUrl:String
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_taxi_start)
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
videoUrl = "android.resource://" + it.packageName + "/" + R.raw.biz_login_taxi_bg
}else{
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start)
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start)
videoUrl = "android.resource://" + it.packageName + "/" + R.raw.biz_login_bus_bg
}
Debuger.enable()
biz_login_svp.setIsTouchWiget(false)
biz_login_svp.setIsTouchWigetFull(false)
biz_login_svp.enableshowProgressDialog = false
biz_login_svp.enableDoubleClick = false
gsyVideoOptionBuilder.setUrl(videoUrl)
.setCacheWithPlay(false)
.setPlayTag("TaxiPassengerArrivedView")
.build(biz_login_svp)
biz_login_svp.setVideoAllCallBack(object : GSYSampleCallBack() {
override fun onAutoComplete(url: String?, vararg objects: Any?) {
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end)
}else{
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
}
}
})
if (showLoginInfoAnimator1 == null) {
showLoginInfoAnimator1 = ObjectAnimator.ofFloat(cl_login_info, "alpha", 0f, 1f)
showLoginInfoAnimator1?.interpolator = LinearInterpolator()
}
if (showLoginInfoAnimator2 == null) {
val dp2px = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), -50f)
showLoginInfoAnimator2 = ObjectAnimator.ofFloat(cl_login_info, "translationY", 0f, dp2px.toFloat())
showLoginInfoAnimator2?.interpolator = DecelerateInterpolator()
}
UiThreadHandler.postDelayed({
val animatorSet = AnimatorSet()
animatorSet.playTogether(showLoginInfoAnimator1, showLoginInfoAnimator2)
animatorSet.duration = 500
animatorSet.addListener(object :AnimatorListener{
override fun onAnimationStart(animation: Animator) {
cl_login_info.visibility = View.VISIBLE
}
override fun onAnimationEnd(animation: Animator) {
}
override fun onAnimationCancel(animation: Animator) {
}
override fun onAnimationRepeat(animation: Animator) {
}
})
animatorSet.start()
},2_000,UiThreadHandler.MODE.QUEUE)
}
inputPhoneNormal()
initBg()
initListener()
@@ -159,7 +243,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
R.color.taxi_EF262C
)
)
biz_ace_login_phone_value.setBackgroundResource(R.drawable.taxi_login_phone_error)
biz_ace_login_phone_value.setBackgroundResource(R.drawable.biz_login_phone_error)
}
}
@@ -171,7 +255,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
R.color.taxi_878890
)
)
biz_ace_login_phone_value.setBackgroundResource(R.drawable.taxi_login_phone_normal)
biz_ace_login_phone_value.setBackgroundResource(R.drawable.biz_login_phone_normal)
}
}
@@ -218,6 +302,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
biz_cl_driver_main?.viewTreeObserver?.addOnGlobalLayoutListener(onlayoutListener)
super.onResume()
CallerLogger.d(TAG, "onResume")
biz_login_svp.startPlayLogic()
}
override fun onPause() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/biz_login_enable" android:state_enabled="true"/>
<item android:drawable="@drawable/biz_login_unenable" android:state_enabled="false"/>
</selector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_50"/>
<gradient android:startColor="@color/biz_login_19FFF5" android:endColor="@color/biz_login_1970FF" android:angle="280"/>
</shape>

View File

@@ -3,5 +3,5 @@
android:shape="rectangle">
<corners android:radius="13.33dp"/>
<solid android:color="@color/taxi_14FF0000"/>
<stroke android:color="@color/taxi_FF0000" android:width="2dp"/>
<stroke android:color="@color/biz_login_4DFFFFFF" android:width="2dp"/>
</shape>

View File

@@ -2,6 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="13.33dp"/>
<solid android:color="@android:color/transparent"/>
<stroke android:color="@color/taxi_666666" android:width="2dp"/>
<solid android:color="@color/biz_login_4D000000"/>
<stroke android:color="@color/biz_login_4DFFFFFF" android:width="2dp"/>
</shape>

View File

@@ -6,126 +6,148 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_login_bg"
android:src="@drawable/biz_login_bg"
android:scaleType="fitXY"
<com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
android:id="@+id/biz_login_svp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_login_bg_pop"
android:src="@drawable/biz_login_pop_bg"
android:layout_marginTop="@dimen/dp_66"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:scaleType="fitXY"
android:layout_width="1071dp"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_welcome_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="162dp"
android:layout_marginTop="269dp"
android:text="@string/module_och_taxi_login_title"
android:textColor="@color/taxi_111533"
android:textSize="70dp"
android:layout_height="match_parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_login_phone_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="159dp"
android:text="@string/module_och_taxi_login_get_phone_title"
android:textColor="@color/taxi_878890"
android:textSize="40dp"
app:layout_constraintStart_toStartOf="@+id/biz_actv_welcome_login_title"
app:layout_constraintTop_toBottomOf="@+id/biz_actv_welcome_login_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_login_info"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/biz_login_pop_bg"
android:layout_marginTop="@dimen/dp_286"
android:layout_marginStart="@dimen/dp_70"
android:visibility="gone"
android:layout_width="1042dp"
android:layout_height="1169dp">
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/biz_ace_login_phone_value"
android:layout_width="760dp"
android:layout_height="136dp"
android:layout_marginTop="40dp"
android:background="@drawable/taxi_login_phone_normal"
android:gravity="center_vertical"
android:maxLines="1"
android:maxLength="11"
android:hint="@string/module_och_taxi_login_phone_hint_text"
android:inputType="numberSigned"
android:paddingStart="30dp"
android:textColor="@color/taxi_111533"
android:textSize="40dp"
app:layout_constraintStart_toStartOf="@+id/actv_login_phone_title"
app:layout_constraintTop_toBottomOf="@+id/actv_login_phone_title"
/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_h_top"
app:layout_constraintGuide_begin="@dimen/dp_22"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_phone_code_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="75dp"
android:text="@string/module_och_taxi_login_get_code_title"
android:textColor="@color/taxi_878890"
android:textSize="40dp"
app:layout_constraintStart_toStartOf="@+id/biz_ace_login_phone_value"
app:layout_constraintTop_toBottomOf="@+id/biz_ace_login_phone_value" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_v_left"
app:layout_constraintGuide_begin="@dimen/dp_42"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<View
android:id="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/biz_ace_login_phone_value"
app:layout_constraintTop_toBottomOf="@+id/actv_phone_code_title"
android:background="@drawable/taxi_login_phone_normal"
android:layout_width="760dp"
android:layout_height="136dp"
android:layout_marginTop="40dp"/>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/biz_acet_phone_code_value"
app:layout_constraintTop_toTopOf="@+id/v_phone_code_bg"
app:layout_constraintBottom_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/v_phone_code_bg"
tools:text="18811539480"
android:maxLines="1"
android:textColor="@color/taxi_111533"
android:background="@null"
android:inputType="numberSigned"
android:gravity="center_vertical"
android:imeOptions="actionDone"
android:paddingStart="30dp"
android:maxLength="4"
android:layout_width="518dp"
android:layout_height="136dp"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_welcome_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_99"
android:layout_marginTop="@dimen/dp_104"
android:text="@string/module_och_taxi_login_title"
android:textColor="@color/white"
android:textSize="70dp"
app:layout_constraintStart_toStartOf="@+id/guideline_v_left"
app:layout_constraintTop_toTopOf="@+id/guideline_h_top" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_login_phone_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_50"
android:text="@string/module_och_taxi_login_get_phone_title"
android:textColor="@color/biz_login_C6C6C6"
android:textSize="@dimen/dp_40"
app:layout_constraintStart_toStartOf="@+id/biz_actv_welcome_login_title"
app:layout_constraintTop_toBottomOf="@+id/biz_actv_welcome_login_title" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/biz_ace_login_phone_value"
android:layout_width="@dimen/dp_760"
android:layout_height="@dimen/dp_136"
android:layout_marginTop="@dimen/dp_30"
android:background="@drawable/biz_login_phone_normal"
android:gravity="center_vertical"
android:maxLines="1"
android:maxLength="11"
android:hint="@string/module_och_taxi_login_phone_hint_text"
android:textColorHint="@color/white"
android:inputType="numberSigned"
android:paddingStart="30dp"
android:textColor="@color/white"
android:textSize="@dimen/dp_40"
app:layout_constraintStart_toStartOf="@+id/actv_login_phone_title"
app:layout_constraintTop_toBottomOf="@+id/actv_login_phone_title"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_phone_code_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_50"
android:text="@string/module_och_taxi_login_get_code_title"
android:textColor="@color/biz_login_C6C6C6"
android:textSize="40dp"
app:layout_constraintStart_toStartOf="@+id/biz_ace_login_phone_value"
app:layout_constraintTop_toBottomOf="@+id/biz_ace_login_phone_value" />
<View
android:id="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/biz_ace_login_phone_value"
app:layout_constraintTop_toBottomOf="@+id/actv_phone_code_title"
android:background="@drawable/biz_login_phone_normal"
android:layout_width="@dimen/dp_760"
android:layout_height="@dimen/dp_136"
android:layout_marginTop="30dp"/>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/biz_acet_phone_code_value"
app:layout_constraintTop_toTopOf="@+id/v_phone_code_bg"
app:layout_constraintBottom_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/v_phone_code_bg"
tools:text="1881"
android:textSize="@dimen/dp_40"
android:maxLines="1"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:background="@null"
android:inputType="numberSigned"
android:gravity="center_vertical"
android:imeOptions="actionDone"
android:paddingStart="30dp"
android:maxLength="4"
android:layout_width="518dp"
android:layout_height="136dp"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_login_get_code"
app:layout_constraintTop_toTopOf="@+id/v_phone_code_bg"
app:layout_constraintBottom_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintEnd_toEndOf="@+id/v_phone_code_bg"
android:paddingEnd="30dp"
android:textSize="40dp"
android:textColor="@color/biz_login_878890"
android:gravity="start|center_vertical"
android:text="@string/module_och_taxi_login_get_code"
android:layout_width="wrap_content"
android:layout_height="136dp"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/biz_acbtn_login"
app:layout_constraintTop_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/biz_ace_login_phone_value"
android:background="@drawable/biz_login_bg_selector"
android:layout_marginTop="118dp"
android:textColor="@android:color/white"
android:text="@string/module_och_taxi_login_btn"
android:gravity="center"
android:textSize="40dp"
android:layout_width="760dp"
android:layout_height="136dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_login_get_code"
app:layout_constraintTop_toTopOf="@+id/v_phone_code_bg"
app:layout_constraintBottom_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintEnd_toEndOf="@+id/v_phone_code_bg"
android:paddingEnd="30dp"
android:textSize="40dp"
android:textColor="@color/taxi_login_get_code_text_color"
android:gravity="start|center_vertical"
android:text="@string/module_och_taxi_login_get_code"
android:layout_width="wrap_content"
android:layout_height="136dp"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/biz_acbtn_login"
app:layout_constraintTop_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/biz_ace_login_phone_value"
android:background="@drawable/taxi_login_bg_selector"
android:layout_marginTop="118dp"
android:textColor="@android:color/white"
android:text="@string/module_och_taxi_login_btn"
android:gravity="center"
android:textSize="40dp"
android:layout_width="760dp"
android:layout_height="136dp"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_login_show_sn"

Binary file not shown.

Binary file not shown.

View File

@@ -5,5 +5,11 @@
<color name="biz_login_72A7FF">#72A7FF</color>
<color name="biz_login_A0B3DA">#A0B3DA</color>
<color name="biz_login_171D2B">#171D2B</color>
<color name="biz_login_C6C6C6">#C6C6C6</color>
<color name="biz_login_4DFFFFFF">#4DFFFFFF</color>
<color name="biz_login_4D000000">#4D000000</color>
<color name="biz_login_878890">#878890</color>
<color name="biz_login_19FFF5">#19FFF5</color>
<color name="biz_login_1970FF">#1970FF</color>
</resources>

View File

@@ -0,0 +1,197 @@
package com.mogo.och.common.module.wigets
import android.content.Context
import android.view.View
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.view.animation.LinearInterpolator
import android.widget.TextView
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.lifecycle.LifecycleObserver
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.R
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
/**
* 带有title, tip,confirm,cancel的dialog
*/
class CommonDialogStatus: BaseFloatDialog, LifecycleObserver {
private var commonConfirm : TextView? = null
private var commonCancel : TextView? = null
private var commonTitle : TextView? = null
private var commonTips : TextView? = null
private var countDownTxt: AppCompatTextView? = null
private var commonStatus:AppCompatImageView?=null
private var clickListener: ClickListener? = null
private var subscribeCountDown: Disposable? = null
private var mCountdownValue: Int = 0
private var status:Status = Status.ask
constructor(builder: Builder,context: Context) : super(context) {
commonTitle?.text = builder.titleStr
commonTips?.text = builder.tipsStr
commonCancel?.text = builder.cancelStr
commonConfirm?.text = builder.confirmStr
countDownTxt?.text = builder.countDownValue.toString()
mCountdownValue = builder.countDownValue
status = builder.statusEnum
when (status) {
Status.ask -> {
commonStatus?.setImageResource(R.drawable.common_dialog_icon_ask)
}
Status.loading -> {
commonStatus?.setImageResource(R.drawable.common_dialog_status_loading)
}
}
if (mCountdownValue > 0){
countDownTxt?.visibility = View.VISIBLE
}else{
countDownTxt?.visibility = View.GONE
}
}
init{
setContentView(R.layout.common_dialog_status_new)
setCanceledOnTouchOutside(true)
commonConfirm = findViewById(R.id.common_dialog_submit_new)
commonCancel = findViewById(R.id.common_dialog_cancle_new)
commonTitle = findViewById(R.id.common_dialog_title_new)
commonTips = findViewById(R.id.common_dialog_content_new)
countDownTxt = findViewById(R.id.common_count_down_new)
commonStatus = findViewById(R.id.common_dialog_status)
commonConfirm?.setOnClickListener{
clickListener?.confirm()
dismiss()
}
commonCancel?.setOnClickListener {
clickListener?.cancel()
dismiss()
}
}
fun setClickListener(clickListener: ClickListener) {
this.clickListener = clickListener
}
interface ClickListener{
fun confirm()
fun cancel()
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
if (mCountdownValue > 0){
startCountDown()
}
}
private fun startCountDown() {
subscribeCountDown?.let {
if (!it.isDisposed) {
it.dispose()
}
}
val mAnimation: Animation = AnimationUtils.loadAnimation(context, R.anim.count_down_rotate)
val lin = LinearInterpolator()
mAnimation.interpolator = lin
commonStatus?.startAnimation(mAnimation)
subscribeCountDown = Observable.intervalRange(0L
, mCountdownValue.toLong(), 0, 1, TimeUnit.SECONDS)
.map { aLong -> mCountdownValue - aLong }
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe {
UiThreadHandler.post {
mCountdownValue -= 1
countDownTxt?.text = mCountdownValue.toString()
if (mCountdownValue == 0){
mAnimation.cancel()
commonStatus?.clearAnimation()
countDownTxt?.visibility = View.GONE
commonStatus?.visibility = View.GONE
dialogCancel()
}
}
}
}
private fun dialogCancel() {
clickListener?.cancel()
dismiss()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
subscribeCountDown?.let {
if (!it.isDisposed) {
it.dispose()
}
}
}
class Builder{
var statusEnum: Status = Status.ask
var titleStr:String = ""
var tipsStr:String = ""
var confirmStr:String = ""
var cancelStr:String = ""
var countDownValue: Int = 0
fun title(title: String) : Builder{
this.titleStr = title
return this
}
fun tips(tips: String) : Builder{
this.tipsStr = tips
return this
}
fun confirmStr(commit: String) : Builder{
this.confirmStr = commit
return this
}
/**
* 不传倒计时没有, >0 有倒计时
*/
fun countdownValue(value: Int): Builder{
this.countDownValue = value
return this
}
fun cancelStr(cancel: String) : Builder{
this.cancelStr = cancel
return this
}
fun build(context: Context): CommonDialogStatus {
return CommonDialogStatus(this,context)
}
fun status(ask: Status): Builder {
this.statusEnum = ask
return this
}
}
enum class Status{
ask,loading
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="@color/color_3B3D44" android:endColor="@color/color_2E323A" android:angle="270"/>
<stroke android:color="@color/color_666C6C6C" android:width="@dimen/dp_2"/>
<corners android:radius="@dimen/dp_50"/>
</shape>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/taxi_login_enable" android:state_enabled="true"/>
<item android:drawable="@drawable/taxi_login_unenable" android:state_enabled="false"/>
</selector>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="13.33dp"/>
<solid android:color="@color/taxi_2961F2"/>
</shape>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.och.common.module.wigets.OCHRoundConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_900"
android:layout_height="@dimen/dp_620"
android:background="@drawable/bg_bone_dialog"
app:roundLayoutRadius="@dimen/dp_50">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/common_dialog_status"
android:layout_width="@dimen/dp_140"
android:layout_height="@dimen/dp_140"
android:layout_marginTop="@dimen/dp_87"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:src="@drawable/common_dialog_status_loading"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/common_count_down_new"
android:text="10"
android:textSize="@dimen/dp_45"
android:textColor="@color/common_cccccc"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="@+id/common_dialog_status"
app:layout_constraintBottom_toBottomOf="@+id/common_dialog_status"
app:layout_constraintStart_toStartOf="@+id/common_dialog_status"
app:layout_constraintEnd_toEndOf="@+id/common_dialog_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/common_dialog_title_new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
tools:text="@string/offline_map_cache_tip"
android:textColor="@color/white"
android:textSize="@dimen/dp_45"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/common_dialog_status" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/common_dialog_content_new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
tools:text="@string/cache_offline_map_content"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/common_dialog_title_new" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/common_dialog_submit_new"
android:layout_width="@dimen/dp_356"
android:layout_height="@dimen/dp_120"
android:gravity="center"
android:text="@string/confirm"
android:background="@drawable/bg_dialog_btn"
android:textColor="@color/color_2EACFF"
android:textSize="@dimen/dp_40"
android:layout_marginStart="@dimen/dp_65"
android:layout_marginBottom="@dimen/dp_62"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/common_dialog_cancle_new"
android:layout_width="@dimen/dp_356"
android:layout_height="@dimen/dp_120"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/white"
android:textSize="@dimen/dp_40"
android:background="@drawable/bg_dialog_btn"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginEnd="@dimen/dp_65"
android:layout_marginBottom="@dimen/dp_62"
app:layout_constraintRight_toRightOf="parent"/>
</com.mogo.och.common.module.wigets.OCHRoundConstraintLayout>

View File

@@ -32,4 +32,5 @@
<color name="common_19FFCB">#19FFCB</color>
<color name="common_FF4E41">#FF4E41</color>
<color name="common_B3FFFFFF">#B3FFFFFF</color>
<color name="common_cccccc">#CCCCCC</color>
</resources>

View File

@@ -105,12 +105,10 @@ class TaskRunningAdapter(
// 下端 彩色
holder.itemView.setBackgroundResource(R.drawable.bus_task_current_station_bg)
val startColorTemp = argbEvaluator.evaluate(0f,startColor,endColor) as Int
val endColorTemp = argbEvaluator.evaluate((halfHeight/totalHeight).toFloat(),startColor,endColor) as Int
val orientation = GradientDrawable.Orientation.TOP_BOTTOM
val temp01 = GradientDrawable(orientation, intArrayOf(
startColorTemp,
endColorTemp
startColor,
endColor
))
holder.bgPassBottomBg.background = temp01
}

View File

@@ -32,11 +32,12 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback {
interface SwtichLineViewCallback{
fun showRunningTaskInfo()
fun hideLoadingAndshowRunningTaskInfo()
}
override fun onLeaveStaionSuccess() {
BizLoopManager.runInMainThread{
viewCallback?.showRunningTaskInfo()
viewCallback?.hideLoadingAndshowRunningTaskInfo()
}
}

View File

@@ -13,6 +13,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.view.SpacesItemDecoration
import com.mogo.och.common.module.manager.autopilot.line.LineManager
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.common.module.wigets.CommonDialogStatus
import com.mogo.och.common.module.wigets.OCHCommitDialog
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.model.LineModel
@@ -24,6 +25,7 @@ import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.actv_comple
import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.actv_running_task_last_station
import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.actv_running_task_time
import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.bus_task_running_line_name
import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.loading_arrive_station
import kotlinx.android.synthetic.main.shuttle_weak_task_running.view.rl_running_task_station_list
import me.jessyan.autosize.utils.AutoSizeUtils
@@ -67,17 +69,19 @@ class TaskRunningView: ConstraintLayout, TaskRunningModel.SwtichLineViewCallback
}
})
actv_arriver_station.onClick {
loading_arrive_station.visibility = VISIBLE
viewModel?.arriveStation()
}
actv_complete_task.onClick {
val builder = OCHCommitDialog.Builder()
val builder = CommonDialogStatus.Builder()
val closeLineConfirmDialog = builder
.title(ResourcesUtils.getString(R.string.bus_dialog_title))
.tips(ResourcesUtils.getString(R.string.bus_dialog_tips))
.confirmStr(ResourcesUtils.getString(R.string.bus_dialog_confirm))
.cancelStr(ResourcesUtils.getString(R.string.bus_dialog_cancel))
.status(CommonDialogStatus.Status.ask)
.build(AbsMogoApplication.getApp())
closeLineConfirmDialog!!.setClickListener(object : OCHCommitDialog.ClickListener {
closeLineConfirmDialog.setClickListener(object : CommonDialogStatus.ClickListener {
override fun confirm() {
viewModel?.completeTask()
}
@@ -125,6 +129,11 @@ class TaskRunningView: ConstraintLayout, TaskRunningModel.SwtichLineViewCallback
}
}
override fun hideLoadingAndshowRunningTaskInfo() {
loading_arrive_station.visibility = GONE
showRunningTaskInfo()
}
fun showLeaveStationView(){
aciv_task_leave_station_slide_bg.visibility = VISIBLE
actv_arriver_station.visibility = GONE

View File

@@ -46,8 +46,7 @@
android:layout_marginEnd="@dimen/bus_dp_52"
app:layout_constraintTop_toBottomOf="@+id/actv_last_refresh_date"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/dp_22"
android:layout_marginBottom="@dimen/dp_24"/>
android:layout_marginTop="@dimen/dp_22" />
<include
android:layout_width="match_parent"

View File

@@ -17,14 +17,14 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@+id/actv_running_task_time"
android:layout_marginEnd="@dimen/dp_100"
android:layout_marginEnd="@dimen/dp_140"
android:layout_marginTop="@dimen/dp_37"
android:textColor="@color/white"
android:text="@string/bus_switch_line_title"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_running_task_last_station"
android:textColor="@color/white"
android:textColor="@color/shuttle_driver_B3FFFFFF"
android:textSize="@dimen/dp_36"
app:layout_constraintStart_toStartOf="@+id/bus_task_running_line_name"
app:layout_constraintTop_toBottomOf="@+id/bus_task_running_line_name"
@@ -80,6 +80,17 @@
android:layout_width="@dimen/dp_474"
android:layout_height="@dimen/dp_120"/>
<com.mogo.och.weaknet.view.LoadingViewSmall
android:id="@+id/loading_arrive_station"
android:src="@drawable/bus_switch_biz_loading_samll"
app:layout_constraintTop_toTopOf="@+id/actv_arriver_station"
app:layout_constraintBottom_toBottomOf="@+id/actv_arriver_station"
app:layout_constraintEnd_toEndOf="@+id/actv_arriver_station"
android:layout_marginEnd="@dimen/dp_30"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_complete_task"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -78,4 +78,5 @@
<color name="shuttle_driver_4DFFFFFF">#4D000000</color>
<color name="shuttle_driver_1970FF">#1970FF</color>
<color name="shuttle_driver_19FF7F">#19FF7F</color>
<color name="shuttle_driver_B3FFFFFF">#B3FFFFFF</color>
</resources>

View File

@@ -80,7 +80,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
});
if (getContext() != null) {
CallerEagleBaseFunctionCall4OchManager.INSTANCE.addSingleToolKitDefaultItem(runningTaskGateWay, "运营", R.drawable.common_biz_operation, 4);
CallerEagleBaseFunctionCall4OchManager.INSTANCE.addSingleToolKitDefaultItem(runningTaskGateWay, "运营", R.drawable.common_biz_operation, 4);
CallerEagleBaseFunctionCall4OchManager.INSTANCE.addToolKitDefaultItemClickListener(runningTaskGateWay, new IToolKitItemClickListener() {
@Override
public void onItemClick(@NonNull String toolTag, @Nullable Context ctx) {

View File

@@ -85,7 +85,7 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
context?.let {
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(
runningTaskGateWay,
"运营",
"运营",
R.drawable.common_biz_operation,
4
);