浏览代码

feat: 更换ETC设备UI及逻辑(接口需要等后端)

master
huting 2 年前
父节点
当前提交
93964b9255

+ 9
- 0
app/src/main/AndroidManifest.xml 查看文件

android:name=".project.ui.activity.order.OrderLogisticsActivity" android:name=".project.ui.activity.order.OrderLogisticsActivity"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<!--更换ETC设备-->
<activity
android:name=".project.ui.activity.after.ReplaceEtcStep1Activity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".project.ui.activity.after.ReplaceEtcStep2Activity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
</application> </application>
</manifest> </manifest>

+ 81
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/dialog/ConfirmDialog.java 查看文件

package com.huntersun.vkyes.etcopencard.project.dialog;

import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.huntersun.vkyes.etcopencard.R;
import com.huntersun.vkyes.etcopencard.src.action.ToastAction;

/**
* Date :2023-03-15
* Description:通用确认弹窗
*/
public class ConfirmDialog {
public static final class Builder extends com.huntersun.vkyes.etcopencard.src.ui.dialog.CommonDialog.Builder<ConfirmDialog.Builder> implements ToastAction {
private final android.content.Context Context;
private ImageView ivIcon;
private ImageView ivClose;
private TextView tvMsg;
private Button btnConfirm;
private TextView tvCancel;

public Builder(Context context) {
super(context);
Context = context;
setCustomView(R.layout.dialog_common_dialog);
ivIcon = findViewById(R.id.ivIcon);
//ivClose = findViewById(R.id.ivClose);
tvMsg = findViewById(R.id.tvMsg);
btnConfirm = findViewById(R.id.btnConfirm);
tvCancel = findViewById(R.id.tvCancel);

btnConfirm.setOnClickListener(this);
tvCancel.setOnClickListener(this);

//隐藏确认关闭框
mShuView.setVisibility(View.GONE);
mSelect.setVisibility(View.GONE);

//背景层开关
setCanceledOnTouchOutside(true);
}

public ConfirmDialog.Builder onClick(ConfirmDialog.Result result) {
btnConfirm.setOnClickListener(v -> {
result.confirm();
dismiss();
});
tvCancel.setOnClickListener(v -> {
//result.cancel();
dismiss();
});
return this;
}

public ConfirmDialog.Builder setMsg(String msg){
tvMsg.setText(msg);
return this;
}

public ConfirmDialog.Builder setMsg(String msg, int icon){
tvMsg.setText(msg);
ivClose.setImageDrawable(getResources().getDrawable(icon));
return this;
}

@Override
public ConfirmDialog.Builder setGravity(int gravity) {
return super.setGravity(Gravity.CENTER);
}
}

public interface Result {
void confirm();
//void cancel();
}

}

+ 124
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/ReplaceEtcStep1Activity.java 查看文件

package com.huntersun.vkyes.etcopencard.project.ui.activity.after;

import android.view.View;

import com.google.gson.Gson;
import com.huntersun.vkyes.etcopencard.databinding.ActivityReplaceEtcStep1Binding;
import com.huntersun.vkyes.etcopencard.project.api.Api;
import com.huntersun.vkyes.etcopencard.project.api.Converter;
import com.huntersun.vkyes.etcopencard.project.api.MyRetrofit;
import com.huntersun.vkyes.etcopencard.project.api.RequestParameters;
import com.huntersun.vkyes.etcopencard.project.api.Result;
import com.huntersun.vkyes.etcopencard.project.api.bean.IFCode;
import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean;
import com.huntersun.vkyes.etcopencard.project.api.bean.SendTheVerificationCodeBean;
import com.huntersun.vkyes.etcopencard.project.dialog.ConfirmDialog;
import com.huntersun.vkyes.etcopencard.project.dialog.PersonalCompanyDialog;
import com.huntersun.vkyes.etcopencard.project.ui.activity.FillOutMessage;
import com.huntersun.vkyes.etcopencard.project.ui.activity.MainActivity;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
import com.huntersun.vkyes.etcopencard.src.action.StatusAction;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
import com.huntersun.vkyes.etcopencard.src.widget.StatusLayout;

