From bf91971f45348d74b17a2077cf5fab92a553840b Mon Sep 17 00:00:00 2001
From: lwb <q3213421wrwqr>
Date: 星期一, 07 十二月 2020 17:28:20 +0800
Subject: [PATCH] 9527 webview

---
 SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java    |    4 
 SdkProject/library/src/main/res/drawable-xhdpi/web_close.png                     |    0 
 Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar                       |    0 
 Channel/Android/gtgame/release/libs/library-release-gtgame.aar                   |    0 
 SdkProject/library/src/main/java/com/secondworld/sdk/utils/WebViewUtil.java      |  101 +++++++++++++++++++++++++++++++++
 Channel/Android/test/release/libs/library-release-test.aar                       |    0 
 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java |   13 +++-
 Channel/Android/test/debug/libs/library-debug-test.aar                           |    0 
 SdkProject/library/src/main/res/layout/activity_main.xml                         |   28 ++++++++
 SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java           |   16 ++++
 10 files changed, 153 insertions(+), 9 deletions(-)

diff --git a/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar b/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
index 0ac56df..5ed38c1 100644
--- a/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
+++ b/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
Binary files differ
diff --git a/Channel/Android/gtgame/release/libs/library-release-gtgame.aar b/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
index 8c543fe..dfa5e79 100644
--- a/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
+++ b/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
Binary files differ
diff --git a/Channel/Android/test/debug/libs/library-debug-test.aar b/Channel/Android/test/debug/libs/library-debug-test.aar
index 0c1c53e..2da36d1 100644
--- a/Channel/Android/test/debug/libs/library-debug-test.aar
+++ b/Channel/Android/test/debug/libs/library-debug-test.aar
Binary files differ
diff --git a/Channel/Android/test/release/libs/library-release-test.aar b/Channel/Android/test/release/libs/library-release-test.aar
index a730e52..b546065 100644
--- a/Channel/Android/test/release/libs/library-release-test.aar
+++ b/Channel/Android/test/release/libs/library-release-test.aar
Binary files differ
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java b/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java
index 1bc106d..c9b34b3 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java
@@ -2,14 +2,20 @@
 
 import android.os.Bundle;
 import android.support.annotation.NonNull;
+import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
 
 import com.secondworld.sdk.utils.LogUtil;
