lizhanwei
2020-04-27 94e4b1668ffbc3461452cb0d992c854f7f71a490
完善信号配置;修改主界面
15个文件已修改
4个文件已添加
410 ■■■■ 已修改文件
app/src/main/assets/signal_config_file.json 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigBean.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_home_fragment.xml 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_signal_conf_item.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_signal_config.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_sys_home_part.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_sys_home_part_exit.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_sys_home_part_set.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_sys_home_part_train.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/left_bottom.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/let_top.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/right_bottom.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/right_top.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/arrays.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/styles.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/signal_config_file.json
@@ -4,7 +4,6 @@
    "signalName": "雾灯",
    "index":1,
    "func_id":21,
    "id":0,
    "highLevel":1,
    "mainBoard":2
  },
@@ -12,14 +11,12 @@
    "signalName": "三档",
    "index":2,
    "func_id":11,
    "id":1,
    "highLevel":1,
    "mainBoard":2
  },
  {
    "signalName": "手刹",
    "index":3,
    "id":2,
    "func_id":3,
    "highLevel":1,
    "mainBoard":2
@@ -28,7 +25,6 @@
    "signalName": "一档",
    "index":4,
    "func_id":9,
    "id":3,
    "highLevel":1,
    "mainBoard":2
  },
@@ -36,14 +32,12 @@
    "signalName": "副刹",
    "index":5,
    "func_id":16,
    "id":4,
    "highLevel":1,
    "mainBoard":2
  },
  {
    "signalName": "安全带",
    "index":6,
    "id":5,
    "func_id":0,
    "highLevel":1,
    "mainBoard":2
@@ -51,7 +45,6 @@
  {
    "signalName": "二档",
    "index":7,
    "id":6,
    "func_id":10,
    "highLevel":1,
    "mainBoard":2
@@ -59,7 +52,6 @@
  {
    "signalName": "脚刹",
    "index":8,
    "id":7,
    "func_id":4,
    "highLevel":1,
    "mainBoard":2
@@ -68,38 +60,33 @@
    "signalName": "空挡",
    "index":9,
    "func_id":8,
    "id":8,
    "highLevel":1,
    "mainBoard":2
  },
  {
    "signalName": "门锁",
    "index":10,
    "func_id":7,
    "id":9,
    "index":10,
    "highLevel":1,
    "mainBoard":2
  },
  {
    "signalName": "START位",
    "index":11,
    "func_id":15,
    "id":10,
    "highLevel":1,
    "index":11,
    "mainBoard":2
  },
  {
    "signalName": "远光",
    "index":12,
    "func_id":6,
    "id":11,
    "highLevel":1,
    "mainBoard":2
  },
  {
    "signalName": "绕车一",
    "index":13,
    "id":12,
    "func_id":17,
    "highLevel":1,
    "mainBoard":2
@@ -108,7 +95,6 @@
    "signalName": "近光",
    "index":14,
    "func_id":5,
    "id":13,
    "highLevel":1,
    "mainBoard":2
  },
@@ -116,14 +102,12 @@
    "signalName": "左转",
    "index":15,
    "func_id":1,
    "id":14,
    "highLevel":1,
    "mainBoard":2
  },
  {
    "signalName": "右转",
    "index":16,
    "id":15,
    "func_id":2,
    "highLevel":1,
    "mainBoard":2
@@ -139,7 +123,6 @@
  {
    "signalName": "绕车三",
    "index":18,
    "id":17,
    "func_id":19,
    "highLevel":1,
    "mainBoard":2
@@ -147,9 +130,14 @@
  {
    "signalName": "绕车四",
    "index":19,
    "id":17,
    "func_id":20,
    "highLevel":1,
    "mainBoard":2
  } , {
    "signalName": "示廓灯",
    "index":20,
    "func_id":22,
    "highLevel":1,
    "mainBoard":2
  }
]
app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigDao.java
@@ -12,15 +12,19 @@
    @Insert
    void insert(SingalConfig singalConfig );
    //设置id信号的对应的物理索引
    @Query("update signal_config set `index`=:mindex where id =:id ")
    @Query("update signal_config set `index`=:mindex where func_id =:id ")
    void updateindex(int mindex,int id);
    //设置id信号的对应的高电平有无效
    @Query("update signal_config set `highLevel`=:hightLevel where id =:id ")
    @Query("update signal_config set `highLevel`=:hightLevel where func_id =:id ")
    void updateHightlevel(int hightLevel,int id);
    //设置id信号的对应的主板有无效
    @Query("update signal_config set `mainBoard`=:mainBoard where id =:id ")
    @Query("update signal_config set `mainBoard`=:mainBoard where func_id =:id ")
    void updateMainBoard(int mainBoard,int id);
    @Query("select signalName from signal_config where `index`=:gpio")
    String getSignalName(int gpio);
    //查询所有信号对应的物理所引
    @Query("select `index` from signal_config")
    List<Integer> getAllIndexs();
app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SingalConfig.java
@@ -7,19 +7,13 @@
public class SingalConfig {
    private String signalName;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    @PrimaryKey
    private int id;
    private int index;
    private int highLevel;//1-高电平有效
    private int mainBoard;//1-主板有效
    @PrimaryKey
    private int func_id;//1gongneng
    public int getFunc_id() {
app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigBean.java
@@ -11,9 +11,7 @@
    private String signal_name_first;
    private String signal_name_second;
    private boolean one;
    private boolean two;
    private boolean three;
    private boolean four;
    private int port_one;
    private int port_two;
@@ -35,13 +33,6 @@
        this.three = three;
    }
    public boolean isFour() {
        return four;
    }
    public void setFour(boolean four) {
        this.four = four;
    }
    public String getSignal_name_second() {
        return signal_name_second;
@@ -59,13 +50,6 @@
        this.one = one;
    }
    public boolean isTwo() {
        return two;
    }
    public void setTwo(boolean two) {
        this.two = two;
    }
    public int getPort_one() {
        return port_one;
@@ -89,10 +73,20 @@
        this.signal_name_first = signal_name_first;
        this.signal_name_second = signal_name_second;
        this.one = one;
        this.two = two;
        this.three = three;
        this.four = four;
        this.port_one = port_one;
        this.port_two = port_two;
    }
    @Override
    public String toString() {
        return "SignalConfigBean{" +
                "signal_name_first='" + signal_name_first + '\'' +
                ", signal_name_second='" + signal_name_second + '\'' +
                ", one=" + one +
                ", three=" + three +
                ", port_one=" + port_one +
                ", port_two=" + port_two +
                '}';
    }
}
app/src/main/java/safeluck/drive/evaluation/bean/SignalConfigRemote.java
@@ -35,7 +35,12 @@
        this.func_id = func_id;
    }
    @Override
    public String toString() {
        return "SignalConfigRemote{" +
                "gpio_num=" + gpio_num +
                ", level=" + level +
                ", func_id=" + func_id +
                '}';
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
@@ -15,6 +15,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
@@ -27,6 +28,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatSpinner;
import androidx.appcompat.widget.Toolbar;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
@@ -36,6 +38,7 @@
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -44,11 +47,13 @@
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.Constant;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel;
import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.bean.SignalConfigBean;
import safeluck.drive.evaluation.bean.SignalConfigRemote;
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
import safeluck.drive.evaluation.util.Utils;
@@ -64,23 +69,9 @@
    private static final int INDEX  = 1;
    private static final int HIGHLEVEL = 2;
    private static final int MAINBOARD = 3;
    private  Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int id = msg.arg1;
            int sig = msg.arg2;
            switch (msg.what){
                case INDEX:
                    signalConfigViewModel.updateindex(sig,id);
                    break;
                case HIGHLEVEL:
                    break;
                case MAINBOARD:
                    break;
            }
        }
    };
    private String[] arr_strs;
    private  List<SignalConfigBean> signalConfiglist =new ArrayList<>();
