Преглед изворни кода

feat: 卡Pin码解锁

master
huting пре 2 година
родитељ
комит
6dd7378d0f

+ 6
- 0
app/src/main/AndroidManifest.xml Прегледај датотеку

@@ -615,5 +615,11 @@
android:name=".project.ui.activity.after.EquipmentUpgradeActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />

<!--卡Pin码解锁-->
<activity
android:name=".project.ui.activity.after.CardUnlockPinActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
</application>
</manifest>

+ 1
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/IFCode.java Прегледај датотеку

@@ -139,6 +139,7 @@ public class IFCode {
public static final String IFCODE891 = "891"; //卡续期
public static final String IFCODE892 = "892"; //卡签停用启用
public static final String IFCODE896 = "896"; //卡签信息重写(设备升级)
public static final String IFCODE862 = "862"; //卡PIN解锁
public static final String IFCODE898 = "898"; //卡信息变更确认

public static final String IFCODE93 = "93"; //储值卡转记账卡申请接口

+ 1
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/api/bean/ResultBean.java Прегледај датотеку

@@ -245,6 +245,7 @@ public class ResultBean<T> {
public String applyType; //申请单类型
public String damageMode; //0-人为损坏 1-自然损坏
public List<BizContent> list; //申请单列表(更换ETC时使用)
public String pinType; //卡pin码类型 只能是1-pin为123456,2-pin为313233343536

private String appId = "52030131";
private boolean init;

+ 249
- 0
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CardUnlockPinActivity.java Прегледај датотеку

@@ -0,0 +1,249 @@
package com.huntersun.vkyes.etcopencard.project.ui.activity.after;

import android.os.Bundle;
import android.view.View;

import com.google.gson.Gson;
import com.hjq.base.BaseDialog;
import com.huntersun.vkyes.etcopencard.R;
import com.huntersun.vkyes.etcopencard.databinding.ActivityCardUnlockPinBinding;
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.bluetooth.BluetoothWriteCardWriteTab;
import com.huntersun.vkyes.etcopencard.project.dialog.ConfirmDialog;
import com.huntersun.vkyes.etcopencard.project.tool.MyShared;
import com.huntersun.vkyes.etcopencard.project.tool.Utils;
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 java.util.HashMap;
import java.util.Map;

import retrofit2.Response;

/**
* Date :2023-03-23
* Description:卡Pin码解锁
*/
public class CardUnlockPinActivity extends AppActivity {
private ActivityCardUnlockPinBinding binding;

private ResultBean.BizContent curBizContent;
//循环次数
private int applyCount = 0;

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

@Override
protected void initView() {
binding.LLSearchResult.setVisibility(View.GONE);
binding.LLBottom.setVisibility(View.GONE);
binding.btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
@SingleClick
public void onClick(View view) {
doSearch();
}
});

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

private void setDataToView(){
if (curBizContent == null) return;
binding.LLSearchResult.setVisibility(View.VISIBLE);
binding.LLBottom.setVisibility(View.VISIBLE);
binding.LLCardInfo.setVisibility(View.GONE);
binding.LLObuInfo.setVisibility(View.GONE);

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()));

//显示卡信息
if (!FunHelper.isEmpty(curBizContent.getCardId())){
binding.LLCardInfo.setVisibility(View.VISIBLE);
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())));
}

//显示签信息
if (!FunHelper.isEmpty(curBizContent.getObuId())){
binding.LLObuInfo.setVisibility(View.VISIBLE);
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())));
}
}

/**
* 申请pin码解锁
* 流程:PIN码解锁是第一次可以无参数调用这个接口,会得到一个写卡指令和一个PinType,然后拿着返回的数据再调一次这个接口
* 当指令返回9000的时候就可以跳出循环,可设置最多循环3次
*/
private void applyUnlockPin(){
new Utils().showMessDialog(getActivity(), "是否确认执行卡Pin码解锁", new Utils.dialogCallback() {
@Override
public void onConfirm(BaseDialog dialog) {
applyCount = 0;
showDialog("申请中...");
Map<String, String> params = new HashMap<>();
params.put("cardId", curBizContent.getCardId());
params.put("orderId", curBizContent.getOrderId());
params.put("agentId", "52010106004");
params.put("channelId", "5201010200601130001");
params.put("channelType", "1");
params.put("terminalId", "999999999999");
params.put("TerminalId", "999999999999");
params.put("staffId", (String) MyShared.getInstance().get(MyShared.OPENID, ""));
MyRetrofit.newInstance(IFCode.IFCODE862, params, new MyRetrofit.ReturnResult() {
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
applyCount++;
hideDialog();
toWriteCommand(bizContent.getCommand(),bizContent.getCosResponse(),bizContent.pinType);
}
@Override
public void onError(Response<Result> resp) {
hideDialog();
showErrorMsg(resp.body().errorMsg);
}
});
}
});
}

