From 99b58e758ce440f133069e0ebc69eb0ff22555d0 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期二, 17 三月 2020 11:17:53 +0800
Subject: [PATCH] 提交路考

---
 app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java |  128 +++++++++++++++++++++++++
 app/src/main/res/layout/layout_road_train.xml                                  |   97 +++++++++++++++++++
 app/src/main/res/layout/layout_net_train.xml                                   |    3 
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java        |    6 +
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java |   10 +
 5 files changed, 241 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index 898d708..c92fa93 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -581,10 +581,16 @@
 
                 break;
             case R.id.view_map:
-                MapFragment mapFragment = findFragment(MapFragment.class);
+//                MapFragment mapFragment = findFragment(MapFragment.class);
+//                MyLog.i(TAG,"鏌ョ湅鍦板浘");
+//                if (mapFragment == null) {
+//                    mapFragment = (MapFragment) MapFragment.newInstance();
+//                }
+//                start(mapFragment);
+                RoadDriveMapFragment mapFragment = findFragment(RoadDriveMapFragment.class);
                 MyLog.i(TAG,"鏌ョ湅鍦板浘");
                 if (mapFragment == null) {
-                    mapFragment = (MapFragment) MapFragment.newInstance();
+                    mapFragment = (RoadDriveMapFragment) RoadDriveMapFragment.newInstance();
                 }
                 start(mapFragment);
                 break;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java
