登录页面搭建

This commit is contained in:
yangyakun
2022-08-17 17:57:29 +08:00
parent 164c2eddee
commit b27ebd9c79
23 changed files with 830 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
package com.mogo.och.taxi.bean;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
*/
public class TaxiLoginReqBean {
public String phone;
public String code;
public String sn;
public TaxiLoginReqBean(String phone, String code, String sn) {
this.phone = phone;
this.code = code;
this.sn = sn;
}
}

View File

@@ -0,0 +1,18 @@
package com.mogo.och.taxi.bean;
import com.mogo.eagle.core.data.BaseData;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
*/
public class TaxiLoginRespBean extends BaseData {
public TaxiLoginRespBean.Result data;
public static class Result {
public Double lat;
public Double lon;
}
}

View File

@@ -0,0 +1,17 @@
package com.mogo.och.taxi.callback;
import androidx.annotation.NonNull;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
import java.util.List;
/**
* Created on 2021/9/8
*
* Model->Presenter回调订单相关进行中/待服务单变更,当前进行单状态变更,新到预约单,抢单,抢单结果状态等等)
*/
public interface ITaxiLoginCallback {
void getPhoneCodeSuccess();
}

View File

@@ -0,0 +1,202 @@
package com.mogo.och.taxi.model;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.net.ConnectivityManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import com.amap.api.maps.model.LatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.PinYinUtil;
import com.mogo.och.taxi.R;
import com.mogo.och.taxi.bean.DriverServiceDataRespBean;
import com.mogo.och.taxi.bean.DriverStatusQueryRespBean;
import com.mogo.och.taxi.bean.OrderGrabRespBean;
import com.mogo.och.taxi.bean.OrderGrabStatusQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
import com.mogo.och.taxi.bean.OrderRouteUpdateReqBean;
import com.mogo.och.taxi.bean.OrdersInServiceQueryRespBean;
import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiCarStatusCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiLoginCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.constant.TaxiOrderTypeEnum;
import com.mogo.och.taxi.network.TaxiServiceCallback;
import com.mogo.och.taxi.network.TaxiServiceManager;
import com.mogo.och.taxi.utils.OrderUtil;
import com.mogo.och.taxi.utils.TaxiAnalyticsManager;
import com.mogo.och.taxi.utils.TaxiTrajectoryManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.zhjt.service.chain.ChainLog;
import com.zhjt.service.chain.TracingConstants;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import io.reactivex.exceptions.UndeliverableException;
import io.reactivex.functions.Consumer;
import io.reactivex.plugins.RxJavaPlugins;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
import system_master.SystemStatusInfo;
/**
* Created by pangfan on 2021/8/19
* <p>
* 网约车 - 出租车业务逻辑处理
*/
public class TaxiLoginModel {
private static final String TAG = TaxiLoginModel.class.getSimpleName();
private static final class SingletonHolder {
private static final TaxiLoginModel INSTANCE = new TaxiLoginModel();
}
public static TaxiLoginModel getInstance() {
return SingletonHolder.INSTANCE;
}
private Context mContext;
ITaxiLoginCallback iTaxiLoginCallback;
private TaxiLoginModel() {
}
public void init(Context context) {
mContext = context.getApplicationContext();
}
public ITaxiLoginCallback getiTaxiLoginCallback() {
return iTaxiLoginCallback;
}
public void setiTaxiLoginCallback(ITaxiLoginCallback iTaxiLoginCallback) {
this.iTaxiLoginCallback = iTaxiLoginCallback;
}
public void release() {
}
/**
* 获取手机验证码
*/
public void getPhoneCode(String phone) {
TaxiServiceManager.getInstance().getPhoneCode(mContext,phone,
new TaxiServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext.getString(R.string.module_och_taxi_login_get_code_success));
if(iTaxiLoginCallback!=null){
iTaxiLoginCallback.getPhoneCodeSuccess();
}
}else {
if(data!=null) {
ToastUtils.showShort(data.code);
}
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
}
@Override
public void onFail(int code, String msg) {
ToastUtils.showShort(code + "," + msg);
}
});
}
public void gotoLogin(@NotNull String phone, @NotNull String code) {
TaxiServiceManager.getInstance().gotoLoginBycode(mContext,phone,code,
new TaxiServiceCallback<TaxiLoginRespBean>() {
@Override
public void onSuccess(TaxiLoginRespBean data) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext.getString(R.string.module_och_taxi_login_get_code_success));
if(iTaxiLoginCallback!=null){
iTaxiLoginCallback.getPhoneCodeSuccess();
}
}else {
if(data!=null) {
ToastUtils.showShort(data.code);
}
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
}
@Override
public void onFail(int code, String msg) {
ToastUtils.showShort(code + "," + msg);
}
});
}
}