@@ -102,6 +93,7 @@
    }
    private void initView(View view) {
        arr_strs = getResources().getStringArray(R.array.signals_name);
        mToobar = view.findViewById(R.id.toolbar);
        linearLayout = view.findViewById(R.id.ll_container);
        mToobar.setTitle("信号配置");
@@ -126,10 +118,13 @@
                SingalConfig singalConfig = singalConfigs.get(i);
                i++;
                SingalConfig singalConfig1 = singalConfigs.get(i);
                signalConfiglist .add(new SignalConfigBean(singalConfig.getSignalName(),singalConfig1.getSignalName(),singalConfig.getHighLevel()==1?true:false,singalConfig.getMainBoard()==1?true:false,
                        singalConfig1.getHighLevel()==1?true:false,singalConfig1.getMainBoard()==1?true:false,singalConfig.getIndex(),singalConfig1.getIndex()));
                mySignalsAdapter.notifyDataSetChanged();
                if (i<singalConfigs.size()){
                    SingalConfig singalConfig1 = singalConfigs.get(i);
                    signalConfiglist .add(new SignalConfigBean(singalConfig.getSignalName(),singalConfig1.getSignalName(),singalConfig.getHighLevel()==1?true:false,singalConfig.getMainBoard()==1?true:false,
                            singalConfig1.getHighLevel()==1?true:false,singalConfig1.getMainBoard()==1?true:false,singalConfig.getIndex(),singalConfig1.getIndex()));
                    mySignalsAdapter.notifyDataSetChanged();
                }
            }
        });
