左晓为主开发手持机充值管理机
zuoxiao
2023-12-12 d9c886270d66782df9de5f6a7b877a269a273aa5
卡标识设置添加选择器
5个文件已修改
4个文件已添加
308 ■■■■■ 已修改文件
app/build.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/view/ChooseView.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ic_choose_gray_edge.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_identyfying.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_power.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pickerview_choose.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_bottom.png 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -56,6 +56,7 @@
    implementation 'com.google.zxing:core:3.4.1'
    implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
    implementation 'com.wang.avi:library:2.1.3'
    //地址选择
    implementation project(':pickerviewlibrary')
    implementation project(':easysocket')
    implementation 'com.tencent.bugly:crashreport:latest.release'
@@ -67,4 +68,6 @@
        exclude group: 'androidx.appcompat';
        exclude group: 'androidx.annotation';
    }
    //滚动选择框
    implementation 'com.contrarywind:Android-PickerView:4.1.9'
}
app/src/main/java/com/dayu/recharge/activity/IdentifyingActivity.java
@@ -8,6 +8,9 @@
import com.dayu.recharge.databinding.ActivityIdentyfyingBinding;
import com.dayu.recharge.dbBean.IdentityBean;
import com.dayu.recharge.utils.TipUtil;
import com.dayu.recharge.view.ChooseView;
import java.util.Arrays;
/**
 * Created by Android Studio.
@@ -21,28 +24,44 @@
    ActivityIdentyfyingBinding binding;
    IdentityBean myIdentityBean;
    String[] nianfen = {"管理卡", "清零卡", "重新注册设备卡", "删除全部用户卡", "设置域名卡", "测试卡", "设备信息卡", "水泵功率卡"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding=ActivityIdentyfyingBinding.inflate(LayoutInflater.from(this));
        binding = ActivityIdentyfyingBinding.inflate(LayoutInflater.from(this));
        setContentView(binding.getRoot());
        IdentityBean identityBean=baseDao.identityDao().findFirst();
        if (identityBean!=null){
            myIdentityBean= identityBean;
        binding.chooseCardType.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ChooseView.getIntence(IdentifyingActivity.this, Arrays.asList(nianfen.clone()), new ChooseView.ChooseCallBack() {
                    @Override
                    public void onOptionsSelect(int options1) {
                    }
                }).show();
            }
        });
        IdentityBean identityBean = baseDao.identityDao().findFirst();
        if (identityBean != null) {
            myIdentityBean = identityBean;
            binding.electricOldNumber.setText(myIdentityBean.getIdentity());
        }else {
            myIdentityBean=new IdentityBean();
        } else {
            myIdentityBean = new IdentityBean();
            binding.electricOldNumber.setText("3668F7A30119");
        }
        binding.electricOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data = binding.electricOldNumber.getText().toString();
                if (!TextUtils.isEmpty(data)){
                if (!TextUtils.isEmpty(data)) {
                    myIdentityBean.setIdentity(binding.electricOldNumber.getText().toString());
                    baseDao.identityDao().insert(myIdentityBean);
                    TipUtil.show("保存成功");
                }else {
                } else {
                    TipUtil.show("请输入卡标识");
                }
@@ -50,4 +69,26 @@
        });
    }
    private void chooseData(String data) {
        switch (data) {
            case "管理卡":
                break;
            case "清零卡":
                break;
            case "重新注册设备卡":
                break;
            case "删除全部用户卡":
                break;
            case "设置域名卡":
                break;
            case "测试卡":
                break;
            case "设备信息卡":
                break;
            case "水泵功率卡":
                break;
        }
    }
}
app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java
@@ -1,6 +1,7 @@
package com.dayu.recharge.activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
@@ -10,6 +11,8 @@
import com.dayu.recharge.dbBean.AdminDataBean;
import com.dayu.recharge.dbBean.IpBean;
import com.dayu.recharge.utils.DeviceNumberUtils;
import com.dayu.recharge.utils.TipUtil;
import com.dayu.recharge.utils.ToastUtil;
import com.dayu.recharge.utils.WSHelper;
/**
@@ -48,10 +51,19 @@
        ipBinding.ipOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (TextUtils.isEmpty(ipBinding.port.getText().toString())) {
                    ToastUtil.show("请输入端口号");
                    return;
                }
                int newPort = Integer.parseInt(ipBinding.port.getText().toString());
                if (newPort <= 0 || newPort > 65535) {
                    TipUtil.show("请输入正确的端口号");
                    return;
                }
                if (ipBean != null) {
                    String oldIp = ipBean.getIp();
                    int oldPort = ipBean.getPort();
                    if (!oldIp.equals(ipBinding.ip.getText().toString())|| oldPort != Integer.valueOf(ipBinding.port.getText().toString())) {
                    if (!oldIp.equals(ipBinding.ip.getText().toString()) || oldPort != newPort) {
//                        DeviceNumberUtils.setDeviceNumber("");
                    }
                }
@@ -59,7 +71,7 @@
                    ipBean = new IpBean();
                }
                ipBean.setIp(ipBinding.ip.getText().toString());
                ipBean.setPort(Integer.parseInt(ipBinding.port.getText().toString()));
                ipBean.setPort(newPort);
                baseDao.ipDao().insert(ipBean);
                AdminDataBean adminData = baseDao.adminDao().findFirst();
                //修改IP后重新连接
app/src/main/java/com/dayu/recharge/view/ChooseView.java
New file
@@ -0,0 +1,119 @@
package com.dayu.recharge.view;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.CustomListener;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.dayu.recharge.R;
import java.util.List;
/**
 * Copyright (C), 2023,
 * Author: zuo
 * Date: 2023-04-09 17:37
 * Description: 滚动选择框
 */
