From 60df583cc43c99f3ce366d04b15b92964da21c26 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sat, 26 Dec 2020 11:27:06 +0000
Subject: [PATCH] 加載框

---
 app/src/main/java/com/demo/navtogether/MainActivity.java |   77 ++++++++++++++++++++++++++++----------
 1 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/app/src/main/java/com/demo/navtogether/MainActivity.java b/app/src/main/java/com/demo/navtogether/MainActivity.java
index 3475c61..9b2d2f4 100644
--- a/app/src/main/java/com/demo/navtogether/MainActivity.java
+++ b/app/src/main/java/com/demo/navtogether/MainActivity.java
@@ -2,6 +2,7 @@
 
 import androidx.appcompat.app.AppCompatActivity;
 
+import android.app.ProgressDialog;
 import android.graphics.Point;
 import android.os.Bundle;
 import android.view.View;
@@ -37,14 +38,7 @@
                 int height = planPathView.getMeasuredHeight();
                 int width = planPathView.getMeasuredWidth();
 
-                ArrayList<PathPlan.Place> places = new ArrayList<>();
-                places.add(new PathPlan.Place("A",random(width,height),0));
-                places.add(new PathPlan.Place("B",random(width,height),0));
-                places.add(new PathPlan.Place("C",random(width,height),0));
-                places.add(new PathPlan.Place("D",random(width,height),0));
-                places.add(new PathPlan.Place("E",random(width,height),0));
-                places.add(new PathPlan.Place("F",random(width,height),0));
-                planPathView.setPoints(places);
+                planPathView.setPoints(randomList(width,height));
 
                 planPathView.getViewTreeObserver().removeOnPreDrawListener(this);
                 return true;
@@ -66,6 +60,28 @@
             btnDrawC.setEnabled(true);
         }
     };
+
+    /**
+     * 创建随机位置
+     * @param width     范围宽度
+     * @param height    范围高度
+     * @return
+     */
+    public ArrayList<PathPlan.Place> randomList(int width,int height){
+
+        ArrayList<PathPlan.Place> places = new ArrayList<>();
+        places.add(new PathPlan.Place("甲",random(width,height),0));
+        places.add(new PathPlan.Place("乙",random(width,height),0));
+        places.add(new PathPlan.Place("丙",random(width,height),0));
+        places.add(new PathPlan.Place("丁",random(width,height),0));
+        places.add(new PathPlan.Place("戊",random(width,height),0));
+        places.add(new PathPlan.Place("己",random(width,height),0));
+        places.add(new PathPlan.Place("庚",random(width,height),0));
+        places.add(new PathPlan.Place("辛",random(width,height),0));
+        places.add(new PathPlan.Place("壬",random(width,height),0));
+        places.add(new PathPlan.Place("癸",random(width,height),0));
+        return places;
+    }
 
     /**
      * 创建随机位置
@@ -106,7 +122,7 @@
     }
 
     int index = 0 ;
-
+    ArrayList<ArrayList<PathPlan.Place>> customLists;
     /**
      * 自定义算法画线
      * @param view
@@ -114,19 +130,40 @@
     public void drawLineCustom(View view){
         planPathView.clearLines();
         System.out.println("drawLineCustom " );
-        HashMap<PathPlan.Place, PathPlan.Distance> distanceHashMap = PathPlan.intPoints(planPathView.getPoints());
-        ArrayList<ArrayList<PathPlan.Place>> arrayLists = new DijkstraUtils(distanceHashMap).initCustomPathPlan(planPathView.getPoints().get(2), null);
-        if(arrayLists.size()>1){
-            Toast.makeText(this,"当前有"+arrayLists.size()+"路线规划",Toast.LENGTH_SHORT).show();
+        if(customLists == null || customLists.size() == 0) {
+            ProgressDialog progressDialog = new ProgressDialog(this);
+            progressDialog.setMessage("正在規劃路綫");
+            progressDialog.show();
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+
+                    HashMap<PathPlan.Place, PathPlan.Distance> distanceHashMap = PathPlan.intPoints(planPathView.getPoints());
+                    customLists = new DijkstraUtils(distanceHashMap).initCustomPathPlan(planPathView.getPoints().get(2), null);
+                    runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            System.out.println("drawLineCustom " );
+                            progressDialog.dismiss();
+                            drawLineCustome();
+                        }
+                    });
+                }
+            }).start();
+        }else{
+            drawLineCustome();
+        }
+    }
+
+
+    public void drawLineCustome(){
+        if(customLists.size()>1){
+            Toast.makeText(MainActivity.this,"当前有"+customLists.size()+"路线规划",Toast.LENGTH_SHORT).show();
         }
         ArrayList<PlanPathView.Line> lines = new ArrayList<>();
-        DecimalFormat df = new DecimalFormat("#.00");
-        double  totalLength = 0 ;
-        ArrayList<PathPlan.Place> arrayList = arrayLists.get(index % arrayLists.size());
+        ArrayList<PathPlan.Place> arrayList = customLists.get(index % customLists.size());
         for(int i = 0 ; i < arrayList.size() -1; i ++){
             lines.add(new PlanPathView.Line(arrayList.get(i).point,arrayList.get(i+1).point,arrayList.get(i+1).distance));
-            totalLength +=Double.parseDouble(df.format(arrayList.get(i).distance));
-            System.out.println(arrayList.get(i)+" 距离:"+(i == arrayList.size() -1?"": TriangleUtils.getLengthOfSide(arrayList.get(i).point,arrayList.get(i+1).point)) +" "+arrayList.get(i).distance);
         }
         index++;
         if(animC){
@@ -137,9 +174,9 @@
         }
     }
 
-
     public void refresh(View view) {
         planPathView.clear();
+        customLists.clear();
         int width = planPathView.getWidth();
         int height = planPathView.getHeight();
         ArrayList<PathPlan.Place> places = new ArrayList<>();
@@ -153,6 +190,6 @@
         places.add(new PathPlan.Place("H",random(width,height),0));
         animD = false;
         animC = false;
-        planPathView.setAnimPoints(places,listener);
+        planPathView.setAnimPoints(randomList(width,height),listener);
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1