@@ -139,7 +134,6 @@
    }
private Gson gson = new Gson();
@@ -202,18 +196,37 @@
                viewHolder.checkBox1.setTag(signalConfiglist.get(position));
                viewHolder.checkBox3.setTag(signalConfiglist.get(position));
            }
            viewHolder.editText1.setTag(position*2);
            viewHolder.editText2.setTag((position*2+1));
            viewHolder.editText1.setTag(position*2+1);
            viewHolder.editText2.setTag((2*(1+position)));
            final SignalConfigBean signalConfigItem = getItem(position);
            viewHolder.textView1.setText(signalConfigItem.getSignal_name_first());
            viewHolder.textView2.setText(signalConfigItem.getSignal_name_second());
            viewHolder.textView1.setText(String.valueOf(position*2+1));
            viewHolder.textView2.setText(String.valueOf(2*(1+position)));
            viewHolder.editText1.setText(String.valueOf(signalConfigItem.getPort_one()));
            viewHolder.editText2.setText(String.valueOf(signalConfigItem.getPort_two()));
            CThreadPoolExecutor.runInBackground(new Runnable() {
                @Override
                public void run() {
                    String signName1=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName(position*2+1);
                    String s2=WorkRoomDataBase.getWorkRoomDataBase(getActivity()).getSignalConfigDao().getSignalName((position+1)*2);
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            viewHolder.editText1.setSelection(getSigal2Pos(signName1));
                            viewHolder.editText2.setSelection(getSigal2Pos(s2));
                        }
                    });
                }
            });
            viewHolder.checkBox1.setChecked(signalConfigItem.isOne());
            viewHolder.checkBox3.setChecked(signalConfigItem.isThree());
@@ -224,8 +237,8 @@
         class ViewHolder{
            CheckBox checkBox1;
            CheckBox checkBox3;
            EditText editText1;
            EditText editText2;
            AppCompatSpinner editText1;
             AppCompatSpinner editText2;
            TextView textView1;
            TextView textView2;
@@ -236,74 +249,37 @@
                editText1 = convertView.findViewById(R.id.et_signal1_port);
                editText2 = convertView.findViewById(R.id.et_signal2_port);
                editText1.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
                editText2.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
                editText1.setImeOptions(EditorInfo.IME_ACTION_DONE);
                editText2.setImeOptions(EditorInfo.IME_ACTION_DONE);
                editText1.setSingleLine();
                editText2.setSingleLine();
                editText1.addTextChangedListener(new TextWatcher() {
                editText1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    }
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                    }
                    @Override
                    public void afterTextChanged(Editable s) {
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        int pos = (int) editText1.getTag();
                        String str = s.toString();
                        if (!TextUtils.isEmpty(str)&& Utils.isDigital(str)){
                            int a = Integer.parseInt(str);
                            if (a== list.get(pos).getGpio_num()){
                        Log.i(TAG,String.format("Spinner1 pos=%d,position=%d对应的信号名称=%s",pos,position
                                ,arr_strs[position]));
                        signalConfigViewModel.updateindex(pos,position);
                    }
                            }else{
                                handler.removeMessages(INDEX);
                                Message message = Message.obtain();
                                message.what = INDEX;
                                message.arg1 = pos;
                                message.arg2 = a;
                                handler.sendMessageDelayed(message,1500);
                            }
                        }
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
                    }
                });
                editText2.addTextChangedListener(new TextWatcher() {
                editText2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    }
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                    }
                    @Override
                    public void afterTextChanged(Editable s) {
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        int pos = (int) editText2.getTag();
                        String str = s.toString();
                        if (!TextUtils.isEmpty(str)&& Utils.isDigital(str)){
                            int a = Integer.parseInt(str);
                            if (a== list.get(pos).getGpio_num()){
                        Log.i(TAG,String.format("Spinner2 pos=%d,position=%d对应的信号名称=%s",pos,position
                        ,arr_strs[position]));
                        signalConfigViewModel.updateindex(pos,position);
                    }
                            }else{
                                handler.removeMessages(INDEX);
                                Message message = Message.obtain();
                                message.what = INDEX;
                                message.arg1 = pos;
                                message.arg2 = a;
                                handler.sendMessageDelayed(message,1500);
                            }
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
                        }
                    }
                });