+import com.secondworld.sdk.utils.WebViewUtil;
 
 public class GameActivity extends UnityPlayerActivity {
 
     private static Class<? extends GameActivityProxy> proxyClass;
 
-    GameActivityProxy proxy;
+    private GameActivityProxy proxy;
+
+    private RelativeLayout webContainer;
+    private FrameLayout unityContainer;
 
     //娉ㄥ唽浠g悊绫�
     public static void registerProxy(Class<? extends GameActivityProxy> proxyClass) {
@@ -19,7 +25,13 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        LogUtil.d("GameActivity","鍚姩鐨勬槸GameActivity锛�");
+        LogUtil.d("GameActivity", "鍚姩鐨勬槸GameActivity锛�");
+        setContentView(R.layout.activity_main);
+        webContainer = findViewById(R.id.webContainer);
+        unityContainer = findViewById(R.id.unityContainer);
+        unityContainer.addView(mUnityPlayer);
+        WebViewUtil.I.init(this, webContainer);
+        //鍒濆鍖栨笭閬撲唬鐞嗙被
         try {
             if (proxyClass != null) {
                 proxy = proxyClass.newInstance();
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java
index e438f13..bee6ee2 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java
@@ -39,8 +39,8 @@
         getIntent().putExtra("unity", cmdLine);
 
         mUnityPlayer = new UnityPlayer(this, this);
-        setContentView(mUnityPlayer);
-        mUnityPlayer.requestFocus();
+//        setContentView(mUnityPlayer);
+//        mUnityPlayer.requestFocus();
     }
 
     // When Unity player unloaded move task to background
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java
index 78ca40d..0d6d869 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java
@@ -1,17 +1,24 @@
 package com.secondworld.sdk.command;
 
 import com.secondworld.sdk.utils.CodeU2A;
+import com.secondworld.sdk.utils.WebViewUtil;
 
+import org.json.JSONException;
 import org.json.JSONObject;
 
-public class CmdOpenWebView implements  ICommand {
+public class CmdOpenWebView implements ICommand {
     @Override
     public int getCode() {
         return CodeU2A.OpenWebView;
     }
 
     @Override
-    public void process(JSONObject json) {
-
+    public void process(JSONObject json) throws JSONException {
+        String url = json.getString("url");
+        if (json.has("delay")) {
+            boolean delay = json.getBoolean("delay");
+            WebViewUtil.I.open(url, delay);
+        } else
+            WebViewUtil.I.open(url, true);
     }
 }
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/WebViewUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/WebViewUtil.java
new file mode 100644
index 0000000..0f73f33
--- /dev/null
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/WebViewUtil.java
@@ -0,0 +1,101 @@
+package com.secondworld.sdk.utils;
+
+import android.annotation.SuppressLint;
+import android.util.DisplayMetrics;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.RelativeLayout;
+
+import com.secondworld.sdk.GameActivity;
+import com.secondworld.sdk.R;
+
+public class WebViewUtil {
+
+    public static WebViewUtil I;
+
+    RelativeLayout webContainer;
+    private WebView webView;
+    private WebView btnClose;
+
+    private boolean isShow;
+
+    private boolean isValid() {
+        return webContainer != null && btnClose != null && webView != null;
+    }
+
+    @SuppressLint("SetJavaScriptEnabled")
+    public void init(GameActivity gameActivity, RelativeLayout webContainer) {
+        this.webContainer = webContainer;
+        webView = webContainer.findViewById(R.id.webView);
+        btnClose = webContainer.findViewById(R.id.btnWebClose);
+        btnClose.setOnClickListener(v -> close());
+        close();
+        //璁剧疆澶у皬
+        DisplayMetrics _dm = new DisplayMetrics();
+        gameActivity.getWindowManager().getDefaultDisplay().getMetrics(_dm);
+        final float scale = _dm.widthPixels * 1f / 1344;
+        final int width = (int) (scale * 982);
+        final int height = (int) (scale * 560);
+        ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(
+                webView.getLayoutParams());
+        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
+                margin);
+        layoutParams.width = width;
+        layoutParams.height = height;
+        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,
+                RelativeLayout.TRUE);
+        webView.setLayoutParams(layoutParams);
+        webView.getSettings().setJavaScriptEnabled(true);
+        webView.setWebViewClient(new WebViewClient() {
+            @Override
+            public void onPageFinished(WebView view, String url) {
+                super.onPageFinished(view, url);
+                if (isShow)
+                    show();
+            }
+
+            @Override
+            public boolean shouldOverrideUrlLoading(WebView view, String url) {
+                if (url.startsWith("http") || url.startsWith("https")) { //http鍜宧ttps鍗忚寮�澶寸殑鎵ц姝e父鐨勬祦绋�
+                    view.loadUrl(url);
+                    return true;
+                } else {  //鍏朵粬鐨刄RL鍒欎細寮�鍚竴涓狝citity鐒跺悗鍘昏皟鐢ㄥ師鐢烝PP
+                    return super.shouldOverrideUrlLoading(view, url);
+                }
+            }
+        });
+    }
+
+    /**
+     * 鎵撳紑缃戦〉
+     *
+     * @param url   鍦板潃
+     * @param delay 鏄惁寤惰繜鏄剧ず锛堝姞杞藉畬鎴愭墠鏄剧ず锛�
+     */
+    public void open(String url, boolean delay) {
+        if (!isValid())
+            return;
+        webView.loadUrl(url);
+        if (!delay)
+            show();
+    }
+
+    private void show() {
+        isShow = true;
+        webContainer.setVisibility(View.VISIBLE);
+    }
+
+    public void close() {
+        if (!isValid())
+            return;
+        webView.clearFocus();
+        webView.clearCache(true);
+        webView.clearHistory();
+        webView.clearFormData();
+        isShow = false;
+        webContainer.setVisibility(View.GONE);
+    }
+
+}
diff --git a/SdkProject/library/src/main/res/drawable-xhdpi/web_close.png b/SdkProject/library/src/main/res/drawable-xhdpi/web_close.png
new file mode 100644
index 0000000..393cf17
--- /dev/null
+++ b/SdkProject/library/src/main/res/drawable-xhdpi/web_close.png
Binary files differ
diff --git a/SdkProject/library/src/main/res/layout/activity_main.xml b/SdkProject/library/src/main/res/layout/activity_main.xml
index 7b97e2b..ed0ebdb 100644
--- a/SdkProject/library/src/main/res/layout/activity_main.xml
+++ b/SdkProject/library/src/main/res/layout/activity_main.xml
@@ -5,8 +5,32 @@
     android:layout_height="match_parent">
 
     <FrameLayout
-        android:id="@+id/unity_view"
+        android:id="@+id/unityContainer"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        android:layout_centerInParent="true" />
+
+    <RelativeLayout
+        android:id="@+id/webContainer"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerInParent="true">
+
+        <WebView
+            android:id="@+id/webView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true" />
+
+        <ImageButton
+            android:id="@+id/btnWebClose"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignEnd="@id/webView"
+            android:layout_alignTop="@id/webView"
+            android:background="@drawable/web_close" />
+
+    </RelativeLayout>
+
 
 </RelativeLayout>
\ No newline at end of file

--
Gitblit v1.8.0