/**
* 写卡
* @param command
*/
private void toWriteCommand(String command,String cosResponse,String pinType){
if (FunHelper.isEmpty(command)){
toast("获取写卡指令失败,请尝试重试!");
return;
}

String result = BluetoothWriteCardWriteTab.writeCard(command);
if (result.endsWith("9000")){//写卡成功
Bundle bundle = new Bundle();
bundle.putString("from","3");
jumpToPage(CommonDealSuccessActivity.class,bundle);
finish();
return;
}

if (applyCount > 3){
showErrorMsg("无法解锁卡Pin码");
return;
}

getWriteCommand(command,cosResponse,pinType);
}

/**
* 循环调用获取写卡指令,直到写卡返回9000 跳出循环
*
* @param command 执行指令
* @param cosResponse 卡执行指令结果
* @param pinType 卡pin码类型 只能是1-pin为123456,2-pin为313233343536
* 不清楚具体值和解锁指令具体含义的请使用该接口上次返回的pinType.
*/
private void getWriteCommand(String command,String cosResponse,String pinType){
if (applyCount > 3) return;
showDialog("解锁中...");
Map<String, String> params = new HashMap<>();
params.put("cardId", curBizContent.getCardId());
params.put("command", command);
params.put("cosResponse", cosResponse);
params.put("pinType", pinType);
params.put("agentId", "52010106004");
params.put("channelId", "5201010200601130001");
params.put("channelType", "1");
params.put("terminalId", "999999999999");
params.put("TerminalId", "999999999999");
params.put("staffId", (String) MyShared.getInstance().get(MyShared.OPENID, ""));
MyRetrofit.newInstance(IFCode.IFCODE862, params, new MyRetrofit.ReturnResult() {
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
applyCount++;
hideDialog();
getWriteCommand(bizContent.getCommand(),bizContent.getCosResponse(),bizContent.pinType);
}
@Override
public void onError(Response<Result> resp) {
hideDialog();
showErrorMsg(resp.body().errorMsg);
}
});
}

/**
* 搜索订单信息
*/
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);
}
});
}

private void showErrorMsg(String errorMsg){
new ConfirmDialog.Builder(CardUnlockPinActivity.this).setMsg(errorMsg, "解锁失败","确定","", R.mipmap.icon_lotgout_etc_hint, 0,true)
.onClick(new ConfirmDialog.Result() {
@Override
public void confirm() { }
}).show();
}

@Override
protected void initData() {

}
}

+ 5
- 1
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/CommonDealSuccessActivity.java Прегледај датотеку