@@ -313,23 +289,16 @@
        }
    }
    @Override
    public void onResume() {
        super.onResume();
        Log.i(TAG, "onResume: ");
    private int getSigal2Pos(String signalConfigItem) {
        for (int i = 0; i < arr_strs.length; i++) {
            if (arr_strs[i].equals(signalConfigItem)){
//                Log.i(TAG,"信号名称="+signalConfigItem+" i="+i);
                return i;
            }else{
                continue;
            }
        }
        return -1;
    }
    @Override
    public void onStop() {
        super.onStop();
        Log.i(TAG, "onStop: ");
    }
    @Override
    public void onPause() {
        super.onPause();
        Log.i(TAG, "onPause: ");
    }
}
app/src/main/res/layout/layout_home_fragment.xml
@@ -4,13 +4,14 @@
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <RelativeLayout
        android:layout_width="560dp"
        android:layout_height="254dp"
        android:layout_centerInParent="true">
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
     >
        <RelativeLayout
            android:layout_width="280dp"
            android:layout_height="122dp"
            android:background="@drawable/sys_home_part_bg"
            android:layout_width="558px"
            android:layout_height="244px"
            android:background="@mipmap/let_top"
            android:id="@+id/network_train"
            >
            <include
@@ -20,56 +21,56 @@
                layout="@layout/layout_sys_home_part"/>
        </RelativeLayout>
        <RelativeLayout
            android:layout_width="280dp"
            android:layout_height="122dp"
            android:background="@drawable/sys_home_part_bg"
            android:layout_width="512px"
            android:layout_height="244px"
            android:layout_marginLeft="-45px"
            android:background="@mipmap/right_top"
            android:layout_toRightOf="@+id/network_train"
            android:id="@+id/car_train"
            >
            <include
                android:layout_width="280dp"
                android:layout_height="122dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                layout="@layout/layout_sys_home_part_train"/>
        </RelativeLayout>
        <RelativeLayout
            android:layout_width="280dp"
            android:layout_height="122dp"
            android:layout_marginTop="7dp"
            android:background="@drawable/sys_home_part_bg"
            android:layout_width="512px"
            android:layout_height="244px"
            android:layout_marginTop="13px"
            android:background="@mipmap/left_bottom"
            android:id="@+id/system_setting"
            android:layout_below="@+id/network_train"
            >
            <include
                android:layout_width="280dp"
                android:layout_height="122dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                layout="@layout/layout_sys_home_part_set"/>
        </RelativeLayout>
        <RelativeLayout
            android:layout_width="280dp"
            android:layout_height="122dp"
            android:background="@drawable/sys_home_part_bg"
            android:layout_width="550px"
            android:layout_height="244px"
            android:background="@mipmap/right_bottom"
            android:id="@+id/exit_sys"
            android:layout_marginTop="7dp"
            android:layout_marginLeft="-37px"
            android:layout_marginTop="13px"
            android:layout_toRightOf="@+id/system_setting"
            android:layout_below="@+id/network_train"
            >
            <include
                android:layout_width="280dp"
                android:layout_height="122dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                layout="@layout/layout_sys_home_part_exit"/>
        </RelativeLayout>
        <safeluck.drive.evaluation.customview.CircleImageView
            android:layout_width="104dp"
            android:layout_height="104dp"
            android:layout_width="208px"
            android:layout_height="208px"
            android:layout_marginLeft="411px"
            android:layout_marginTop="147px"
            app:civ_fill_color="#2A303F"
            android:src="@drawable/home_circle"
            app:civ_fill_color="#2B3140"
            app:civ_border_width="10dp"
            android:layout_centerInParent="true"
            />
    </RelativeLayout>
app/src/main/res/layout/layout_signal_conf_item.xml
@@ -14,14 +14,15 @@
    android:gravity="center_vertical"
    android:textSize="@dimen/network_train_textsize22px"
    android:text="喇叭"/>
    <EditText
    <androidx.appcompat.widget.AppCompatSpinner
        android:layout_width="0dp"
        android:layout_weight="1"
        android:textColor="@android:color/white"
        android:gravity="center"
        android:layout_height="32dp"
        android:id="@+id/et_signal1_port"
        android:background="@drawable/tv_des_bg"
        android:entries="@array/signals_name"
        android:textSize="@dimen/network_train_textsize22px"
        android:text="0"/>
    <safeluck.drive.evaluation.customview.MyCustomCheckbox
@@ -44,15 +45,16 @@
        android:id="@+id/tv_signal_2"
        android:layout_height="32dp"
        android:text="喇叭"/>
    <EditText
    <androidx.appcompat.widget.AppCompatSpinner
        android:layout_width="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:textSize="@dimen/network_train_textsize22px"
        android:background="@drawable/tv_des_bg"
        android:spinnerMode="dropdown"
        android:id="@+id/et_signal2_port"
        android:layout_height="32dp"
        android:entries="@array/signals_name"
        android:text="0"/>
    <safeluck.drive.evaluation.customview.MyCustomCheckbox
        android:layout_width="wrap_content"
app/src/main/res/layout/layout_signal_config.xml
@@ -51,7 +51,7 @@
        android:gravity="center"
        android:textSize="15sp"
        android:textColor="#ff888995"
    android:text="信号名称"/>
    android:text="物理通道"/>
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
@@ -59,7 +59,7 @@
        android:gravity="center"
        android:textSize="15sp"
        android:textColor="#ff888995"
    android:text="物理索引"/>
    android:text="信号名称"/>
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
app/src/main/res/layout/layout_sys_home_part.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="280dp"
    android:orientation="vertical" android:layout_width="557px"
    android:gravity="center"
    android:layout_height="122dp"
    android:layout_height="244px"
    >
@@ -16,12 +16,12 @@
        android:layout_height="wrap_content"
        android:text="联网考试"
        android:textColor="#ffffffff"
        android:textSize="22sp"
        android:textSize="39sp"
        android:id="@+id/tv_des"
        android:layout_toRightOf="@+id/circle_1"
        />
<View
    android:layout_width="16dp"
    android:layout_width="26dp"
    android:layout_height="2dp"
    android:background="@drawable/sys_line_bg"
    android:layout_below="@+id/tv_des"
@@ -35,7 +35,7 @@
        android:text="lian wang kao shi"
        android:textColor="#ff64738e"
        android:id="@+id/tv_des_t"
        android:textSize="8sp"
        android:textSize="13sp"
        android:shadowDx="0"
        android:shadowDy="1"
        android:shadowRadius="3.0"
app/src/main/res/layout/layout_sys_home_part_exit.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="280dp"
    android:orientation="vertical" android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="122dp"
    android:layout_height="match_parent"
    >
@@ -16,26 +16,26 @@
        android:layout_height="wrap_content"
        android:text="退出"
        android:textColor="#ffffffff"
        android:textSize="22sp"
        android:textSize="39sp"
        android:id="@+id/tv_des"
        android:layout_toRightOf="@+id/circle_1"
        />
