Android開發中如何實現本地網頁的加載。
1.Android項目如何創建assets文件夾
直接上圖
點擊finish即可
然後在該文件夾下面可以創建常規的js、css、img目錄。
2.加載本地網頁
在assets文件夾根目錄下面有index.html測試文件,那麼url應該這樣寫:
String url = "file:///android_asset/index.html";
調用代碼:
package com.xzy.loadlocalhtmldemo; import android.app.Activity; import android.os.Bundle; import android.view.View; /** * 從本地加載網頁 */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_load_webview).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url = "file:///android_asset/index.html"; WebViewActivity.startActivity(MainActivity.this, "title", url); } }); } }
其中webViewActivity可以作為一個通用加載類來使用,現在貼出代碼,代碼非常簡單,我們可以根據實際需求擴展個通用類。
package com.xzy.loadlocalhtmldemo; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; /** * webView */ public class WebViewActivity extends Activity { public static final String TAG = "WebViewActivity"; private ProgressBar mProgressBar; private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); initView(); initData(); } /** * 初始化視圖資源 */ private void initView() { mProgressBar = (ProgressBar) findViewById(R.id.web_progressBar); mWebView = (WebView) findViewById(R.id.web_wv); } /** * 加載初始數據 */ @SuppressLint("SetJavaScriptEnabled") protected void initData() { mProgressBar.setMax(100); WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportMultipleWindows(true); mWebView.setWebViewClient(new WebViewClient()); mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if (newProgress == 0) { mProgressBar.setVisibility(View.VISIBLE); } else if (newProgress == 100) { mProgressBar.setVisibility(View.GONE); } else { mProgressBar.setProgress(newProgress); } } }); Bundle bundle = getIntent().getExtras(); if (bundle != null) { String title = bundle.getString("title"); String url = bundle.getString("url"); //設置標題 //setTitleText(title); mWebView.loadUrl(url); } } /** * @param context 上下文 * @param title activity標題 * @param url 本地網頁url */ public static void startActivity(Context context, String title, String url) { if (TextUtils.isEmpty(url)) { return; } Intent intent = new Intent(context, WebViewActivity.class); intent.putExtra("title", title); intent.putExtra("url", url); context.startActivity(intent); } @SuppressLint("SetJavaScriptEnabled") @Override protected void onResume() { super.onResume(); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.onResume(); } @Override protected void onPause() { super.onPause(); mWebView.onPause(); } @Override protected void onStop() { super.onStop(); //掛在後臺 資源釋放 mWebView.getSettings().setJavaScriptEnabled(false); } @Override protected void onDestroy() { mWebView.setVisibility(View.GONE); mWebView.destroy(); super.onDestroy(); } }
代碼很簡單,就不再貼源代碼瞭。