import retrofit2.Response;

/**
* Date :2023-03-15
* Description:更换ETC设备第一步
*/
public class ReplaceEtcStep1Activity extends AppActivity {
private ActivityReplaceEtcStep1Binding binding;

private ResultBean.BizContent curBizContent;

@Override
protected View getLayoutView() {
binding = ActivityReplaceEtcStep1Binding.inflate(getLayoutInflater());
return binding.getRoot();
}

@Override
protected void initView() {
binding.LLSearchResult.setVisibility(View.VISIBLE);
binding.btnNext.setOnClickListener(new View.OnClickListener() {
@Override
@SingleClick
public void onClick(View view) {
new ConfirmDialog.Builder(ReplaceEtcStep1Activity.this)
.setMsg("确认是否更换ETC卡?")
.onClick(new ConfirmDialog.Result() {
@Override
public void confirm() {
jumpToPage(ReplaceEtcStep2Activity.class);
}
}).show();
}
});

binding.btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
@SingleClick
public void onClick(View view) {
doSearch();
}
});
}

private void setDataToView(){
binding.LLSearchResult.setVisibility(View.VISIBLE);
binding.tvOrderId.setText(curBizContent.getOrderId());
binding.tvUserName.setText(FunHelper.isEmpty(curBizContent.getCustomerName()) ? "" : curBizContent.getCustomerName());
binding.tvCardType.setText(FunHelper.isEmpty(curBizContent.getCustomerIdtype()) ? "" : curBizContent.getCustomerIdtype());
binding.tvCardNum.setText(FunHelper.isEmpty(curBizContent.getCustomerIdnum()) ? "" : curBizContent.getCustomerIdnum());
binding.tvVehiclePlate.setText(FunHelper.isEmpty(curBizContent.getVehiclePlate()) ? "" : curBizContent.getVehiclePlate());
binding.tvColor.setText(FunHelper.isEmpty(curBizContent.getVehiclePlateColorStr()) ? "" : curBizContent.getVehiclePlateColorStr());
binding.tvCarType.setText(FunHelper.isEmpty(curBizContent.getType()) ? "" : FunHelper.getCarTypeName(curBizContent.getType()));

binding.tvCardIdInfo.setText(FunHelper.isEmpty(curBizContent.getCardId()) ? "卡号:" : "卡号:" + curBizContent.getCardId());
binding.tvCardTypeInfo.setText(FunHelper.isEmpty(curBizContent.getIsValueCard()) ? "卡类型:" : "卡类型:" + (curBizContent.getIsValueCard().equals("1") ? "记账卡" : "储值卡"));
binding.tvCardStatusInfo.setText(FunHelper.isEmpty(curBizContent.getCardStatus()) ? "卡状态:" : "卡状态:" + FunHelper.getETCStatusName(Integer.parseInt(curBizContent.getCardStatus())));

binding.tvOBUIdInfo.setText(FunHelper.isEmpty(curBizContent.getObuId()) ? "OBU:" : "OBU:" + curBizContent.getObuId());
binding.tvOBUTypeInfo.setText(FunHelper.isEmpty(curBizContent.getObuStatus()) ? "OBU状态:" : "OBU状态:" + FunHelper.getOBUStatusName(Integer.parseInt(curBizContent.getObuStatus())));
}

