From 8735b56eefde751618c819f5b331a56a62274a5c Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期四, 14 五月 2020 18:30:22 +0800 Subject: [PATCH] Merge branch 'newUI' --- app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 271 +++++++++++++++++++++++++++++------------------------ 1 files changed, 147 insertions(+), 124 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java index da8ebf4..8ac2f3d 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -1,6 +1,7 @@ package safeluck.drive.evaluation.fragment; import android.content.Context; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -14,7 +15,13 @@ import android.os.Handler; import android.os.Message; +import android.text.Html; +import android.text.SpannableString; +import android.text.Spanned; import android.text.TextUtils; +import android.text.style.AbsoluteSizeSpan; +import android.text.style.ForegroundColorSpan; +import android.util.Base64; import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -35,6 +42,7 @@ import org.json.JSONException; import org.json.JSONObject; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -51,22 +59,22 @@ import safeluck.drive.evaluation.DB.exam_status.ExamStatusViewModel; import safeluck.drive.evaluation.DB.failitems.FailedProjViewModel; import safeluck.drive.evaluation.DB.failitems.FailedProj_select; +import safeluck.drive.evaluation.MainActivity; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.adapter.ScoreAdapter; import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.bean.ScoreBean; -import safeluck.drive.evaluation.bean.SimulateNightBean; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.cEventCenter.ICEventListener; -import safeluck.drive.evaluation.customview.ArrowView; -import safeluck.drive.evaluation.customview.HouseView; import safeluck.drive.evaluation.customview.LoadProgressDialog; -import safeluck.drive.evaluation.customview.MyDialogFragment; +import safeluck.drive.evaluation.customview.MyDialog; +import safeluck.drive.evaluation.customview.QRCodeDialog; +import safeluck.drive.evaluation.customview.SelectDialog; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.platformMessage.JKMessage0201; import safeluck.drive.evaluation.platformMessage.JKMessage0202; +import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.util.Utils; -import safeluck.drive.evaluation.viewmodels.TimeViewModel; /**鍗曟満璁粌UI * MyApplication2 @@ -87,20 +95,19 @@ private ListView mListView; private Button btn_start_exam; private TextView tv_stop;//鍛煎彨璇锋眰锛堢粨鏉熻�冭瘯锛� - private Gson gson = new Gson(); private ScoreAdapter mScoreAdapter; - private ArrowView av_zhijiao, av_curve, av_park, av_podao; - private HouseView houseView; + private Button av_zhijiao, av_curve, av_park, av_podao; + private Button houseView; private List<ExamStatus> examStatusList = new ArrayList<>(); private List<String> item_conents = new ArrayList<>();//鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝� private int item_id;//鎵e垎鍒嗘暟鎬诲拰 private ExamStatusViewModel examStatusViewModel; private static final int ADD_DATA = 1; - private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform,tv_network_time - ,tv_qf,tv_start_time,tv_sex; + private TextView tv_speed,tv_total_score,tv_name + ,tv_start_time,tv_coach_name; private double speed=0.0; - private ImageView iv_rtk_status,iv_head; + private ImageView iv_head,iv_coach_head; WokViewModel wokViewModel; private int currTotalScore = 100; @@ -110,7 +117,6 @@ String icson;//杩斿洖鐨刬c鍗′俊鎭� json private String content;//鐢ㄤ互鐢熸垚浜岀淮鐮佺殑鍐呭 - private LoadProgressDialog loadProgressDialog; private List<Integer> btn_ids = new ArrayList<Integer>(); @@ -119,12 +125,12 @@ public boolean handleMessage(Message msg) { if (msg.what == ADD_DATA){ MyLog.i("handler add_data totalScore="+currTotalScore); - tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore)); - houseView.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_REVERSE));//鍊掕溅鍏ュ簱 type =1 - av_podao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_RAMP)); - av_park.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_PARK)); - av_curve.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_CURVE)); - av_zhijiao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE)); + setTotalScoreText(); + houseView.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_REVERSE));//鍊掕溅鍏ュ簱 type =1 + av_podao.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_RAMP)); + av_park.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_PARK)); + av_curve.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_CURVE)); + av_zhijiao.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE)); for (int i = 0; i < btn_ids.size(); i++) { int viewId = getResources().getIdentifier(String.valueOf(btn_ids.get(i)),"id",_mActivity.getPackageName()); @@ -162,7 +168,7 @@ } }); - private int aaa(int type) { + private Drawable aaa(int type) { if (examStatusList!=null &&examStatusList.size()>0){ for (ExamStatus examStatus: examStatusList) { @@ -172,17 +178,17 @@ if (examStatusList.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){ //缁撴潫鑰冭瘯浜� MyLog.i("杩涘叆鑰冨満缁撴潫鑰冭瘯锛宻tartexam="+examStatus.getStartExam()); - return getResources().getColor(R.color.colorAccent); + return getResources().getDrawable(R.drawable.ic_btn_fail); }else{ MyLog.i("杩涘叆鑰冨満锛宼ype="+type); - return getResources().getColor(R.color.pink); + return getResources().getDrawable(R.drawable.ic_btn_examing); } }else if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.FINISH_ITEM){ if (examStatusList.get(0).getStartExam()==Constant.NONE_BEEN_START_EXAM){ - return getResources().getColor(R.color.examing); + return getResources().getDrawable(R.drawable.ic_btn_daikao); } switch (type) { @@ -190,7 +196,7 @@ if (item_conents.contains("鍊掕溅鍏ュ簱")) { MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); - return getResources().getColor(R.color.colorAccent); + return getResources().getDrawable(R.drawable.ic_btn_fail); }else{ if (examStatus.getResult() ==1){ MyLog.i("宸茬粡鎾斁杩囧�掕溅鍏ュ簱鍚堟牸"); @@ -199,12 +205,12 @@ examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); } - return getResources().getColor(R.color.train_btn_return); + return getResources().getDrawable(R.drawable.ic_btn_succ); } case 2: if (item_conents.contains("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�")) { MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); - return getResources().getColor(R.color.colorAccent); + return getResources().getDrawable(R.drawable.ic_btn_fail); }else{ if (examStatus.getResult() ==1){ MyLog.i("宸茬粡鎾斁杩囧潯閬撳畾鐐瑰仠杞﹀拰璧锋鍚堟牸鍚堟牸"); @@ -213,12 +219,12 @@ examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); } - return getResources().getColor(R.color.train_btn_return); + return getResources().getDrawable(R.drawable.ic_btn_succ); } case 3: if (item_conents.contains("渚ф柟鍋滆溅")) { MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); - return getResources().getColor(R.color.colorAccent); + return getResources().getDrawable(R.drawable.ic_btn_fail); }else{ if (examStatus.getResult() ==1){ MyLog.i("宸茬粡鎾斁杩囦晶鏂瑰仠杞﹀悎鏍�"); @@ -227,12 +233,12 @@ ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); } - return getResources().getColor(R.color.train_btn_return); + return getResources().getDrawable(R.drawable.ic_btn_succ); } case 4: if (item_conents.contains("鏇茬嚎琛岄┒")) { MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); - return getResources().getColor(R.color.colorAccent); + return getResources().getDrawable(R.drawable.ic_btn_fail); }else{ if (examStatus.getResult() ==1){ MyLog.i("宸茬粡鎾斁杩囨洸绾胯椹跺悎鏍�"); @@ -241,12 +247,12 @@ ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); } - return getResources().getColor(R.color.train_btn_return); + return getResources().getDrawable(R.drawable.ic_btn_succ); } case 5: if (item_conents.contains("鐩磋杞集")) { MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); - return getResources().getColor(R.color.colorAccent); + return getResources().getDrawable(R.drawable.ic_btn_fail); }else{ if (examStatus.getResult() ==1){ MyLog.i("宸茬粡鎾斁杩囩洿瑙掕浆寮悎鏍�"); @@ -255,7 +261,7 @@ examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); } - return getResources().getColor(R.color.train_btn_return); + return getResources().getDrawable(R.drawable.ic_btn_succ); } @@ -263,12 +269,12 @@ } }else{ - return getResources().getColor(R.color.examing); + return getResources().getDrawable(R.drawable.ic_btn_daikao); } } } } - return getResources().getColor(R.color.examing); + return getResources().getDrawable(R.drawable.ic_btn_daikao); } /** @@ -448,13 +454,9 @@ examStatusList.addAll(examStatus); mHandler.obtainMessage(ADD_DATA).sendToTarget(); if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){ - btn_start_exam.setEnabled(false); - tv_stop.setEnabled(true); - iv_head.getDrawable().setLevel(1); + btn_start_exam.setText("缁撴潫璁粌"); }else{ - btn_start_exam.setEnabled(true); - tv_stop.setEnabled(false); - iv_head.getDrawable().setLevel(0); + btn_start_exam.setText("寮�濮嬭缁�"); } exam_type = examStatus.get(0).getStartExam(); } @@ -469,44 +471,24 @@ for (Student student : students) { MyLog.i(TAG, "onChanged: " + student.toString()); - if (!TextUtils.isEmpty(student.getName())&&student.getStu_id()==ExamPlatformData.STU_ID){ + if (ExamPlatformData.getInstance().getSign_mode()==ExamPlatformData.SIGN_MODE_TRAIN){ + if (!TextUtils.isEmpty(student.getName())&&student.getStu_id()==ExamPlatformData.STU_ID){ - tv_name.setText(getString(R.string.name)+student.getName()); - tv_id.setText(getString(R.string.user_id)+student.getID()); - ExamPlatformData.getInstance().setId(student.getID()); - tv_sex.setText(getString(R.string.sex)+(student.getSex()==2?"濂�":"鐢�")); - tv_start_time.setText(getString(R.string.begin_time)+Utils.formatTimeYYMMDDHHmmSS(student.getBegin_time())); + tv_name.setText(getNameColor(student.getName())); + ExamPlatformData.getInstance().setId(student.getID()); + tv_start_time.setText(getString(R.string.begin_time)+Utils.formatTimeYYMMDDHHmmSS(student.getBegin_time())); - }else if (!TextUtils.isEmpty(student.getName())&&student.getStu_id()==ExamPlatformData.COACH_ID){ - ExamPlatformData.getInstance().setCoachID(student.getID()); + }else if (!TextUtils.isEmpty(student.getName())&&student.getStu_id()==ExamPlatformData.COACH_ID){ + ExamPlatformData.getInstance().setCoachID(student.getID()); + tv_coach_name.setText(getNameColor(student.getName())); + } } + } } }); - AppStatusViewModel appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class); - appStatusViewModel.getAppStatus().observe(this, new Observer<AppStatus>() { - @Override - public void onChanged(AppStatus appStatus) { - if (appStatus != null){ - Log.i(TAG, "onChanged: "+appStatus.toString()); - iv_rtk_status.getDrawable().setLevel(appStatus.getRtk_connect_status()); - tv_work_platform.setText(getString(R.string.platform_status,ExamPlatformData.getInstance().getExamplatformStatusStr( - ExamPlatformData.getInstance().getExamplatformStatus() - ))); - tv_sat_num.setText(String.valueOf(appStatus.getSat_num()).length()==1?"0"+appStatus.getSat_num():String.valueOf(appStatus.getSat_num())); - tv_qf.setText(getResources().getStringArray(R.array.qf_status)[appStatus.getQf()]); - } - } - }); - TimeViewModel timeViewModel = ViewModelProviders.of(this).get(TimeViewModel.class); - timeViewModel.getLiveDataTime().observe(this, new Observer<String>() { - @Override - public void onChanged(String s) { - tv_network_time.setText(s); - } - }); return view; } @@ -514,6 +496,14 @@ private void initView(View view) { + Log.i(TAG,"currTopFragment="+getTopFragment().getClass().getSimpleName()); + if (HomeFragment.class.getSimpleName().equals(getTopFragment().getClass().getSimpleName())){ + ((MainActivity)_mActivity).viewtitle.setVisibility(View.GONE); + ((MainActivity)_mActivity).btn_return.setVisibility(View.GONE); + }else{ + ((MainActivity)_mActivity).viewtitle.setVisibility(View.VISIBLE); + ((MainActivity)_mActivity).btn_return.setVisibility(View.VISIBLE); + } btn_ids.add(R.id.btn_1); btn_ids.add(R.id.btn_2); btn_ids.add(R.id.btn_3); @@ -526,33 +516,25 @@ btn_ids.add(R.id.btn_10); - view.findViewById(R.id.iv_head).setOnClickListener(this); av_curve = view.findViewById(R.id.av3); av_park = view.findViewById(R.id.av2); av_podao = view.findViewById(R.id.av1); av_zhijiao = view.findViewById(R.id.av4); houseView = view.findViewById(R.id.hv); tv_name = view.findViewById(R.id.tv_name); - tv_id = view.findViewById(R.id.tv_ID); + tv_coach_name = view.findViewById(R.id.tv_coach_name); tv_start_time = view.findViewById(R.id.tv_start_time); - tv_sex = view.findViewById(R.id.tv_sex); - tv_work_platform = view.findViewById(R.id.platform); - iv_rtk_status = view.findViewById(R.id.iv_rtk_connect); - iv_rtk_status.getDrawable().setLevel(0); iv_head = view.findViewById(R.id.iv_head); - tv_sat_num = view.findViewById(R.id.tv_sat_num_instatus); - tv_qf = view.findViewById(R.id.tv_qf); + iv_head.setOnClickListener(this); + iv_coach_head = view.findViewById(R.id.iv_coach_head); + iv_coach_head.setOnClickListener(this); tv_speed = view.findViewById(R.id.tv_speed); tv_total_score = view.findViewById(R.id.tv_total_score); - tv_network_time = view.findViewById(R.id.network_time); - - tv_network_time.setText(Utils.getHHmm()); tv_speed.setText(getResources().getString(R.string.speed,speed)); - view.findViewById(R.id.btn_return).setOnClickListener(this); mListView = view.findViewById(R.id.lv); mListView.setFocusable(false); mListView.setOnTouchListener(new View.OnTouchListener() { @@ -581,55 +563,37 @@ tv_stop = view.findViewById(R.id.tv_stop); tv_stop.setText("缁撴潫璁粌"); tv_stop.setOnClickListener(this); - mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item, null)); } - MyDialogFragment myDialogFragment; - SimulateNightBean simulateNightBean = null; @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_start: +// //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 + if (btn_start_exam.getText().toString().equalsIgnoreCase("寮�濮嬭缁�")){ - //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 - final JKMessage0202 jkMessage0202 = new JKMessage0202(); - Date date = new Date(); - wokViewModel.updateBeginTime(date.getTime()); - jkMessage0202.timeBCD = date; - ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10)); - if (myDialogFragment == null){ - myDialogFragment = new MyDialogFragment(); + SelectDialog selectDialog = SelectDialog.newInstance("杩涜鍦哄湴璁粌","杩涜閬撹矾璁粌"); + selectDialog.setSelectedListener((int res)->{ + if (res != SelectDialog.SELECT_NONE){ + if (res== SelectDialog.FIRST){ + sendJK0202(2); + }else{ + sendJK0202(3); + } + } + }); + selectDialog.show(getFragmentManager(),"selectdialog"); + }else{ + stopExam(); } - myDialogFragment.show(getFragmentManager(),"dialog"); - myDialogFragment.setCallback(new MyDialogFragment.Callback() { - @Override - public void changKao() { - - sendJK0202(2); - } - - @Override - public void luKao() { - sendJK0202(3); - - - - } - }); - - break; - case R.id.tv_stop: - Toast.makeText(_mActivity, "缁撴潫鑰冭瘯", Toast.LENGTH_SHORT).show(); - stopExam(); - break; case R.id.view_map: if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){ RoadDriveMapFragmentaa mapFragment = findFragment(RoadDriveMapFragmentaa.class); @@ -647,16 +611,48 @@ start(mapFragment); } break; - case R.id.btn_return: - _mActivity.onBackPressed(); - break; case R.id.iv_head: - MyLog.i(TAG,"绛惧埌锛岃幏鍙栬韩浠借瘉鐗╃悊鍗″彿"); - loadProgressDialog = LoadProgressDialog.newInstance("璇风◢鍚�..."); - loadProgressDialog.setStyle(DialogFragment.STYLE_NORMAL,R.style.Dialog_FullScreen); - loadProgressDialog.showNow(getFragmentManager(),"loadingdiaolog"); + MyLog.i(TAG,"瀛﹀憳绛惧埌"); + if (ExamPlatformData.getInstance().getSign_mode() == ExamPlatformData.SIGN_MODE_EXAM){ + Toast.makeText(_mActivity, "鎮ㄥ凡缁忓湪\"鑱旂綉鑰冭瘯\"椤甸潰涓嬬鍒�", Toast.LENGTH_SHORT).show(); + return; + } + if (ExamPlatformData.getInstance().IsStuSign()){ + ExamPlatformData.getInstance().setStuSign(false); + qrcode(1,false); + }else{ + ExamPlatformData.getInstance().setStuSign(true); + qrcode(1,true); + ExamPlatformData.getInstance().setSingnMode(ExamPlatformData.SIGN_MODE_TRAIN); + } + + break; + case R.id.iv_coach_head: + MyLog.i(PlatFormConstant.HTTPTAG,"鏁欑粌绛惧埌"); + if (ExamPlatformData.getInstance().getSign_mode() == ExamPlatformData.SIGN_MODE_EXAM){ + Toast.makeText(_mActivity, "鎮ㄥ凡缁忓湪\"鑱旂綉鑰冭瘯\"椤甸潰涓嬬鍒�", Toast.LENGTH_SHORT).show(); + return; + } + if (ExamPlatformData.getInstance().IsCoachSign()){ + ExamPlatformData.getInstance().setCoachSign(false); + qrcode(0,false); + }else{ + ExamPlatformData.getInstance().setCoachSign(true); + qrcode(0,true); + ExamPlatformData.getInstance().setSingnMode(ExamPlatformData.SIGN_MODE_TRAIN); + } break; } + } + + private void qrcode(int type,boolean isSign) { + content = "87,"+String.valueOf(type)+ ","+ExamPlatformData.getInstance().getPhone() + +(isSign?",signin":",signout"); + Log.i(TAG,String.format("浜岀淮鐮佸唴瀹癸細%s",content)); + byte[] bytes = Utils.qrencrypt(content.getBytes(Charset.forName("utf-8")),"safeluck"); + String str = Base64.encodeToString(bytes,Base64.DEFAULT); + QRCodeDialog qrCodeDialog = QRCodeDialog.newInstance(str); + qrCodeDialog.show(getFragmentManager(),"qrdialog" ); } private void sendJK0202(int type) { @@ -708,14 +704,23 @@ item_id = 0; currTotalScore = 100; failedProjViewModel.deleteAll(); - - tv_total_score.setText(String.valueOf(currTotalScore)); + setTotalScoreText(); ExamPlatformData.getInstance().getTTS().speak("缁撴潫璁粌"); examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); sendExamJson(0,0);//缁撴潫鑰冭瘯 exstart=0 + } + + private void setTotalScoreText() { + String totalstr=String.format(getString(R.string.total_score),currTotalScore); + SpannableString msp = new SpannableString(totalstr); + msp.setSpan(new ForegroundColorSpan(Color.parseColor("#A1A1A3")),totalstr.length()-1,totalstr.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + msp.setSpan(new AbsoluteSizeSpan(13),totalstr.length()-1,totalstr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + + tv_total_score.setText(msp); } private ICEventListener icEventListener = new ICEventListener() { @@ -740,6 +745,24 @@ @Override public void onDetach() { super.onDetach(); + Log.i(TAG,"onDetach"); CEventCenter.onBindEvent(false,icEventListener,Constant.BIND_SPEED_TOPIC); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + Log.i(TAG,"onDestroyView"); + ((MainActivity)_mActivity).viewtitle.setVisibility(View.GONE); + ((MainActivity)_mActivity).btn_return.setVisibility(View.GONE); + } + private SpannableString getNameColor(String str) { + SpannableString spannableString = new SpannableString(str); + spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#60FFFF")),0, + str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + return spannableString; + } + } -- Gitblit v1.8.0