H5代码封装成安卓App的原理即将网页通过WebView技术实现本地化展示,并对WebView进行安卓原生功能的扩展。下面是详细的介绍:
## WebView
WebView 开发步骤如下:
### 1. 添加WebView
在布局文件中添加一个 WebView。
```xml
android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` ### 2. 初始化WebView 在代码中实例化一个 WebView,并进行基本的配置和监听。 ```java WebView webView = (WebView) findViewById(R.id.webview); //设置支持JavaScript WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); //设置WebViewClient webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //设置WebChromeClient webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { //页面加载进度更新 } @Override public void onReceivedTitle(WebView view, String title) { //页面标题更新 } }); ``` ### 3. 加载网页 通过 WebView 对象的 loadUrl 方法加载网页。 ```java webView.loadUrl("http://www.example.com"); ``` ## 扩展原生功能 WebView 可以通过 JavaScript 和安卓原生代码进行交互,从而实现一些原生功能的扩展。 ### 1. JS调用安卓代码 在安卓代码中添加一个 JavaScript 接口。 ```java //安卓代码中添加JavaScript接口 public class WebAppInterface { private Context mContext; public WebAppInterface(Context context) { mContext = context; } @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } } //将JavaScript接口绑定到WebView中 webView.addJavascriptInterface(new WebAppInterface(this), "app"); ``` 在 JavaScript 代码中调用该接口。 ```javascript //JavaScript代码中调用安卓接口 app.showToast("Hello World!"); ``` ### 2. 安卓代码调用JS 在 JavaScript 代码中添加相应的函数或变量。 ```javascript //JavaScript代码中暴露函数或变量 function showAlert(msg) { alert(msg); } ``` 在安卓代码中通过 evaluateJavascript 方法调用该函数或变量。 ```java //在安卓代码中调用JS webView.evaluateJavascript("showAlert('Hello World!')", null); ``` 以上就是将H5代码封装成安卓App的基本原理和实现过程。在实际开发中,还需要注意一些安全问题,并根据具体需求扩展更多的原生功能。