Android之WebView控制項簡單使用總結

來源:互聯網
上載者:User

標籤:

1.直接通過URL網址開啟網頁顯示內容:loadUrl()
  • 首先在布局中寫一個WebView的控制項
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.ygd.jreduch09.WebViewActivity">    <Button        android:id="@+id/bt"        android:layout_alignParentRight="true"        android:text="轉到"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <EditText        android:id="@+id/et"        android:layout_toLeftOf="@+id/bt"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <WebView        android:id="@+id/wv"        android:layout_below="@+id/et"        android:layout_width="match_parent"        android:layout_height="match_parent">    </WebView></RelativeLayout>
  • 然後在Activity中對WebView進行設定
public class WebViewActivity extends AppCompatActivity {    private WebView wv;    private EditText et;    private Button bt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_web_view);        wv= (WebView) findViewById(R.id.wv);        et= (EditText) findViewById(R.id.et);        bt= (Button) findViewById(R.id.bt);        bt.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String url="http://"+et.getText().toString();                WebSettings settings=wv.getSettings();  //擷取WebSetting對象                settings.setJavaScriptEnabled(true);    //設定是否支援JavaScript                settings.setSupportZoom(true);  //設定是否支援縮放                settings.setDisplayZoomControls(true);  //設定內建縮放控制                wv.setWebViewClient(new WebViewClient());   //使用WebViewClient作為用戶端                wv.loadUrl(url); //開啟一個頁面            }        });    }}
  • 如下:
2.使用WebView載入Html代碼:loadDataWithBaseURL()
  • 首先還是在布局中寫一個WebView的控制項(同上)
  • 然後將html代碼連成字串,調用該方法
public class WebViewHtmlActivity extends AppCompatActivity {    private WebView wv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_web_view_html);        wv= (WebView) findViewById(R.id.wv);        StringBuilder sbd=new StringBuilder();  //此處盡量使用StringBuilder        sbd.append("<html>");        sbd.append("<head><title>載入HTML</title></head>");        sbd.append("<body>");        sbd.append("<h1>大標題</h1>");        sbd.append("<ul>");        sbd.append("<li>無序列表ul標籤</li>");        sbd.append("</ul>");        sbd.append("<ol>");        sbd.append("<li>嵌套li標籤</li>");        sbd.append("</ol>");        sbd.append("</body>");        sbd.append("</html>");        wv.loadDataWithBaseURL(null,sbd.toString(),"text/html","utf-8",null);    }}
  • 效果如下:
3.Android與JS相互調用(同時重寫WebChromeClient()來顯示載入進度)
  • 寫好一個Html檔案放入項目的assets目錄中(沒有則在位置建立)

  • Html代碼如下:

<html><head>    <title>我的第一個網頁</title>    <script>        function test(){            var a=1;            var b=‘星期‘;            alert(b+a);        }    </script><body><h1>大標題</h1><ul>    <li>你好</li>    <li>世界</li>    <li>哈哈</li></ul><input type="button" onclick="test()" value="點擊我"></body></head></html>
  • 主函數代碼如下:
public class LoadHtmlActivity extends AppCompatActivity {    private WebView wv;    private Button bt1,bt2;    private ProgressBar progressBar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_load_html);        wv= (WebView) findViewById(R.id.wv);        bt1= (Button) findViewById(R.id.bt1);        bt2= (Button) findViewById(R.id.bt2);        progressBar= (ProgressBar) findViewById(R.id.pb);        WebSettings settings=wv.getSettings();        settings.setJavaScriptEnabled(true);        wv.setWebChromeClient(new MyClient());        wv.setWebViewClient(new WebViewClient());        wv.loadUrl("file:///android_asset/1.html"); //asset不用加s//        wv.loadUrl("http://www.baidu.com");        bt1.setOnClickListener(new View.OnClickListener() { //通過布局的button來調用html中的方法            @Override            public void onClick(View v) {                wv.loadUrl("file:///android_asset/1.html");                wv.loadUrl("javaScript:test()");            }        });        bt2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                progressBar.setVisibility(View.VISIBLE);                wv.loadUrl("http://www.baidu.com");            }        });    }    public class MyClient extends WebChromeClient{        @Override        public void onProgressChanged(WebView view, int newProgress) {            super.onProgressChanged(view, newProgress);            if(newProgress==100){                progressBar.setVisibility(View.GONE);            }        }    }}

Android之WebView控制項簡單使用總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.