天天看點

webview加載html跳轉,WebView加載網頁(二)

WebView加載網頁(二)

一、實作目标

1、實作一個頁面activity_main.xml,該頁面上面有一個TextView和兩個WebView,一個WebView顯示百度首頁,另一個WebView顯示另外一個網站的首頁。

二、步驟

1、建立項目

使用Android Studio建立一個項目

2、制作頁面activity_main.xml

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="3"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

android:textSize="30sp"/>

android:layout_width="match_parent"

android:background="#030303"

/>

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="5"

android:id="@+id/webview1"

>

android:layout_width="match_parent"

android:background="#030303"

/>

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="5"

android:id="@+id/webview2"

>

效果如下:

webview加載html跳轉,WebView加載網頁(二)

3、修改MainActivity.java

package cn.qiu.test03;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.webkit.WebViewClient;

public class MainActivity extends Activity {

private WebView webView1;

private WebView webView2;

private ProgressDialog pDialog;

private long exitTime = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init_webview1();

init_webview2();

}

private void init_webview1(){

webView1 = (WebView) findViewById(R.id.webview1);

webView1.setWebViewClient(new WebViewClient() {

//設定在webView點選打開的新網頁在目前界面顯示,而不跳轉到新的浏覽器中

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

webView1.getSettings().setJavaScriptEnabled(true); //設定WebView屬性,運作執行js腳本

webView1.loadUrl("https://www.baidu.com/"); //調用loadUrl方法為WebView加傳入連結接

webView1.setWebViewClient(new WebViewClient(){ //

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

try{

if(url.startsWith("baiduboxapp://")||url.startsWith("baiduboxlite://")){

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

startActivity(intent);

return true;

}

}catch (Exception e){

return false;

}

webView1.loadUrl(url);

return true;

}

});

//setContentView(webView); //調用Activity提供的setContentView将webView顯示出來

//頁面加載的進度

webView1.setWebChromeClient(new WebChromeClient(){

@Override

public void onProgressChanged(WebView view, int newProgress) {

//newProgress為1~100之間的整數

if(newProgress==100){

//網頁加載完畢,關閉ProgressDialog

closeDialog();

}else{

//網頁正在加載,打開ProgressDialog

openDialog(newProgress);

}

}

private void closeDialog() {

//進度條不為空并且顯示有進度條時

if(pDialog!=null&&pDialog.isShowing()){

pDialog.dismiss();//進度條取消顯示

pDialog=null;//并且進度條設定為空

}

}

private void openDialog(int newProgress) {

//進度條為空時

if (pDialog==null){

pDialog=new ProgressDialog(MainActivity.this);

pDialog.setTitle("正在加載...");

//進度條的樣式

pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pDialog.setProgress(newProgress);//顯示進度條的進度

pDialog.show();//顯示進度條

}else {

pDialog.setProgress(newProgress);//顯示最新(重新整理)的進度

}

}

});

}

private void init_webview2(){

webView2 = (WebView) findViewById(R.id.webview2);

webView2.setWebViewClient(new WebViewClient() {

//設定在webView點選打開的新網頁在目前界面顯示,而不跳轉到新的浏覽器中

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

webView2.getSettings().setJavaScriptEnabled(true); //設定WebView屬性,運作執行js腳本

webView2.loadUrl("https://blog.csdn.net/"); //調用loadUrl方法為WebView加傳入連結接

webView2.setWebViewClient(new WebViewClient(){ //

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

try{

if(url.startsWith("baiduboxapp://")||url.startsWith("baiduboxlite://")){

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

startActivity(intent);

return true;

}

}catch (Exception e){

return false;

}

webView2.loadUrl(url);

return true;

}

});

//setContentView(webView); //調用Activity提供的setContentView将webView顯示出來

//頁面加載的進度

webView2.setWebChromeClient(new WebChromeClient(){

@Override

public void onProgressChanged(WebView view, int newProgress) {

//newProgress為1~100之間的整數

if(newProgress==100){

//網頁加載完畢,關閉ProgressDialog

closeDialog();

}else{

//網頁正在加載,打開ProgressDialog

openDialog(newProgress);

}

}

private void closeDialog() {

//進度條不為空并且顯示有進度條時

if(pDialog!=null&&pDialog.isShowing()){

pDialog.dismiss();//進度條取消顯示

pDialog=null;//并且進度條設定為空

}

}

private void openDialog(int newProgress) {

//進度條為空時

if (pDialog==null){

pDialog=new ProgressDialog(MainActivity.this);

pDialog.setTitle("正在加載...");

//進度條的樣式

pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pDialog.setProgress(newProgress);//顯示進度條的進度

pDialog.show();//顯示進度條

}else {

pDialog.setProgress(newProgress);//顯示最新(重新整理)的進度

}

}

});

}

}

4、在AndroidManfest.xml中加入上網權限

三、測試

運作程式,顯示效果如下: