app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/layout_net_train.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/layout_road_train.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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; app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java
New file @@ -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(); } } } } } 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;//返回的ic卡信息 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()); 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"/> app/src/main/res/layout/layout_road_train.xml
New file @@ -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>