Channel/Android/gtgame/debug/libs/library-debug-gtgame.aarBinary files differ
Channel/Android/gtgame/release/libs/library-release-gtgame.aarBinary files differ
Channel/Android/test/debug/libs/library-debug-test.aarBinary files differ
Channel/Android/test/release/libs/library-release-test.aarBinary files differ
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; //注册代理类 public static void registerProxy(Class<? extends GameActivityProxy> proxyClass) { @@ -20,6 +26,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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(); 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 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java
@@ -1,7 +1,9 @@ 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 { @@ -11,7 +13,12 @@ } @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); } } SdkProject/library/src/main/java/com/secondworld/sdk/utils/WebViewUtil.java
New file @@ -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和https协议开头的执行正常的流程 view.loadUrl(url); return true; } else { //其他的URL则会开启一个Acitity然后去调用原生APP 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); } } SdkProject/library/src/main/res/drawable-xhdpi/web_close.png
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>