AndroidStudio加載網頁遊戲的方法
網頁遊戲可以實作PC端的加載,如何将網頁遊戲變為手機端的遊戲,通過以下方式實作。
①建立一個Activity,在布局中添加webview控件,加載顯示網頁,在Activity中編寫代碼
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
webView = findViewById(R.id.webView);//加載控件
initWebView(webView);//初始化方法
webView.loadUrl(GameURL);//加載網頁
private void initWebView(final WebView webView) {
webView.getSettings().setJavaScriptEnabled(true);
// 設定可以支援縮放
webView.getSettings().setSupportZoom(true);
webView.getSettings().setUseWideViewPort(true);
//自适應螢幕
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadURL(url);
return true;
}
});
②将編寫好的網頁遊戲(例如construct制作的遊戲)導出,目錄複制到assets的一個檔案中,如圖所示,檔案名可以修改。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2YjN0IDNwATM1ITNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
③在Activity中找到該檔案,getResources().getAssets().open()的方式加載,代碼如下
InputStream is = null;
String substring = request.substring(GameURL.length());//GameURL遊戲的位址
if (substring == null || substring.length() <= 1) {
substring = "/index.html";
}
try {
AssetManager am = getResources().getAssets();
String prefix = "stickman1_export";//遊戲存放的檔案夾名
is = am.open(prefix + substring);//打開檔案夾
WebResourceResponse res = new WebResourceResponse(contentType(substring), "utf-8", is);
return res;
} catch (FileNotFoundException e) {
Log.e(TAG, "", e);
} catch (Throwable e) {
Log.e(TAG, "", e);
}
④在AndroidManifest 中添權重限:<uses-permission android:name="android.permission.INTERNET"/>
<manifest>
<uses-permission android:name="android.permission.INTERNET"/>
<application
</application>
</manifest>
完整代碼如下:
public class MainActivity extends Activity {
private WebView webView = null;
private String GameURL = "http://127.0.0.1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
initWebView(webView);
webView.loadUrl(GameURL);
}
private void initWebView(final WebView webView) {
webView.getSettings().setJavaScriptEnabled(true);
// 設定可以支援縮放
webView.getSettings().setSupportZoom(true);
webView.getSettings().setUseWideViewPort(true);
//自适應螢幕
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadURL();
return true;
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String request) {
if (request.startsWith(GameURL)) {
InputStream is = null;
String substring = request.substring(GameURL.length());//GameURL遊戲的位址
if (substring == null || substring.length() <= 1) {
substring = "/index.html";
}
try {
AssetManager am = getResources().getAssets();
String prefix = "stickman1_export";//遊戲存放的檔案夾名
is = am.open(prefix + substring);//打開檔案夾
WebResourceResponse res = new WebResourceResponse(contentType(substring), "utf-8", is);
return res;
} catch (FileNotFoundException e) {
Log.e(TAG, "", e);
} catch (Throwable e) {
Log.e(TAG, "", e);
}
}
return super.shouldInterceptRequest(view, request);
}
});
}