View File

@@ -20,6 +20,8 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginReqBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
@@ -307,4 +309,28 @@ interface TaxiServiceApiNew {
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/orderCompleted" )
Observable<TaxiDataBaseRespBean> orderCompleted(@Header ("appId") String appId
, @Header("ticket") String ticket,@Body TaxiOrPassengerReadyReqBean data);
/**
* 收车/出车状态查询
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@GET( "/autopilot-car-hailing/car/v2/driver/taxi/serviceStatus/query" )
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header ("appId") String appId
,@Header("ticket") String ticket,@Query("sn") String sn,@Query("phone") String phone);
/**
* 订单完成
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/orderCompleted" )
Observable<TaxiLoginRespBean> gotoLoginBycode(@Header ("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
}

View File

@@ -30,6 +30,8 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginReqBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
import com.mogo.och.taxi.constant.TaxiConst;
@@ -436,6 +438,38 @@ public class TaxiServiceManager {
}
/**
* 收车/出车状态查询
* @param context
* @param callback
*/
public void getPhoneCode(Context context,String phone,
TaxiServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, MoGoAiCloudClientConfig.getInstance().getSn()
, phone)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "getPhoneCode"));
}
/**
* 收车/出车状态查询
* @param context
* @param callback
*/
public void gotoLoginBycode(Context context,String phone,String code,
TaxiServiceCallback<TaxiLoginRespBean> callback) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginReqBean(phone,code,sn))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "getPhoneCode"));
}
private <T extends BaseData> SubscribeImpl getSubscribeImpl(
Context context, TaxiServiceCallback<T> callback, String apiName) {
return new SubscribeImpl<T>(RequestOptions.create(context)) {

View File

@@ -0,0 +1,97 @@
package com.mogo.och.taxi.presenter
import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.Presenter
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.RegexUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.callback.ITaxiLoginCallback
import com.mogo.och.taxi.model.TaxiLoginModel
import com.mogo.och.taxi.ui.TaxiLoginDialogFragment
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
/**
* @author congtaowang
* @since 2021/1/18
*
* 描述
*/
class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
Presenter<TaxiLoginDialogFragment?>(view), ITaxiLoginCallback {
private var countDownDisposable: Disposable? = null
init {
TaxiLoginModel.getInstance().init(AbsMogoApplication.getApp())
initListeners()
}
private fun initListeners() {
TaxiLoginModel.getInstance().setiTaxiLoginCallback(this)
}
fun getPhoneCode(phone:String){
if (!RegexUtils.isMobileExact(phone)) {
ToastUtils.showShort(R.string.module_och_taxi_login_phone_error)
mView?.inputPhoneError()
return
}
TaxiLoginModel.getInstance().getPhoneCode(phone)
}
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
CallerLogger.d(SceneConstant.M_TAXI + TAG, "网约车-出租车登陆")
}
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
countDownDisposable?.let {
if (!it.isDisposed) {
it.dispose()
}
}
}
companion object {
private val TAG = TaxiLoginPresenter::class.java.simpleName
}
override fun getPhoneCodeSuccess() {
val countDownSeconds = 60L;
countDownDisposable = Observable.intervalRange(0, countDownSeconds, 0, 1, TimeUnit.SECONDS)
.map { aLong -> countDownSeconds - aLong }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
mView?.setCountDownText("${it}s",false)
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时:$it")
}, {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onError:${it}")
it.printStackTrace()
mView?.setCountDownText(context.getString(R.string.module_och_taxi_login_get_code),true)
}, {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onComplete")
mView?.setCountDownText(context.getString(R.string.module_och_taxi_login_get_code),true)
})
}
fun gotoLogin(phone: String, code: String) {
if (!RegexUtils.isMobileExact(phone)) {
ToastUtils.showShort(R.string.module_och_taxi_login_phone_error)
mView?.inputPhoneError()
return
}
mView?.closeSoftInput()
TaxiLoginModel.getInstance().gotoLogin(phone,code)
}
}

