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