private void doSearch(){
if (FunHelper.isEmpty(FunHelper.getText(binding.etSearch))){
toast("请输入搜索关键词!");
return;
}

if (!FunHelper.isRightVehiclePlate(FunHelper.getText(binding.etSearch))){
toast("请输入正确的车牌号进行搜索!");
return;
}

SendTheVerificationCodeBean bean = new SendTheVerificationCodeBean();
bean.setVehicleId(FunHelper.getText(binding.etSearch) + "_" + 0);
RequestParameters parameters = new RequestParameters(IFCode.IFCODE171, new Gson().toJson(bean));

new MyRetrofit().getRetrofit().create(Api.class).message2(parameters)
.enqueue(new Converter<Result>(getContext(), "储值卡信息查询中...") {
@Override
protected void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
curBizContent = bizContent;
if (curBizContent == null){
return;
}
setDataToView();
}

@Override
public void onError(String err, Response<Result> resp) {
super.onError(err, resp);
}
});
}

@Override
protected void initData() {

}
}

+ 147
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/ReplaceEtcStep2Activity.java 查看文件

package com.huntersun.vkyes.etcopencard.project.ui.activity.after;

import android.view.View;

import com.huntersun.vkyes.etcopencard.databinding.ActivityReplaceEtcStep2Binding;
import com.huntersun.vkyes.etcopencard.project.api.MyRetrofit;
import com.huntersun.vkyes.etcopencard.project.api.bean.IFCode;
import com.huntersun.vkyes.etcopencard.project.api.bean.ResultBean;
import com.huntersun.vkyes.etcopencard.project.ui.activity.user.ForgetPwdStep2Activity;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
import com.huntersun.vkyes.etcopencard.src.other.CodeCountDown;

import java.util.HashMap;
import java.util.Map;

/**
* Date :2023-03-15
* Description:更换ETC设备第2步
*/
public class ReplaceEtcStep2Activity extends AppActivity {
private ActivityReplaceEtcStep2Binding binding;

//倒计时
private CodeCountDown mCountDownTimerUtils;

private int cardStatus = 2; //卡是否正常 2-不正常
private int moneyStatus = 2; //钱是否正常 2-不正常

//手机号
private String phone;

@Override
protected View getLayoutView() {
binding = ActivityReplaceEtcStep2Binding.inflate(getLayoutInflater());
return binding.getRoot();
}

@Override
protected void initView() {
phone = getIntent().getStringExtra("phone");

binding.choiceCard1.setOnClickListener(this::ChoiceCardType);
binding.card1.setOnClickListener(this::ChoiceCardType);
binding.choiceCard2.setOnClickListener(this::ChoiceCardType);
binding.card2.setOnClickListener(this::ChoiceCardType);

binding.choiceMoney1.setOnClickListener(this::ChoiceMoneyType);
binding.money1.setOnClickListener(this::ChoiceMoneyType);
binding.choiceMoney2.setOnClickListener(this::ChoiceMoneyType);
binding.money2.setOnClickListener(this::ChoiceMoneyType);

//校验
binding.btnNext.setOnClickListener(new View.OnClickListener() {
@Override
@SingleClick
public void onClick(View view) {
toReplace();
}
});

//获取验证码
binding.mGetCodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
@SingleClick
public void onClick(View view) {
sendCode();
}
});
}

/**
* 校验
*/
private void toReplace(){
showDialog("更换请求中...");
/*Map<String, String> params = new HashMap<>();
params.put("mobile", phone);
MyRetrofit.newInstance(IFCode.IFCODE2, params, new MyRetrofit.ReturnResult() {
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
hideDialog();
toast("验证码发送成功!");
mCountDownTimerUtils = new CodeCountDown(ReplaceEtcStep2Activity.this, binding.mGetCodeBtn, 60000, 1000);
mCountDownTimerUtils.start();
}
@Override
public void onError() {
MyRetrofit.ReturnResult.super.onError();
hideDialog();
}
});*/
}

/**
* 发送验证码
*/
private void sendCode(){
showDialog("发送中...");
Map<String, String> params = new HashMap<>();
params.put("mobile", phone);
MyRetrofit.newInstance(IFCode.IFCODE2, params, new MyRetrofit.ReturnResult() {
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
hideDialog();
toast("验证码发送成功!");
mCountDownTimerUtils = new CodeCountDown(ReplaceEtcStep2Activity.this, binding.mGetCodeBtn, 60000, 1000);
mCountDownTimerUtils.start();
}
@Override
public void onError() {
MyRetrofit.ReturnResult.super.onError();
hideDialog();
}
});
}