View File

@@ -47,6 +47,7 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
private TaxiGrabOrderFragment grabOrderFragment;
private TaxiServerOrdersFragment serverOrdersFragment;
private WeakReference<TaxiLoginDialogFragment> taxiLoginDialogFragment = null;
private WeakReference<TaxiPersonalDialogFragment> personalDialogFragment = null;
protected double mCurLatitude = 0.0;
protected double mCurLongitude = 0.0;
@@ -367,6 +368,13 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
}
TaxiModel.getInstance().setOnTheWayToEndStation();
});
findViewById(R.id.test_bar_show_login).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
taxiLoginDialogFragment = new WeakReference<>(TaxiLoginDialogFragment.newInstance());
taxiLoginDialogFragment.get().show(getParentFragmentManager(),taxiLoginDialogFragment.get().getTag());
}
});
}
private void testRouteInfoUpload() {

View File

@@ -0,0 +1,195 @@
package com.mogo.och.taxi.ui
import android.content.DialogInterface
import android.graphics.Rect
import android.os.Bundle
import android.view.*
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import com.mogo.commons.mvp.MvpDialogFragment
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.BarUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.presenter.TaxiLoginPresenter
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
/**
* @author: yangyakun
* @date: 2022/8/15
*/
class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, TaxiLoginPresenter?>(),
DialogInterface.OnKeyListener {
lateinit var clMain: ConstraintLayout
lateinit var acbtnLogin: AppCompatButton
lateinit var actvLoginGetCode: AppCompatTextView
lateinit var aceLoginPhoneValue: AppCompatEditText
lateinit var acetPhoneCodeValue: AppCompatEditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
dialog?.setOnKeyListener(this)
return super.onCreateView(inflater, container, savedInstanceState)
}
override fun getLayoutId(): Int {
return R.layout.taxi_login_view
}
override fun initViews() {
findViewById<View>(R.id.module_och_taxi_order_list_close_iv)!!.setOnClickListener { v: View? -> dismissAllowingStateLoss() }
clMain = mRootView.findViewById(R.id.cl_main)
acbtnLogin = mRootView.findViewById(R.id.acbtn_login)
actvLoginGetCode = mRootView.findViewById(R.id.actv_login_get_code)
aceLoginPhoneValue = mRootView.findViewById(R.id.ace_login_phone_value)
acetPhoneCodeValue = mRootView.findViewById(R.id.acet_phone_code_value)
inputPhoneNormal()
initListener()
dialog?.window?.let {
context?.let { contextIn->
BarUtils.setStatusBarColor(
it,
ContextCompat.getColor(contextIn, R.color.taxi_4D000000)
)
}
}
}
private fun initListener() {
mRootView.isFocusable = true
mRootView.isFocusableInTouchMode = true
mRootView.setOnTouchListener(object : View.OnTouchListener {
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
closeSoftInput()
}
}
return false
}
})
acbtnLogin.setOnClickListener {
val phone = aceLoginPhoneValue.text.toString()
val code = acetPhoneCodeValue.text.toString()
mPresenter?.gotoLogin(phone,code)
}
clMain.viewTreeObserver.addOnGlobalLayoutListener {
val rect = Rect()
clMain.getWindowVisibleDisplayFrame(rect)
val mainInvisibleHeight = clMain.rootView.height - rect.bottom
if (mainInvisibleHeight > 100) {
val outLocation = IntArray(2)
acbtnLogin.getLocationInWindow(outLocation)
val srollHeight = (outLocation[1] + acbtnLogin.height) - rect.bottom
if (srollHeight > 0) {
clMain.scrollTo(0, srollHeight)
}
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight")
} else {
clMain.scrollTo(0, 0)
}
}
actvLoginGetCode.setOnClickListener {
mPresenter?.getPhoneCode(aceLoginPhoneValue.text.toString())
}
aceLoginPhoneValue.addTextChangedListener {
it?.let { itEditable->
if(itEditable.isNotEmpty()){
inputPhoneNormal()
}
}
}
}
/**
* 关闭键盘
*/
fun closeSoftInput() {
mRootView.requestFocus()
dialog?.window?.let {
KeyboardUtils.hideSoftInput(it)
}
}
fun setCountDownText(text:String,enable: Boolean){
if(enable){
actvLoginGetCode.setText(R.string.module_och_taxi_login_get_code)
actvLoginGetCode.isEnabled = true
}else{
actvLoginGetCode.text = text
actvLoginGetCode.isEnabled = false
}
}
fun inputPhoneError(){
aceLoginPhoneValue.text?.clear()
aceLoginPhoneValue.setHint(R.string.module_och_taxi_login_phone_error)
context?.let {
aceLoginPhoneValue.setHintTextColor(ContextCompat.getColor(it,R.color.taxi_EF262C))
aceLoginPhoneValue.setBackgroundResource(R.drawable.taxi_login_phone_error)
}
}
private fun inputPhoneNormal(){
//aceLoginPhoneValue.setHint(R.string.module_och_taxi_login_phone_hint_text)
context?.let {
aceLoginPhoneValue.setHintTextColor(ContextCompat.getColor(it,R.color.taxi_878890))
aceLoginPhoneValue.setBackgroundResource(R.drawable.taxi_login_phone_normal)
}
}
override fun createPresenter(): TaxiLoginPresenter {
return TaxiLoginPresenter(this)
}
override fun onResume() {
super.onResume()
}
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
}
override fun onPause() {
super.onPause()
}
override fun onDestroy() {
super.onDestroy()
}
override fun onKey(dialog: DialogInterface, keyCode: Int, event: KeyEvent): Boolean {
return keyCode == KeyEvent.KEYCODE_BACK
}
companion object {
private val TAG = TaxiLoginDialogFragment::class.java.simpleName
@JvmStatic
fun newInstance(): TaxiLoginDialogFragment {
val args = Bundle()
val fragment = TaxiLoginDialogFragment()
fragment.arguments = args
return fragment
}
}
}

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:color="@color/taxi_878890" android:state_enabled="true"/>
<item android:color="@color/taxi_2961F2" android:state_enabled="false"/>
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 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/taxi_login_enable" android:state_enabled="true"/>
<item android:drawable="@drawable/taxi_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="13.33px"/>
<solid android:color="@color/taxi_2961F2"/>
</shape>

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="@color/taxi_878890" android:state_enabled="true"/>
<item android:drawable="@color/taxi_2961F2" android:state_enabled="false"/>
</selector>

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">
<corners android:radius="13.33px"/>
<solid android:color="@color/taxi_14FF0000"/>
<stroke android:color="@color/taxi_FF0000" android:width="2px"/>
</shape>

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">
<corners android:radius="13.33px"/>
<solid android:color="@android:color/transparent"/>
<stroke android:color="@color/taxi_666666" android:width="2px"/>
</shape>

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="13.33px"/>
<solid android:color="@color/taxi_86A5F7"/>
</shape>