new file mode 100644
index 0000000..dc1cafc
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java
@@ -0,0 +1,128 @@
+package safeluck.drive.evaluation.fragment;
+
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import me.yokeyword.fragmentation.SupportFragment;
+
+public class RoadDriveMapFragment extends SupportFragment implements SurfaceHolder.Callback {
+
+    private static final String TAG = RoadDriveMapFragment.class.getSimpleName();
+
+    private SurfaceView mSurfaceView;
+    private SurfaceHolder mSurfaceHolder;
+    private boolean flag = false;//鎺у埗缁樺埗绾跨▼drawThread
+    private Canvas mCanvas;
+    private Paint mPaint;
+    private Path mPath;
+
+    private int avaliableWidth,avaliableHeight;
+
+    private int x = 50, y = 50, r = 10; // 鍦嗙殑鍧愭爣鍜屽崐寰�
+
+    private ExecutorService generateData = Executors.newSingleThreadExecutor();//浜х敓鏁版嵁锛堜富瑕佹槸杞﹁締鏁版嵁锛�
+    private ExecutorService drawThread = Executors.newSingleThreadExecutor();//缁樺埗绾跨▼
+
+    public static RoadDriveMapFragment newInstance(){
+        return new RoadDriveMapFragment();
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        mSurfaceView = new SurfaceView(_mActivity);
+        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
+
+        mSurfaceView.setLayoutParams(layoutParams);
+        mSurfaceView.getHolder().addCallback(this);
+        mSurfaceHolder = mSurfaceView.getHolder();
+        avaliableHeight = mSurfaceView.getHeight();
+        avaliableWidth = mSurfaceView.getWidth();
+        Log.i(TAG,"鍙敤瀹藉害="+avaliableWidth+"鍙敤楂樺害="+avaliableHeight);
+        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mPath = new Path();
+
+        return mSurfaceView;
+    }
+
+    @Override
+    public void surfaceCreated(SurfaceHolder holder) {
+        drawThread.execute(new DrawRunnable());
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+
+
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder holder) {
+        flag = false;
+    }
+
+
+    /**
+     * 涓昏鏄繖涓柟娉曪紝杩涜鍧愭爣鐐硅绠楋紝浣跨敤mPath鐢诲浘锛屽彲鑳借鐢ㄥ埌Canvas
+     * 鏈�濂藉彧浣跨敤path
+     */
+    private void calculate() {
+        mPath.addCircle(x,y,r, Path.Direction.CCW);
+    }
+
+
+    /**
+     * 缁樺埗
+     */
+    private void drawMap() {
+        try {
+            //鑾峰緱canvas瀵硅薄
+            mCanvas = mSurfaceHolder.lockCanvas();
+            //缁樺埗鑳屾櫙
+            mCanvas.drawColor(Color.WHITE);
+            //缁樺埗璺緞
+            mCanvas.drawPath(mPath, mPaint);
+        }catch (Exception e){
+
+        }finally {
+            if (mCanvas != null){
+                //閲婃斁canvas瀵硅薄骞舵彁浜ょ敾甯�
+                mSurfaceHolder.unlockCanvasAndPost(mCanvas);
+            }
+        }
+
+    }
+
+    class DrawRunnable implements Runnable{
+
+        @Override
+        public void run() {
+            while(flag){
+
+                drawMap();
+                calculate();
+                try {
+                    Thread.sleep(50);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+}
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 917fc2c..d90b9b6 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -28,6 +28,7 @@
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.ListView;
+import android.widget.TableRow;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -118,6 +119,7 @@
     private FailedProjViewModel failedProjViewModel;
     String icson;//杩斿洖鐨刬c鍗′俊鎭� json
     private List<SimulateNightBean.QuestionBean> tempQs=  new ArrayList<>();
+    private TableRow tableRow1,tableRow2,tableRow3;
 
 
     private Handler mHandler = new Handler(new Handler.Callback() {
@@ -466,6 +468,10 @@
         tv_total_score = view.findViewById(R.id.tv_total_score);
         tv_network_time = view.findViewById(R.id.network_time);
 
+        tableRow1 = view.findViewById(R.id.first);
+        tableRow2 = view.findViewById(R.id.second);
+        tableRow3 = view.findViewById(R.id.third);
+
 
         tv_network_time.setText(Utils.getHHmm());
 
diff --git a/app/src/main/res/layout/layout_net_train.xml b/app/src/main/res/layout/layout_net_train.xml
index dc13c9d..3dee05c 100644
--- a/app/src/main/res/layout/layout_net_train.xml
+++ b/app/src/main/res/layout/layout_net_train.xml
@@ -52,7 +52,8 @@
             android:background="@drawable/btn_start_bg"
             android:layout_toRightOf="@+id/tv_pos"/>
     </RelativeLayout>
-<include layout="@layout/layout_net_train_item"/>
+<include layout="@layout/layout_net_train_item" android:visibility="gone"/>
+<include layout="@layout/layout_road_train" android:visibility="visible"/>
 </LinearLayout>
 
     <include   android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" layout="@layout/layout_train_exit"/>
diff --git a/app/src/main/res/layout/layout_road_train.xml b/app/src/main/res/layout/layout_road_train.xml
new file mode 100644
index 0000000..2024521
--- /dev/null
+++ b/app/src/main/res/layout/layout_road_train.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView   xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_height="match_parent"
+    android:layout_width="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+<TableLayout
+
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+
+    android:background="@color/train_item_bg"
+    android:gravity="bottom">
+
+
+
+<TableRow android:layout_width="wrap_content"
+    android:id="@+id/first"
+    android:layout_height="35dp">
+    <Button android:id="@+id/btn_1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/start_vehicle"/>
+    <Button android:id="@+id/btn_2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/straight_line"/>
+    <Button android:id="@+id/btn_3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/crosswalk"/>
+    <Button android:id="@+id/btn_4"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/side_by_side"/>
+    <Button android:id="@+id/btn_5"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/school_area"/>
+    <Button android:id="@+id/btn_6"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/junction_left"/>
+</TableRow>
+
+    <TableRow android:layout_width="wrap_content"
+        android:id="@+id/second"
+        android:layout_height="35dp">
+    <Button android:id="@+id/btn_7"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/side_by_side"/>
+    <Button android:id="@+id/btn_8"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/add_subtract"/>
+
+    <Button android:id="@+id/btn_9"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/over_take"/>
+    <Button android:id="@+id/btn_10"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/by_crossing"/>
+    <Button android:id="@+id/btn_11"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/bus_area"/>
+    <Button android:id="@+id/btn_12"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/lane_change"/>
+    </TableRow>
+    <TableRow android:layout_width="wrap_content"
+        android:id="@+id/third"
+        android:layout_height="35dp">
+    <Button android:id="@+id/btn_13"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/night_driving"/>
+    <Button android:id="@+id/btn_14"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/junction_right"/>
+    <Button android:id="@+id/btn_15"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/turn_around"/>
+    <Button android:id="@+id/btn_16"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/pull_over"/>
+    </TableRow>
+</TableLayout>
+</ScrollView>
\ No newline at end of file

--
Gitblit v1.8.0