<View
    android:layout_width="16dp"
    android:layout_width="26dp"
    android:layout_height="2dp"
    android:background="@drawable/sys_line_bg"
    android:layout_below="@+id/tv_des"
    android:layout_toRightOf="@+id/circle_1"
    android:layout_marginTop="10dp"
    android:layout_marginTop="12dp"
    android:id="@+id/view_line"
    android:layout_marginBottom="10dp"/>
    android:layout_marginBottom="16dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="tui chu"
        android:textColor="#ff64738e"
        android:id="@+id/tv_des_t"
        android:textSize="8sp"
        android:textSize="13sp"
        android:shadowDx="0"
        android:shadowDy="1"
        android:shadowRadius="3.0"
app/src/main/res/layout/layout_sys_home_part_set.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="280dp"
    android:orientation="vertical" android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="122dp"
    android:layout_height="match_parent"
    >
@@ -16,12 +16,12 @@
        android:layout_height="wrap_content"
        android:text="设置"
        android:textColor="#ffffffff"
        android:textSize="22sp"
        android:textSize="39sp"
        android:id="@+id/tv_des"
        android:layout_toRightOf="@+id/circle_1"
        />
<View
    android:layout_width="16dp"
    android:layout_width="26dp"
    android:layout_height="2dp"
    android:background="@drawable/sys_line_bg"
    android:layout_below="@+id/tv_des"
@@ -35,7 +35,7 @@
        android:text="she zhi"
        android:textColor="#ff64738e"
        android:id="@+id/tv_des_t"
        android:textSize="8sp"
        android:textSize="13sp"
        android:shadowDx="0"
        android:shadowDy="1"
        android:shadowRadius="3.0"
app/src/main/res/layout/layout_sys_home_part_train.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="280dp"
    android:orientation="vertical" android:layout_width="512px"
    android:gravity="center"
    android:layout_height="122dp"
    android:layout_height="244px"
    >
@@ -16,12 +16,12 @@
        android:layout_height="wrap_content"
        android:text="单机训练"
        android:textColor="#ffffffff"
        android:textSize="22sp"
        android:textSize="39sp"
        android:id="@+id/tv_des"
        android:layout_toRightOf="@+id/circle_1"
        />
<View
    android:layout_width="16dp"
    android:layout_width="26dp"
    android:layout_height="2dp"
    android:background="@drawable/sys_line_bg"
    android:layout_below="@+id/tv_des"
@@ -35,7 +35,7 @@
        android:text="dan ji xun lian"
        android:textColor="#ff64738e"
        android:id="@+id/tv_des_t"
        android:textSize="8sp"
        android:textSize="13sp"
        android:shadowDx="0"
        android:shadowDy="1"
        android:shadowRadius="3.0"
app/src/main/res/mipmap-xhdpi/left_bottom.png
app/src/main/res/mipmap-xhdpi/let_top.png
app/src/main/res/mipmap-xhdpi/right_bottom.png
app/src/main/res/mipmap-xhdpi/right_top.png
app/src/main/res/values/arrays.xml
@@ -11,4 +11,29 @@
        <item>固定解</item>
        <item>浮动解</item>
    </string-array>
    <string-array name="signals_name">
        <item>安全带</item>
        <item>左转</item>
        <item>右转</item>
        <item>手刹</item>
        <item>脚刹</item>
        <item>近光</item>
        <item>远光</item>
        <item>门锁</item>
        <item>空档</item>
        <item>一档</item>
        <item>二档</item>
        <item>三档</item>
        <item>四档</item>
        <item>五档</item>
        <item>倒档</item>
        <item>START位</item>
        <item>副刹</item>
        <item>绕车一</item>
        <item>绕车二</item>
        <item>绕车三</item>
        <item>绕车四</item>
        <item>雾灯</item>
        <item>示廓灯</item>
    </string-array>
</resources>
app/src/main/res/values/styles.xml
@@ -26,8 +26,8 @@
    </style>
    <style name="home_fragment_icon">
        <item name="android:layout_width">80dp</item>
        <item name="android:layout_height">80dp</item>
        <item name="android:layout_width">140px</item>
        <item name="android:layout_height">140px</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_weight">1</item>