View File

@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cl_main"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:src="@drawable/taxi_ic_login_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_welcome_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="149px"
android:layout_marginTop="269px"
android:text="@string/module_och_taxi_login_title"
android:textColor="@color/taxi_111533"
android:textSize="70px"
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="159px"
android:text="@string/module_och_taxi_login_get_phone_title"
android:textColor="@color/taxi_878890"
android:textSize="40px"
app:layout_constraintStart_toStartOf="@+id/actv_welcome_login_title"
app:layout_constraintTop_toBottomOf="@+id/actv_welcome_login_title" />
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/ace_login_phone_value"
android:layout_width="760px"
android:layout_height="136px"
android:layout_marginTop="40px"
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="30px"
android:textColor="@color/taxi_111533"
android:textSize="40px"
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="75px"
android:text="@string/module_och_taxi_login_get_code_title"
android:textColor="@color/taxi_878890"
android:textSize="40px"
app:layout_constraintStart_toStartOf="@+id/ace_login_phone_value"
app:layout_constraintTop_toBottomOf="@+id/ace_login_phone_value" />
<View
android:id="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/ace_login_phone_value"
app:layout_constraintTop_toBottomOf="@+id/actv_phone_code_title"
android:background="@drawable/taxi_login_phone_normal"
android:layout_width="760px"
android:layout_height="136px"
android:layout_marginTop="40px"/>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/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="30px"
android:maxLength="8"
android:layout_width="518px"
android:layout_height="136px"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/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="30px"
android:textSize="40px"
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="136px"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/acbtn_login"
app:layout_constraintTop_toBottomOf="@+id/v_phone_code_bg"
app:layout_constraintStart_toStartOf="@+id/ace_login_phone_value"
android:background="@drawable/taxi_login_bg_selector"
android:layout_marginTop="118px"
android:textColor="@android:color/white"
android:text="@string/module_och_taxi_login_btn"
android:gravity="center"
android:textSize="40px"
android:layout_width="760px"
android:layout_height="136px"/>
<ImageView
android:id="@+id/module_och_taxi_order_list_close_iv"
android:layout_width="150px"
android:layout_height="150px"
android:layout_gravity="right"
android:padding="30px"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -18,7 +18,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
@@ -89,5 +89,13 @@
android:text="到达目的地"
android:textSize="12sp" />
<Button
android:id="@+id/test_bar_show_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="testToEnd"
android:text="打开登录"
android:textSize="12sp" />
</LinearLayout>
</com.mogo.och.common.module.wigets.OCHBorderShadowLayout>

