webview載入網頁和assets的html檔案
阿新 • • 發佈:2019-01-29
效果
程式碼
package com.fe.statuslayout; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView;import android.webkit.WebViewClient; import android.widget.Button; /** * Created by Administrator on 2017/3/6 0006. * webview載入網頁和assets的html檔案 */ public class MainTwo extends AppCompatActivity implements View.OnClickListener { private Toolbar tb_bar; private Button get; private WebView webview; private String path = "http://www.baidu.com"; private Button html; private Button assets_html; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_two); initView(); initToolBar(); } private voidinitToolBar() { //Toast.makeText(this, "1", Toast.LENGTH_SHORT).show(); //Toast.makeText(this, "2", Toast.LENGTH_SHORT).show(); tb_bar.setTitle("Status"); tb_bar.setTitleTextColor(Color.WHITE); tb_bar.inflateMenu(R.menu.base_toolbar_menu); } private void initView() { tb_bar = (Toolbar) findViewById(R.id.tb_bar); get = (Button) findViewById(R.id.get); get.setOnClickListener(this); webview = (WebView) findViewById(R.id.webview); webview.setOnClickListener(this); html = (Button) findViewById(R.id.html); html.setOnClickListener(this); assets_html = (Button) findViewById(R.id.assets_html); assets_html.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.get: //載入網頁 webview.loadUrl(path); //webview預設使用第三方瀏覽器開啟網頁。 //設定webview自己展示網頁 webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); break; case R.id.html: //載入html StringBuilder sb = new StringBuilder(); //拼接一段HTML程式碼 sb.append("<html>"); sb.append("<head>"); sb.append("<title>歡迎你</title>"); sb.append("</head>"); sb.append("<body>"); sb.append("<h2>歡迎你訪問<a href=\"http://www.crazyit.org\">" + "瘋狂Java聯盟</a></h2>"); sb.append("</body>"); sb.append("</html>"); //使用簡單的loadData方法會導致亂碼,可能是Android API的Bug //webview.loadData(sb.toString(), "text/html", "utf-8"); webview.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8", null); break; case R.id.assets_html: //載入assets目錄下的html //加上下面這段程式碼可以使網頁中的連結不以瀏覽器的方式開啟 webview.setWebViewClient(new WebViewClient()); webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);//滾動條風格,為0指滾動條不佔用空間,直接覆蓋在網頁上 //得到webview設定 WebSettings webSettings = webview.getSettings(); //允許使用javascript webSettings.setJavaScriptEnabled(true); //設定字元編碼 webSettings.setDefaultTextEncodingName("UTF-8"); //支援縮放 webSettings.setSupportZoom(true); webSettings.setBuiltInZoomControls(true); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); //將WebAppInterface與javascript繫結 //webview.addJavascriptInterface(new PaymentJavaScriptInterface(),"Android"); //android assets目錄下html檔案路徑url為 file:///android_asset/profile.html String url = "file:///android_asset/" + "css_three.html"; webview.loadUrl(url); break; } } /*private class PaymentJavaScriptInterface { }*/ }
assets目錄
佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/tb_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/Theme.ToolBar.Base"/> <Button android:id="@+id/get" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="載入網頁"/> <Button android:id="@+id/html" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="載入html"/> <Button android:id="@+id/assets_html" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="載入assets目錄下的html"/> <WebViewandroid:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
AndroidManifest.xml
<!--網路許可權--> <uses-permission android:name="android.permission.INTERNET"/>
。。。