public void ChoiceCardType(View view) {
binding.card1.setChecked(false);
binding.card2.setChecked(false);
if (view == binding.choiceCard1 || view == binding.card1) {
binding.card1.setChecked(true);
cardStatus = 1;
} else if (view == binding.choiceCard2 || view == binding.card2) {
binding.card2.setChecked(true);
cardStatus = 2;
}
}

public void ChoiceMoneyType(View view) {
binding.money1.setChecked(false);
binding.money2.setChecked(false);
if (view == binding.choiceMoney1 || view == binding.money1) {
binding.money1.setChecked(true);
moneyStatus = 1;
} else if (view == binding.choiceMoney2 || view == binding.money2) {
binding.money2.setChecked(true);
moneyStatus = 2;
}
}

@Override
protected void initData() {

}
}

+ 15
- 9
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/order/OrderUtils.java 查看文件

import com.huntersun.vkyes.etcopencard.project.copapply.OBURequest; import com.huntersun.vkyes.etcopencard.project.copapply.OBURequest;
import com.huntersun.vkyes.etcopencard.project.copapply.ObuActivateRequester; import com.huntersun.vkyes.etcopencard.project.copapply.ObuActivateRequester;
import com.huntersun.vkyes.etcopencard.project.copapply.ObuActivation; import com.huntersun.vkyes.etcopencard.project.copapply.ObuActivation;
import com.huntersun.vkyes.etcopencard.project.dialog.ConfirmDialog;
import com.huntersun.vkyes.etcopencard.project.tool.Utils; import com.huntersun.vkyes.etcopencard.project.tool.Utils;
import com.huntersun.vkyes.etcopencard.project.ui.activity.ETCHandleActivity; import com.huntersun.vkyes.etcopencard.project.ui.activity.ETCHandleActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.IdentityInformationUploadActivity; import com.huntersun.vkyes.etcopencard.project.ui.activity.IdentityInformationUploadActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.InformationConfirmedActivity; import com.huntersun.vkyes.etcopencard.project.ui.activity.InformationConfirmedActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.VehicleInformationActivity; import com.huntersun.vkyes.etcopencard.project.ui.activity.VehicleInformationActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.ReplaceEtcStep1Activity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.ReplaceEtcStep2Activity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.mail.FormDeliveryActivity; import com.huntersun.vkyes.etcopencard.project.ui.activity.mail.FormDeliveryActivity;
import com.huntersun.vkyes.etcopencard.project.utils.Constants; import com.huntersun.vkyes.etcopencard.project.utils.Constants;
import com.huntersun.vkyes.etcopencard.project.utils.FunHelper; import com.huntersun.vkyes.etcopencard.project.utils.FunHelper;
case Constants.ORDER_STATUS_EX_GOODS://换货中 case Constants.ORDER_STATUS_EX_GOODS://换货中
break; break;
default: default:
//TODO 测试 入口测试
/*LLBtns.setVisibility(View.VISIBLE);
btnAudit.setVisibility(View.VISIBLE);*/
break; break;
} }
} }
btnFinish.setOnClickListener(new View.OnClickListener() { btnFinish.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
new Utils().showMessDialog(context, "确定是否结束订单?", dialog -> {
ToastUtil.showS(context,"结束订单");
});
new ConfirmDialog.Builder(context) .setMsg("确定是否结束订单?").onClick(new ConfirmDialog.Result() {
@Override
public void confirm() {
ToastUtil.showS(context,"结束订单");
}
}).show();
} }
}); });