View File

@@ -24,4 +24,15 @@
<color name="taxi_traffic_light_yellow_color_down">#FFFF9B00</color>
<color name="taxi_passenger_line_color">#657EE2</color>
<color name="taxi_2961F2">#2961F2</color>
<color name="taxi_14FF0000">#14FF0000</color>
<color name="taxi_FF0000">#FF0000</color>
<color name="taxi_666666">#666666</color>
<color name="taxi_86A5F7">#86A5F7</color>
<color name="taxi_111533">#111533</color>
<color name="taxi_878890">#878890</color>
<color name="taxi_EF262C">#EF262C</color>
<color name="taxi_4D000000">#4D000000</color>
</resources>

View File

@@ -30,6 +30,15 @@
<string name="module_och_taxi_auto_disable_tip">自动驾驶状态为0不可用</string>
<string name="module_och_taxi_auto_disable_tip1">司机端未确认可以开启自动驾驶</string>
<string name="module_och_taxi_login_title">欢迎您登录</string>
<string name="module_och_taxi_login_btn">登录</string>
<string name="module_och_taxi_login_get_code">获取验证码</string>
<string name="module_och_taxi_login_get_code_title">请输入验证码</string>
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>
<string name="network_error_tip">网络异常,请稍后重试</string>
<string name="request_error_tip">请求出现异常,请稍后重试</string>
</resources>

View File

@@ -23,4 +23,22 @@
<style name="och_speed_style2">
<item name="android:textSize">32px</item>
</style>
<style name="DialogFullScreen" parent="Theme.AppCompat.Dialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowOverscan">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent
</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowEnterAnimation">@null</item>
<item name="android:windowExitAnimation">@null</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowFullscreen">false</item>
</style>
</resources>