少年辛苦终身事,莫向光阴惰寸功。这篇文章主要讲述Android攻城狮 WebView(显示网页)相关的知识,希望能为你提供帮助。
使用WebView在界面中显示网页 通过Intent调用系统浏览器 Uri uri=Uri.parse(url); //url为链接的地址 Intent intent=new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); ----------------------------- 课程目标:通过WebView自制一个简易网页浏览器 课程内容: (1)将WebView加入到你的应用 (2)使用WebView加载页面 (3)获取网络访问权限(在androidManifest中配置) (4)在WebView中使用javascript (5)处理页面加载进程 (6)后退与前进 (7)判断页面的加载过程 (8)WebView缓存的运用(对浏览器的优化)
要在应用中加入WbeView,只需要在你的活动布局中加入< WebView> 元素即可 < WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" /> 加载页面,使用 loadUrl() web资源: webView.loadUrl("http://www.baidu.com") 本地资源: webView。loadUrl("file:///android_asset/xxx.html"); 本地文件放在asset文件中//使页面获得焦点 webView.requestFocus(); ------------------------ 获取网络访问权限 在它有效工作之前,要保证应用能访问网络。要访问网络,需要在配置文件中获取INTERNET权限: < manifest ...> < uses_permission android:name="android.permission.INTERNET" /> ... < /manifest>
在WebView中使用javaScript 如果想在webView中加载的web页面使用JavaScript,需要在WebView中启用JavaScript,通过WebView带有的WebSettings来启用它。可以通过getSettings()获取WebSettings的值,然后通过setJavaScriptEnabled()来启用JavaScript。 webView=(WebView)findViewById(R.id.webView); WebSettings webSettings = webView.getSettings();
我们使用 Toast()来显示当前页面的地址。 在网页上点击退回时,可能因为网页自身存在请求重定向,所以可能已经跳转了好几个页面,这时我们需要连续点击返回键才能真正退出程序。 //改写物理按键——返回的逻辑 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode== KeyEvent.KEYCODE_BACK){ //KeyEvent.KEYCODE_BACK是常量,KeyEvent还有很多其他常量 Toast.makeText(this, webView.getUrl(), Toast.LENGTH_SHORT).show(); //显示地址 if(webView.canGoBack()){//如果可以返回,就返回上一页面 webView.goBack(); return true; } else{//不能返回,说明已经是首页了,所以就退出程序 System.exit(0); //退出 } } return super.onKeyDown(keyCode, event); }
webSettings.setJavaScriptEnabled(true);
1 public class MainActivity extends Activity implements OnClickListener { 2 3private String url = null; 4private WebView webView; 5private EditText et_url; 6private Button btn_login; 7private Button btn_back; 8private Button btn_exit; 9private Button btn_forward; 10private Button btn_menu; 11 12@Override 13protected void onCreate(Bundle savedInstanceState) { 14super.onCreate(savedInstanceState); 15// 窗口进度条 16requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 17setContentView(R.layout.fragment_main); 18 19setProgressBarIndeterminate(true); 20 21webView = (WebView) findViewById(R.id.webView); 22et_url = (EditText) findViewById(R.id.et_url); 23btn_login = (Button) findViewById(R.id.btn_login); 24btn_back = (Button) findViewById(R.id.btn_back); 25btn_exit = (Button) findViewById(R.id.btn_exit); 26btn_forward = (Button) findViewById(R.id.btn_forward); 27btn_menu = (Button) findViewById(R.id.btn_menu); 28// 对五个按钮添加点击监听事件 29btn_login.setOnClickListener(this); 30btn_back.setOnClickListener(this); 31btn_exit.setOnClickListener(this); 32btn_forward.setOnClickListener(this); 33btn_menu.setOnClickListener(this); 34} 35 36// btn_login的触发事件 点击后 webView开始读取url 37protected void startReadUrl(String url) { 38// TODO Auto-generated method stub 39// webView加载web资源 40webView.loadUrl(url); 41// 覆盖webView默认通过系统或者第三方浏览器打开网页的行为 42// 如果为false调用系统或者第三方浏览器打开网页的行为 43webView.setWebViewClient(new WebViewClient() { 44@Override 45public boolean shouldOverrideUrlLoading(WebView view, String url) { 46// TODO Auto-generated method stub 47// webView加载web资源 48view.loadUrl(url); 49return true; 50} 51}); 52// 启用支持javascript 53WebSettings settings = webView.getSettings(); 54settings.setJavaScriptEnabled(true); 55// web加载页面优先使用缓存加载 56settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 57// 当打开页面时 显示进度条 页面打开完全时 隐藏进度条 58webView.setWebChromeClient(new WebChromeClient() { 59@Override 60public void onProgressChanged(WebView view, int newProgress) { 61// TODO Auto-generated method stub 62setTitle("本页面已加载" + newProgress + "%"); 63if (newProgress == 100) { 64closeProgressBar(); 65} else { 66openProgressBar(newProgress); 67} 68super.onProgressChanged(view, newProgress); 69} 70}); 71} 72 73// 打开进度条 74protected void openProgressBar(int x) { 75// TODO Auto-generated method stub 76setProgressBarIndeterminateVisibility(true); 77setProgress(x); 78} 79 80// 关闭进度条 81protected void closeProgressBar() { 82// TODO Auto-generated method stub 83setProgressBarIndeterminateVisibility(false); 84} 85 86// 改写物理按键 返回键的逻辑 87@Override 88public boolean onKeyDown(int keyCode, KeyEvent event) { 89// TODO Auto-generated method stub 90if (keyCode == KeyEvent.KEYCODE_BACK) { 91if (webView.canGoBack()) { 92// 返回上一页面 93webView.goBack(); 94return true; 95} else { 96// 退出程序 97finish(); 98} 99} 100return super.onKeyDown(keyCode, event); 101} 102 103// 对按钮事件的处理 104@Override 105public void onClick(View v) { 106// TODO Auto-generated method stub 107switch (v.getId()) { 108case R.id.btn_login: 109url = "http://" + et_url.getText().toString(); 110url = url.replace(" ", ""); 111startReadUrl(url); 112break; 113case R.id.btn_back: 114if (webView.canGoBack()) { 115webView.goBack(); 116} else { 117finish(); 118} 119break; 120case R.id.btn_forward: 121if (webView.canGoForward()) { 122webView.goForward(); 123} 124break; 125case R.id.btn_exit: 126finish(); 127break; 128case R.id.btn_menu: 129startReadUrl("http://www.baidu.com"); 130break; 131} 132} 133 }
【Android攻城狮 WebView(显示网页)】
推荐阅读
- Android+GPS轨迹跟踪器
- 文件上传时,上传到webapps目录下的文件会自动删除
- [Android&amp;Java]浅谈设计模式-代码篇(观察者模式Observer)
- 红米note3刷安卓原生
- B. Apple Tree暴力 + 数学
- 如何配置android的adb环境变量
- 转载Android 关于arm64-v8aarmeabi-v7aarmeabix86下的so文件兼容问题
- Android图片处理(识别图像方向并显示)
- Android开机自动运行APP——BroadcastReceiver