使用WebView自定义加载网页
2016-01-01 15:47
597 查看
通过Intent调用系统浏览器
Uri uri = Uri.parse(url);//url为你要链接的地址
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
使用WebView自定义加载网页
(1)、将webView加入自己的应用
(2)、使用WebView加载页面
(3)、获取网络访问权限
(4)、在WebView中使用javascript
(5)、处理也页面导航
(6)、后退与前进
(7)、判断页面加载过程
(8)、WebView缓存的应用
注意:使页面获取焦点:webview.requestFocus();//响应事件
loadUrl();
——加载本地资源:assets中的"file:///android_asset/xx.html"
——加载web资源:loadUrl("rul")
——默认的是浏览器打开
使用自定义webview打开实现:
——覆盖第三方、默认的浏览器:
——setWebViewClient(new WebViewClient());实现WebViewClient里面
shouldOverrideUrlLoading(WebView view, String url)方法
——这里返回true是控件webview打开、false系统调用浏览器打开(第三方)
在webview的web界面中使用Javascript
在webview启用Javascript通过Websettings来启用它
通过webview.getSettings()来获取Websettings的对象
通过setJavaScriptEnabled()来启用Javascript。
Websettins setings=web.getSettings();——外部设置
settings.setJavaScriptEnabled(true);
//true允许使用JavaScript脚本:false则相反
页面的后退与前进处理:
前提:当你的Webview覆盖率Url加载,他会自动生成历史访问记录。
——改写物理按键的逻辑
——你可以通过goBack()或goForward()向前向后访问以访问过的站点
public boolean onKeyDown(int keyCode,keyEvent event )
{//如果按下的按钮等于“返回键”
if(keyCode==keyEvent.KEYCODE_BACK&&webview.canGoBack()){
webview.goBack();//返回上一个页面
return true;
}else{System.exit(0);//退出程序}
}
判断页面加载进度:
Webview .setWebChromeClient(new WebChromeClient){
重写WebChromeClient类中onProgressChanged();方法
方法中有一个int参数(1-100)代表当前进度
当进度为100关闭进度条;else打开进度条
}
解决webview速度——缓存:
webview加载页面优先加载缓存
优先使用缓存:settings.setCacheMode(WebSttings.LOAD_CACHE_ELSE_NETWORK);
不使用缓存:
使用WebView自定义加载网页的代码:
Uri uri = Uri.parse(url);//url为你要链接的地址
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
使用WebView自定义加载网页
(1)、将webView加入自己的应用
(2)、使用WebView加载页面
(3)、获取网络访问权限
(4)、在WebView中使用javascript
(5)、处理也页面导航
(6)、后退与前进
(7)、判断页面加载过程
(8)、WebView缓存的应用
注意:使页面获取焦点:webview.requestFocus();//响应事件
loadUrl();
——加载本地资源:assets中的"file:///android_asset/xx.html"
——加载web资源:loadUrl("rul")
——默认的是浏览器打开
使用自定义webview打开实现:
——覆盖第三方、默认的浏览器:
——setWebViewClient(new WebViewClient());实现WebViewClient里面
shouldOverrideUrlLoading(WebView view, String url)方法
——这里返回true是控件webview打开、false系统调用浏览器打开(第三方)
在webview的web界面中使用Javascript
在webview启用Javascript通过Websettings来启用它
通过webview.getSettings()来获取Websettings的对象
通过setJavaScriptEnabled()来启用Javascript。
Websettins setings=web.getSettings();——外部设置
settings.setJavaScriptEnabled(true);
//true允许使用JavaScript脚本:false则相反
页面的后退与前进处理:
前提:当你的Webview覆盖率Url加载,他会自动生成历史访问记录。
——改写物理按键的逻辑
——你可以通过goBack()或goForward()向前向后访问以访问过的站点
public boolean onKeyDown(int keyCode,keyEvent event )
{//如果按下的按钮等于“返回键”
if(keyCode==keyEvent.KEYCODE_BACK&&webview.canGoBack()){
webview.goBack();//返回上一个页面
return true;
}else{System.exit(0);//退出程序}
}
判断页面加载进度:
Webview .setWebChromeClient(new WebChromeClient){
重写WebChromeClient类中onProgressChanged();方法
方法中有一个int参数(1-100)代表当前进度
当进度为100关闭进度条;else打开进度条
}
解决webview速度——缓存:
webview加载页面优先加载缓存
优先使用缓存:settings.setCacheMode(WebSttings.LOAD_CACHE_ELSE_NETWORK);
不使用缓存:
使用WebView自定义加载网页的代码:
package zxx.webview; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; public class MainActivity extends Activity { WebView webview; ProgressBar mprogressbar; String Url = "http://2014.qq.com/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 通过默认的浏览器打开网页 // Uri uri = Uri.parse(Url);// 转换成为一标识符 // Intent mintent = new Intent(Intent.ACTION_VIEW, uri);// 通过intent打开默认浏览器 // startActivity(mintent); inti(); } public void inti() { webview = (WebView) findViewById(R.id.webView); webview.loadUrl("http://2014.qq.com/"); //覆盖第三方、默认的浏览器 webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //设置浏览方式 WebSettings webset=webview.getSettings(); webset.setJavaScriptEnabled(true);//true允许使用JavaScript脚本:false则相反 webset.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //显示网页加载进度; webview.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { // TODO Auto-generated method stub super.onProgressChanged(view, newProgress); if (newProgress==100) { //关闭进度条 } else { //打开进度条 } } }); } //网站重定向的原因要多次返回才会退出 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //判断是不是返回键并且webview能不能返回 if (keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()) { webview.goBack(); }else{ System.exit(0); } return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
相关文章推荐
- iOS 学习(Whereami)
- Android Studio安装、配置
- ios文件和文件夹NSFileManager类
- Android Studio快捷键每日一练(3)
- Android按钮单击事件的四种常用写法总结
- WebView 使用总结
- android中三种onClick事件的实现,与对比
- 淘宝适配iOS屏幕的方案
- android之shape基础
- iOS 使用ZipArchive压缩文件
- IOS下利用ziparchive解压缩zip文件
- Unity-Animator深入系列---StateMachineBehaviour状态机脚本学习
- Android开发之 Android应用程序详细解析
- CALayer - 3
- IOS生成二维码、扫二维码
- 假防病毒软件从电脑移植到了 Android 平台
- Swift 等同性判断 Hashable Equatable ==
- 移动端适配
- 一款基于Material Desgin设计的APP
- Android应用开发allowBackup敏感信息泄露的一点反思