btnAgainActive.setOnClickListener(new View.OnClickListener() { btnAgainActive.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
new Utils().showMessDialog(context, "确定是否再次唤醒订单?", dialog -> {
ToastUtil.showS(context,"再次唤起");
});
new ConfirmDialog.Builder(context) .setMsg("确定是否再次唤醒订单?").onClick(new ConfirmDialog.Result() {
@Override
public void confirm() {
ToastUtil.showS(context,"再次唤起");
}
}).show();
} }
}); });



+ 60
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/src/other/CodeCountDown.java 查看文件

package com.huntersun.vkyes.etcopencard.src.other;

import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.CountDownTimer;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.widget.Button;

import com.huntersun.vkyes.etcopencard.R;

/**
* Date :2023-03-15
* Description:验证码倒计时
*/
public class CodeCountDown extends CountDownTimer {
private Button mTextView;
private Context context;

public CodeCountDown(Context context, Button textView, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.mTextView = textView;
this.context = context;
}

@Override
public void onTick(long millisUntilFinished) {
mTextView.setClickable(false); //设置不可点击
mTextView.setEnabled(false);
mTextView.setText(millisUntilFinished / 1000 + "s后重发"); //设置倒计时时间
ColorStateList colors = context.getResources().getColorStateList(R.color.white);
mTextView.setTextColor(colors);
//mTextView.setBackgroundResource(R.drawable.bg_identify_code_press); //设置按钮为灰色,这时是不能点击的
//mTextView.setBackgroundResource(R.drawable.boder_radius_5_white); //设置按钮为灰色,这时是不能点击的
//mTextView.setBackgroundResource(R.drawable.btn_common_disable); //设置按钮为灰色,这时是不能点击的

SpannableString spannableString = new SpannableString(mTextView.getText().toString()); //获取按钮上的文字
ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor("#58CD41"));
spannableString.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//将倒计时的时间设置为绿色
mTextView.setText(spannableString);
}

@Override
public void onFinish() {
mTextView.setText("重新获取");
ColorStateList colors = context.getResources().getColorStateList(R.color.white);
mTextView.setTextColor(colors);
mTextView.setClickable(true);//重新获得点击
//mTextView.setBackgroundResource(R.drawable.bg_identify_code_normal); //还原背景色
//mTextView.setBackgroundResource(R.drawable.boder_radius_5_white); //还原背景色
//mTextView.setBackgroundResource(R.drawable.btn_common_pressed); //还原背景色
mTextView.setEnabled(true);
}

//使用
/*CountDownTimerUtils mCountDownTimerUtils = new CountDownTimerUtils(mButton, 60000, 1000);
mCountDownTimerUtils.start();*/
}

+ 6
- 0
app/src/main/res/drawable-v1/bg_card_obu_info.xml 查看文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/background_color" />
<stroke android:width="1dp" android:color="@color/common_accent_color" />
<corners android:radius="@dimen/dp_5"/>
</shape>

+ 238
- 0
app/src/main/res/layout-v4/activity_replace_etc_step2.xml 查看文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MatchMatch.Vertical"
android:background="@color/background_color">

<com.hjq.bar.TitleBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:leftIcon="@mipmap/back_black"
app:lineVisible="false"
app:title="更换ETC设备"
app:titleColor="@color/black" />

<androidx.core.widget.NestedScrollView style="@style/MatchWrap">

<LinearLayout style="@style/MatchWrap.Vertical">

<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_margin="@dimen/dp_15"
android:background="@drawable/bg_white_radius"
android:paddingHorizontal="@dimen/dp_15"
android:paddingVertical="@dimen/dp_10">

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:paddingVertical="@dimen/dp_5">

<TextView
style="@style/AutoWrap"
android:text="卡是否正常"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_14" />

<LinearLayout
android:id="@+id/choiceCard1"
style="@style/WrapWrap"
android:orientation="horizontal">

<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/card1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:checked="false"
app:buttonCompat="@drawable/checkbox_selector" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:text="是" />
</LinearLayout>

<LinearLayout
android:id="@+id/choiceCard2"
style="@style/WrapWrap"
android:layout_marginLeft="@dimen/dp_30"
android:orientation="horizontal">

