WebView
来源:互联网 发布:联想数据恢复中心 编辑:程序博客网 时间:2024/06/05 08:06
第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
//webview加载页面优先使用缓存加载
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
public class MainActivity extends AppCompatActivity { private WebView webView; private ProgressDialog progressDialog; private String url="http://www.baidu.com"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView= (WebView) findViewById(R.id.webview); /*加载本地资源 webView.loadUrl("file:///android_asset/example.html");*/ //加载Web资源 //启用J支持avaScript WebSettings settings=webView.getSettings(); settings.setJavaScriptEnabled(true); webView.loadUrl(url); webView.setWebViewClient(new WebViewClient(){ //WebView默认通过第三方或者是系统浏览器打开网页的行为,使得网页可以在WebView中打开 public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { //返回值是TRUE的时候控制网页在WebView中打开,如果为FALSE则调用第三方浏览器或者系统浏览器去打开 view.loadUrl("http://www.baidu.com"); return true; } //WebViewClient帮助WebView去处理一些页面控制和请求通知 }); // webView.loadUrl(url); //webview加载页面优先使用缓存加载 settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { //newProgress1-100的整数 if (newProgress==100){ //网页加载完毕 closeDialog(); } else{ //网页正在加载 openDialog(newProgress); } } }); } private void closeDialog() { if(progressDialog!=null&&progressDialog.isShowing()){ progressDialog.dismiss(); progressDialog=null; } } private void openDialog(int newProgress) { if (progressDialog==null){ progressDialog=new ProgressDialog(MainActivity.this); progressDialog.setTitle("正在加载"); progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL); progressDialog.setProgress(newProgress); progressDialog.show(); } else { progressDialog.setProgress(newProgress); } } //改写物理按钮--返回的逻辑 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_BACK){ if (webView.canGoBack()){ webView.goBack();//返回上一页面 return true; } else{ System.exit(0);//退出程序 } } return super.onKeyDown(keyCode, event); }}
阅读全文
0 0
- WebView
- WebView
- WebView
- webView
- webView
- webview
- webview
- WebView
- webview
- webview
- webview
- WebView
- webView
- webview
- webView
- webview
- WebView
- WebView
- NOIP卡常数技巧
- Linux网络基础及其配置
- The Battle of Chibi HDU
- O(1)计算一个二进制数1的个数以及反转一个二进制数
- Knouckout options绑定
- WebView
- 框架和面板的应用
- Django API Post 403 FORBIDDEN
- U3D基础教程重读 基础编辑和导入文件
- C++异常机制:引用原因与使用原则
- U3D角色动画
- 查看webpack打包后的js报错位置
- 适配 iOS 11 & iPhone X
- C++ SharedPtr 智能指针操作二维数组的细节异同