lizhanwei
2020-03-17 99b58e758ce440f133069e0ebc69eb0ff22555d0
提交路考
3个文件已修改
2个文件已添加
244 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragment.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_net_train.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_road_train.xml 97 ●●●●● 补丁 | 查看 | 原始文档 | 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>