首先是创建WebViewActivity.java文件:
1 public class WebViewActivity extends AppCompatActivity { 2 private WebView WVmain; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_web_view); 7 WVmain=findViewById(R.id.wv); 8 //加载本地Html,这是在main下创建new——>Folder——>AssetsFolder这样创建的文件,并把写好的html文件放在该目录下 9 //WVmain.loadUrl("file:///android_asset/test.html");//约定好的路径,千万注意别写错,是android_asset,没有加s,也要加android 10 //加载网络Url 11 WVmain.getSettings().setJavaScriptEnabled(true);//如果打不开网页的话加这句话就可以了,能打开,加上和不加这句话页面还是不太一样的,但是加上更好 12 WVmain.setWebViewClient(new MyWebViewClient()); 13 WVmain.setWebChromeClient(new MyWebChromeClient());//注意new后面的要和底下class的名称一样的,别写错 14 WVmain.loadUrl("https://m.baidu.com");//一般移动站点都需要加一个m. 15 } 16 17 class MyWebViewClient extends WebViewClient{ 18 @Override 19 public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 20 view.loadUrl(request.getUrl().toString()); 21 return true; 22 }//控制其不使用其他的浏览器加载,只使用当前浏览器加载 23 24 @Override 25 public void onPageStarted(WebView view, String url, Bitmap favicon) { 26 super.onPageStarted(view, url, favicon); 27 Log.d("WebView", "onPageStarted..."); 28 } 29 30 @Override 31 public void onPageFinished(WebView view, String url) { 32 super.onPageFinished(view, url); 33 Log.d("WebView", "onPageFinished..."); 34 //WVmain.loadUrl("javascript:alert('Hello!')");//在页面加载结束后弹出提示框 35 WVmain.evaluateJavascript("javascript:alert('Hello!')",null);//这个同样可以弹出对话框,效果相同 36 } 37 } 38 39 @Override 40 public boolean onKeyDown(int keyCode, KeyEvent event) { 41 if(keyCode==KeyEvent.KEYCODE_BACK&&WVmain.canGoBack()){//条件:返回键并且可以返回 42 WVmain.goBack(); 43 return true; 44 } 45 return super.onKeyDown(keyCode, event); 46 }//设置按手机底部返回键时,不是直接退回到activity页面,而是在浏览器中退回到上一级 47 48 class MyWebChromeClient extends WebChromeClient { 49 @Override 50 public void onProgressChanged(WebView view, int newProgress) { 51 super.onProgressChanged(view, newProgress); 52 }//显示进度条 53 54 @Override 55 public void onReceivedTitle(WebView view, String title) { 56 super.onReceivedTitle(view, title); 57 setTitle(title); 58 }//将当前网页的title设置为当前的title 59 } 60 }
然后对应的activity_web_view.xml文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent"> 4 5 <WebView 6 android:id="@+id/wv" 7 android:layout_width="match_parent" 8 android:layout_height="match_parent"/> 9 </LinearLayout>
加载本地html文件效果图:
加载网络url效果图:
使用方法使用当前网页的title作为title效果图: