lwb
2020-12-07 bf91971f45348d74b17a2077cf5fab92a553840b
9527 webview
8个文件已修改
2个文件已添加
162 ■■■■■ 已修改文件
Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/gtgame/release/libs/library-release-gtgame.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/test/debug/libs/library-debug-test.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/test/release/libs/library-release-test.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/utils/WebViewUtil.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/res/drawable-xhdpi/web_close.png 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/res/layout/activity_main.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
Binary files differ
Channel/Android/gtgame/release/libs/library-release-gtgame.aar
Binary files differ
Channel/Android/test/debug/libs/library-debug-test.aar
Binary files differ
Channel/Android/test/release/libs/library-release-test.aar
Binary 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) {
@@ -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();
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,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);
    }
}
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>