WebView

WebViewWebView

 

 

 

首先是创建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文件效果图:

WebView


 加载网络url效果图:

WebView

 

 

使用方法使用当前网页的title作为title效果图:

WebView

 

上一篇:CentOS7 Failed to restart xxxx.service: Unit not found.解决办法 - 2021-09-17


下一篇:如何解决git上传文件出错 [rejected] cjp -> cjp (fetch first)error: failed to push some refs to