<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/card2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:checked="true"
app:buttonCompat="@drawable/checkbox_selector" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:text="否" />
</LinearLayout>
</LinearLayout>

<TextView
style="@style/MatchOne.HorLine"
android:layout_marginVertical="@dimen/dp_8" />

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:paddingVertical="@dimen/dp_5">

<TextView
style="@style/AutoWrap"
android:text="签是否正常"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_14" />

<LinearLayout
android:id="@+id/choiceMoney1"
style="@style/WrapWrap"
android:orientation="horizontal">

<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/money1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:checked="false"
app:buttonCompat="@drawable/checkbox_selector" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:text="是" />
</LinearLayout>

<LinearLayout
android:id="@+id/choiceMoney2"
style="@style/WrapWrap"
android:layout_marginLeft="@dimen/dp_30"
android:orientation="horizontal">

<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/money2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:checked="true"
app:buttonCompat="@drawable/checkbox_selector" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:text="否" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

<TextView
style="@style/WrapWrap"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_15"
android:paddingRight="@dimen/dp_15"
android:text="账号验证"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />

<TextView
style="@style/MatchWrap"
android:layout_marginTop="@dimen/dp_10"
android:paddingLeft="@dimen/dp_15"
android:text="请在下方输入验证码"
android:textSize="@dimen/sp_13" />

<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_margin="@dimen/dp_15"
android:background="@drawable/bg_white_radius"
android:paddingVertical="@dimen/dp_10"
android:paddingHorizontal="@dimen/dp_15">

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:gravity="center_vertical"
android:layout_height="@dimen/dp_30">
<TextView
style="@style/WrapWrap"
android:text="手机号码"
android:textSize="@dimen/sp_14"
android:textColor="@color/color_666666"/>

<TextView
android:id="@+id/tvMobile"
style="@style/AutoWrap"
android:paddingLeft="@dimen/dp_50"
android:text="反显手机号,不可修改"
android:textColor="#B3B3B3"/>
</LinearLayout>

<TextView
style="@style/MatchOne.HorLine"
android:layout_marginVertical="@dimen/dp_8"/>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:gravity="center_vertical"
android:layout_height="@dimen/dp_30">
<TextView
style="@style/WrapWrap"
android:text="验证码 "
android:textSize="@dimen/sp_14"
android:textColor="@color/color_666666"/>

<com.hjq.widget.view.RegexEditText
android:id="@+id/et_register_phone"
style="@style/EditTextStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:paddingLeft="@dimen/dp_50"
android:layout_height="match_parent"
android:hint="请输入验证码"
android:inputType="textVisiblePassword"
android:singleLine="true"
android:paddingVertical="0dp"
android:textSize="@dimen/sp_14"
android:textColorHint="#B3B3B3"
app:regexType="mobile" />

<Button
android:id="@+id/mGetCodeBtn"
style="@style/WrapWrap"
android:layout_height="@dimen/dp_25"
android:paddingLeft="@dimen/dp_8"
android:paddingRight="@dimen/dp_8"
android:layout_gravity="right|center"
android:background="@drawable/bg_green_radius"
android:enabled="true"
android:foreground="?attr/selectableItemBackground"
android:text="获取验证码"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>

<Button
android:id="@+id/btnNext"
style="@style/BtnShortStyle"
android:layout_width="@dimen/dp_150"
android:layout_height="@dimen/dp_40"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_150"
android:layout_marginBottom="@dimen/dp_30"
android:text="验证"
android:textSize="@dimen/sp_14" />

</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

+ 0
- 2
app/src/main/res/layout/activity_order_details.xml 查看文件

android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/background_color"> android:background="@color/background_color">




<com.huntersun.vkyes.etcopencard.src.widget.StatusLayout <com.huntersun.vkyes.etcopencard.src.widget.StatusLayout
android:id="@+id/hl_status_hint" android:id="@+id/hl_status_hint"
style="@style/MatchWrap"> style="@style/MatchWrap">