@@ -15,7 +15,7 @@ import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
public class CommonDealSuccessActivity extends AppActivity {
private ActivityCommonDealSuccessBinding binding;

//0-注销成功 1-欠费补缴 2-余额补领 4-更换ETC设备成功 5-停用成功
//0-注销成功 1-欠费补缴 2-余额补领 3-Pin码锁解锁成功 4-更换ETC设备成功 5-停用成功
//6-启用成功 7-卡签续期 8-储值卡转记账卡 9-设备升级
private String from;

@@ -46,6 +46,10 @@ public class CommonDealSuccessActivity extends AppActivity {
binding.tvMsg.setVisibility(View.VISIBLE);
binding.tvMsg.setText("您的旧卡余额已成功转移至新卡中");

}else if (from.equals("3")){
setTitle("卡Pin码解锁");
binding.tvHint.setText("卡Pin码解锁成功");

}else if (from.equals("4")){
setTitle("更换ETC设备");
binding.tvHint.setText("更换成功");

+ 5
- 5
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/EquipmentUpgradeActivity.java Прегледај датотеку

@@ -58,7 +58,7 @@ public class EquipmentUpgradeActivity extends AppActivity {
@Override
@SingleClick
public void onClick(View view) {
applyRenew();
applyUpgrade();
}
});
}
@@ -106,7 +106,7 @@ public class EquipmentUpgradeActivity extends AppActivity {
params.put("cardId", curBizContent.getCardId());
params.put("orderId", curBizContent.getOrderId());
params.put("cosRecordId", bizContent.getCosRecordId());
params.put("operation", "1"); //操作类型:1-续期确认,2-启用确认,3-停用确认,4-设备升级确认
params.put("operation", "4"); //操作类型:1-续期确认,2-启用确认,3-停用确认,4-设备升级确认
params.put("agentId", "52010106004");
params.put("channelId", "5201010200601130001");
params.put("channelType", "1");
@@ -134,9 +134,9 @@ public class EquipmentUpgradeActivity extends AppActivity {
}

/**
* 申请续期
* 申请升级
*/
private void applyRenew(){
private void applyUpgrade(){
new Utils().showMessDialog(getActivity(), "是否确认升级设备", new Utils.dialogCallback() {
@Override
public void onConfirm(BaseDialog dialog) {
@@ -182,7 +182,7 @@ public class EquipmentUpgradeActivity extends AppActivity {
RequestParameters parameters = new RequestParameters(IFCode.IFCODE171, new Gson().toJson(bean));

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

+ 6
- 2
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/fragment/FragmentHomeTow.java Прегледај датотеку

@@ -16,6 +16,7 @@ import com.huntersun.vkyes.etcopencard.project.tool.Utils;
import com.huntersun.vkyes.etcopencard.project.ui.activity.CardSignQueryActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.MainActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.BalanceReplacementActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.CardUnlockPinActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.DevicePendingActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.EquipmentLossReportActivity;
import com.huntersun.vkyes.etcopencard.project.ui.activity.after.EquipmentUpgradeActivity;
@@ -55,16 +56,16 @@ public class FragmentHomeTow extends TitleBarFragment<MainActivity> {
{R.mipmap.card4, "卡签注销"},
{R.mipmap.card10, "更换卡签"},
{R.mipmap.card9, "储值卡转记账卡"},
{R.mipmap.card12, "卡签停用启用"},
{R.mipmap.card13, "卡签续期"},
{R.mipmap.card14, "设备升级"},
{R.mipmap.card11, "卡Pin码解锁"},
{R.mipmap.card10, "欠费补缴"},
{R.mipmap.card10, "余额补领"},
{R.mipmap.card7, "满意度评价"},
{R.mipmap.card8, "设备激活"},
{R.mipmap.card15, "审核管理"},

{R.mipmap.card11, "卡Pin码解锁"},
{R.mipmap.card12, "卡签停用启用"},
{R.mipmap.card16, "ETC过户"},
{R.mipmap.card17, "签约账户变更"},
{R.mipmap.card18, "发票管理"},
@@ -199,6 +200,9 @@ public class FragmentHomeTow extends TitleBarFragment<MainActivity> {
case "设备升级":
jumpToPage(EquipmentUpgradeActivity.class);
break;
case "卡Pin码解锁":
jumpToPage(CardUnlockPinActivity.class);
break;
default:
new Utils().showMessDialog(getActivity(), "功能正在开发中...");
break;

+ 376
- 0
app/src/main/res/layout/activity_card_unlock_pin.xml Прегледај датотеку

@@ -0,0 +1,376 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:leftIcon="@mipmap/back_black"
app:lineVisible="false"
app:title="卡Pin码解锁"
app:titleColor="@color/black" />

<androidx.core.widget.NestedScrollView
android:layout_below="@+id/title"
style="@style/MatchWrap">
<LinearLayout style="@style/MatchWrap.Vertical"
android:paddingBottom="@dimen/dp_80">

<!--搜索框-->
<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="gone"
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>

<!--卡信息-->
<LinearLayout
android:id="@+id/LLCardInfo"
android:visibility="gone"
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_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>
</LinearLayout>

<!--OBU设备信息-->
<LinearLayout
android:id="@+id/LLObuInfo"
android:visibility="gone"
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="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>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

<LinearLayout
android:id="@+id/LLBottom"
style="@style/MatchWrap.Horizontal"
android:gravity="center"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:paddingVertical="@dimen/dp_10"
android:background="@color/background_color"
android:paddingHorizontal="@dimen/dp_15">

<Button
android:id="@+id/btnRenew"
style="@style/BtnShortStyle"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="@dimen/dp_40"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:text="确定解锁"
android:textSize="@dimen/sp_15" />
</LinearLayout>

</RelativeLayout>

Loading…
Откажи
Сачувај