public class ChooseView {
    private OptionsPickerView pvCustomOptions;
    Context mycontext;
    List<String> mycardItem;
    static ChooseView chooseView;
    ChooseCallBack chooseCallBack;
    public static ChooseView getIntence(@NonNull Activity context, List<String> cardItem, ChooseCallBack chooseCallBack) {
        hideSoftKeyboard(context);
        if (chooseView == null) {
            chooseView = new ChooseView();
        }
        chooseView.mycontext = context;
        chooseView.chooseCallBack = chooseCallBack;
        chooseView.mycardItem = cardItem;
        chooseView.initView();
        return chooseView;
    }
    /**
     * 隐藏软键盘(只适用于Activity,不适用于Fragment)
     */
    public static void hideSoftKeyboard(Activity activity) {
        try {
            View view = activity.getCurrentFocus();
            if (view != null) {
                InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
                inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    void initView() {
        /**
         * @description
         *
         * 注意事项:
         * 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。
         * 具体可参考demo 里面的两个自定义layout布局。
         */
        pvCustomOptions = new OptionsPickerBuilder(mycontext, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3, View v) {
                //返回的分别是三个级别的选中位置
//                String tx = cardItem.get(options1).getPickerViewText();
//                btn_CustomOptions.setText(tx);
                chooseCallBack.onOptionsSelect(options1);
            }
        })
                .setLayoutRes(R.layout.pickerview_choose, new CustomListener() {
                    @Override
                    public void customLayout(View v) {
                        final TextView tvSubmit = (TextView) v.findViewById(R.id.bt_add);
                        final TextView tvCancel = (TextView) v.findViewById(R.id.bt_cancel);
                        tvSubmit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.returnData();
                                pvCustomOptions.dismiss();
                            }
                        });
                        tvCancel.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomOptions.dismiss();
                            }
                        });
                    }
                })
                .isDialog(false)
                .setOutSideCancelable(false)
                .build();
        pvCustomOptions.setPicker(mycardItem);//添加数据
    }
    public void show() {
        pvCustomOptions.show();
    }
    public interface ChooseCallBack {
        void onOptionsSelect(int options1);
    }
}
app/src/main/res/drawable/ic_choose_gray_edge.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" />
    <corners android:radius="5dp" />
    <stroke
        android:width="1dp"
        android:color="#ededed" />
</shape>
app/src/main/res/layout/activity_identyfying.xml
@@ -13,17 +13,50 @@
        app:centerText="水表脉冲设置"
        app:leftImage="@mipmap/icon_back" />
    <RelativeLayout
        android:id="@+id/chooseCardType"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_below="@id/titleBar"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="20dp"
        android:background="@drawable/ic_choose_gray_edge">
        <TextView
            android:id="@+id/chooseCardTypeText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:hint="请选择卡类型"
            android:text="@{data.getBuildYearStr}"
            android:textColor="#000000"
            android:textSize="18sp" />
        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dp"
            android:src="@mipmap/icon_bottom" />
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/electric_ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/titleBar"
        android:layout_below="@id/chooseCardType"
        android:layout_margin="20dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:text="当前卡标识:"
            android:textSize="@dimen/text_size" />
@@ -43,8 +76,8 @@
        android:layout_below="@+id/electric_ll"
        android:layout_alignParentStart="true"
        android:layout_margin="20dp"
        android:inputType="number"
        android:hint="请输入新的卡标识" />
        android:hint="请输入新的卡标识"
        android:inputType="number" />
    <TextView
        android:id="@+id/electric_ok"
app/src/main/res/layout/activity_power.xml
@@ -44,7 +44,6 @@
        android:layout_alignParentStart="true"
        android:layout_marginStart="20dp"
        android:layout_marginTop="20dp"
        android:maxLength="8"
        android:layout_marginEnd="20dp"
        android:layout_marginBottom="20dp"
        android:hint="请输入新设置的水泵功率"
app/src/main/res/layout/pickerview_choose.xml
New file
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <RelativeLayout
        android:layout_width="match_parent"
        android:background="@color/white"
        android:layout_height="45dp">
        <TextView
            android:id="@+id/bt_cancel"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="20dp"
            android:gravity="center"
            android:text="取  消"
            android:textColor="@color/choose_grey"
            android:textSize="@dimen/choose_pop_text" />
        <TextView
            android:id="@+id/bt_add"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_marginRight="20dp"
            android:gravity="center"
            android:text="确  定"
            android:textColor="@color/title_color"
            android:textSize="@dimen/choose_pop_text" />
    </RelativeLayout>
    <!--此部分需要完整复制过去,删减或者更改ID会导致初始化找不到内容而报空-->
    <LinearLayout
        android:id="@+id/optionspicker"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="150dp"
        android:gravity="center"
        android:background="@android:color/white"
        android:orientation="horizontal">
        <com.contrarywind.view.WheelView
            android:id="@+id/options1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
        <com.contrarywind.view.WheelView
            android:id="@+id/options2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
        <com.contrarywind.view.WheelView
            android:id="@+id/options3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>
</LinearLayout>
app/src/main/res/mipmap-xhdpi/icon_bottom.png