+ 352
- 0
app/src/main/res/layout/activity_replace_etc_step1.xml 查看文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MatchWrap.Vertical"
android:background="@color/background_color">

<com.hjq.bar.TitleBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:leftIcon="@mipmap/back_black"
app:lineVisible="false"
app:title="更换ETC设备"
app:titleColor="@color/black" />

<androidx.core.widget.NestedScrollView style="@style/MatchWrap">

<LinearLayout style="@style/MatchWrap.Vertical">

<!--搜索框-->
<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
android:gravity="center">

<LinearLayout
style="@style/AutoWrap.Horizontal"
android:layout_height="@dimen/dp_35"
android:layout_marginHorizontal="@dimen/dp_25"
android:background="@drawable/item_home_frame3"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/dp_12">

<ImageView
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"
android:src="@drawable/search_ic" />

<com.hjq.widget.view.ClearEditText
android:id="@+id/etSearch"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_30"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:hint="请输入订单编号/车牌号"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_999999"
android:textSize="@dimen/sp_12" />
</LinearLayout>

<Button
android:id="@+id/btnSearch"
style="@style/BtnShortStyle"
android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_35"
android:layout_gravity="center_vertical|right"
android:text="搜索"
android:textSize="@dimen/sp_12" />
</LinearLayout>

<!--搜索结果-->
<LinearLayout
android:id="@+id/LLSearchResult"
android:visibility="visible"
style="@style/MatchWrap.Vertical">

<TextView
style="@style/WrapWrap"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_15"
android:paddingRight="@dimen/dp_15"
android:text="基础信息"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />

<!--基础信息-->
<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/bg_white_radius"
android:padding="@dimen/dp_15">

<LinearLayout style="@style/MatchWrap.Horizontal">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="订单编号" />

<TextView
android:id="@+id/tvOrderId"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_12">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="用户名称" />

<TextView
android:id="@+id/tvUserName"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_12">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="用户证件类型" />

<TextView
android:id="@+id/tvCardType"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_12">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="用户证件号" />

<TextView
android:id="@+id/tvCardNum"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_12">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="订单车牌号" />

<TextView
android:id="@+id/tvVehiclePlate"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_12">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="车牌颜色" />

<TextView
android:id="@+id/tv_color"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginTop="@dimen/dp_12">

<TextView
style="@style/black02TextStyle14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="收费车型" />

<TextView
android:id="@+id/tvCarType"
style="@style/blackTextStyle14"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>

<!--卡信息-->
<TextView
style="@style/WrapWrap"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_15"
android:paddingRight="@dimen/dp_15"
android:text="卡信息"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />

<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginVertical="@dimen/dp_10"
android:background="@drawable/bg_white_radius"
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_15">

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:background="@drawable/bg_card_obu_info"
android:gravity="center_vertical"
android:paddingTop="@dimen/dp_15"
android:paddingLeft="@dimen/dp_15"
android:paddingBottom="@dimen/dp_15"
android:paddingRight="@dimen/dp_5">

<ImageView
style="@style/WrapWrap"
android:layout_width="@dimen/dp_67"
android:layout_height="@dimen/dp_46"
android:src="@mipmap/icon_card" />

<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_marginLeft="@dimen/dp_15">

<TextView
android:id="@+id/tvCardIdInfo"
style="@style/MatchWrap"
android:text="卡号:"
android:textColor="@color/common_accent_color"
android:textSize="@dimen/sp_13" />

<TextView
android:id="@+id/tvCardTypeInfo"
style="@style/MatchWrap"
android:layout_marginTop="@dimen/dp_2"
android:text="卡类型:"
android:textColor="@color/common_accent_color"
android:textSize="@dimen/sp_13" />

<TextView
android:id="@+id/tvCardStatusInfo"
style="@style/MatchWrap"
android:layout_marginTop="@dimen/dp_2"
android:text="卡状态:"
android:textColor="@color/common_accent_color"
android:textSize="@dimen/sp_13" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

