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