<!--OBU设备信息-->
<TextView
style="@style/WrapWrap"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_15"
android:paddingRight="@dimen/dp_15"
android:text="OBU设备信息"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />

<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginVertical="@dimen/dp_10"
android:background="@drawable/bg_white_radius"
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_15">

<LinearLayout
style="@style/MatchWrap.Horizontal"
android:background="@drawable/bg_card_obu_info"
android:gravity="center_vertical"
android:padding="@dimen/dp_15">

<ImageView
style="@style/WrapWrap"
android:layout_width="@dimen/dp_67"
android:layout_height="@dimen/dp_46"
android:src="@mipmap/icon_obu" />

<LinearLayout
style="@style/MatchWrap.Vertical"
android:layout_marginLeft="@dimen/dp_15">

<TextView
android:id="@+id/tvOBUIdInfo"
style="@style/MatchWrap"
android:text="OBU:"
android:textColor="@color/common_accent_color"
android:textSize="@dimen/sp_13" />

<TextView
android:id="@+id/tvOBUTypeInfo"
style="@style/MatchWrap"
android:layout_marginTop="@dimen/dp_2"
android:text="OBU状态:"
android:textColor="@color/common_accent_color"
android:textSize="@dimen/sp_13" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

<Button
android:id="@+id/btnNext"
style="@style/BtnShortStyle"
android:layout_width="@dimen/dp_150"
android:layout_height="@dimen/dp_40"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_40"
android:layout_marginBottom="@dimen/dp_30"
android:text="下一步"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

+ 64
- 0
app/src/main/res/layout/dialog_common_dialog.xml 查看文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="center"
style="@style/MatchWrap.Vertical">

<LinearLayout
android:id="@+id/LLContent"
style="@style/MatchWrap"
android:layout_gravity="center"
android:animateLayoutChanges="true"
android:animationCache="true"
android:background="@drawable/home_unm_bg2"
android:orientation="vertical"
android:paddingHorizontal="@dimen/dp_30">

<ImageView
android:id="@+id/ivIcon"
style="@style/MatchWrap"
android:layout_height="@dimen/dp_98"
android:layout_marginTop="-20dp"
android:src="@mipmap/icon_replace" />

<TextView
android:id="@+id/tvMsg"
style="@style/MatchWrap"
android:layout_marginTop="@dimen/dp_35"
android:gravity="center"
android:text=""
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_13" />

<Button
android:id="@+id/btnConfirm"
style="@style/BtnShortStyle"
android:layout_width="@dimen/dp_105"
android:layout_height="@dimen/dp_40"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_26"
android:text="确定"
android:textSize="@dimen/sp_14" />

<TextView
android:id="@+id/tvCancel"
style="@style/WrapWrap"
android:layout_gravity="center_horizontal"
android:layout_marginVertical="@dimen/dp_10"
android:foreground="?attr/selectableItemBackground"
android:paddingHorizontal="@dimen/dp_15"
android:paddingVertical="@dimen/dp_10"
android:text="取消"
android:textColor="#B3B3B3"
android:textSize="@dimen/sp_15" />
</LinearLayout>

<!-- <ImageView
android:id="@+id/ivClose"
style="@style/WrapWrap"
android:layout_gravity="center_horizontal"
android:src="@mipmap/icon_close"
android:layout_marginTop="@dimen/dp_10"
android:padding="@dimen/dp_8"/>-->
</LinearLayout>

二进制
app/src/main/res/mipmap-xhdpi/icon_card.png 查看文件


二进制
app/src/main/res/mipmap-xhdpi/icon_close.png 查看文件


二进制
app/src/main/res/mipmap-xhdpi/icon_obu.png 查看文件


二进制
app/src/main/res/mipmap-xhdpi/icon_replace.png 查看文件


正在加载...
取消
保存