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
  3     private String url = null;
  4     private WebView webView;
  5     private EditText et_url;
  6     private Button btn_login;
  7     private Button btn_back;
  8     private Button btn_exit;
  9     private Button btn_forward;
 10     private Button btn_menu;
 11
 12     @Override
 13     protected void onCreate(Bundle savedInstanceState) {
 14         super.onCreate(savedInstanceState);
 15         // 窗口进度条
 16         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
 17         setContentView(R.layout.fragment_main);
 18
 19         setProgressBarIndeterminate(true);
 20
 21         webView = (WebView) findViewById(R.id.webView);
 22         et_url = (EditText) findViewById(R.id.et_url);
 23         btn_login = (Button) findViewById(R.id.btn_login);
 24         btn_back = (Button) findViewById(R.id.btn_back);
 25         btn_exit = (Button) findViewById(R.id.btn_exit);
 26         btn_forward = (Button) findViewById(R.id.btn_forward);
 27         btn_menu = (Button) findViewById(R.id.btn_menu);
 28         // 对五个按钮添加点击监听事件
 29         btn_login.setOnClickListener(this);
 30         btn_back.setOnClickListener(this);
 31         btn_exit.setOnClickListener(this);
 32         btn_forward.setOnClickListener(this);
 33         btn_menu.setOnClickListener(this);
 34     }
 35
 36     // btn_login的触发事件 点击后 webView开始读取url
 37     protected void startReadUrl(String url) {
 38         // TODO Auto-generated method stub
 39         // webView加载web资源
 40         webView.loadUrl(url);
 41         // 覆盖webView默认通过系统或者第三方浏览器打开网页的行为
 42         // 如果为false调用系统或者第三方浏览器打开网页的行为
 43         webView.setWebViewClient(new WebViewClient() {
 44             @Override
 45             public boolean shouldOverrideUrlLoading(WebView view, String url) {
 46                 // TODO Auto-generated method stub
 47                 // webView加载web资源
 48                 view.loadUrl(url);
 49                 return true;
 50             }
 51         });
 52         // 启用支持javascript
 53         WebSettings settings = webView.getSettings();
 54         settings.setJavaScriptEnabled(true);
 55         // web加载页面优先使用缓存加载
 56         settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
 57         // 当打开页面时 显示进度条 页面打开完全时 隐藏进度条
 58         webView.setWebChromeClient(new WebChromeClient() {
 59             @Override
 60             public void onProgressChanged(WebView view, int newProgress) {
 61                 // TODO Auto-generated method stub
 62                 setTitle("本页面已加载" + newProgress + "%");
 63                 if (newProgress == 100) {
 64                     closeProgressBar();
 65                 } else {
 66                     openProgressBar(newProgress);
 67                 }
 68                 super.onProgressChanged(view, newProgress);
 69             }
 70         });
 71     }
 72
 73     // 打开进度条
 74     protected void openProgressBar(int x) {
 75         // TODO Auto-generated method stub
 76         setProgressBarIndeterminateVisibility(true);
 77         setProgress(x);
 78     }
 79
 80     // 关闭进度条
 81     protected void closeProgressBar() {
 82         // TODO Auto-generated method stub
 83         setProgressBarIndeterminateVisibility(false);
 84     }
 85
 86     // 改写物理按键 返回键的逻辑
 87     @Override
 88     public boolean onKeyDown(int keyCode, KeyEvent event) {
 89         // TODO Auto-generated method stub
 90         if (keyCode == KeyEvent.KEYCODE_BACK) {
 91             if (webView.canGoBack()) {
 92                 // 返回上一页面
 93                 webView.goBack();
 94                 return true;
 95             } else {
 96                 // 退出程序
 97                 finish();
 98             }
 99         }
100         return super.onKeyDown(keyCode, event);
101     }
102
103     // 对按钮事件的处理
104     @Override
105     public void onClick(View v) {
106         // TODO Auto-generated method stub
107         switch (v.getId()) {
108         case R.id.btn_login:
109             url = "http://" + et_url.getText().toString();
110             url = url.replace(" ", "");
111             startReadUrl(url);
112             break;
113         case R.id.btn_back:
114             if (webView.canGoBack()) {
115                 webView.goBack();
116             } else {
117                 finish();
118             }
119             break;
120         case R.id.btn_forward:
121             if (webView.canGoForward()) {
122                 webView.goForward();
123             }
124             break;
125         case R.id.btn_exit:
126             finish();
127             break;
128         case R.id.btn_menu:
129             startReadUrl("http://www.baidu.com");
130             break;
131         }
132     }
133 }
				
时间: 2024-10-12 19:56:54

Android攻城狮 WebView(显示网页)的相关文章

创业公司求IOS、Android攻城狮一枚

地点:北京CBD附近(地铁1号线大望路) 魅力值:送珍贵期权 你要会: 1. IOS或者Android开发 2.能够处理类似微视/秒拍的视频录制功能 3.熟悉json 4.做过第三方登录 5.爱学习 6.no zuo 7.工作经验不限 如果你适合,就别再犹豫,发简历到[email protected](饶先生),或者加TA QQ随便骚扰,TA正在求骚扰 创业公司求IOS.Android攻城狮一枚,布布扣,bubuko.com

Android攻城狮学习笔记-进阶篇一

第1章 AndroidManifest配置文件 第2章 使用ListView显示信息列表 第3章 使用DatePicker及TimePicker显示当前日期和时间 第4章 使用GridView以表格形式显示多张照片 第5章 使用Spinner实现下拉列表 第6章 使用ProgressBar实现进度条 第7章 使用WebView显示网页 第8章 Fragment基础 第9章 Fragment与Activity通信 第10章 使用ViewPager实现导航 第11章 使用ViewFilpper实现屏

Android:控件WebView显示网页

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要处理解析,渲染网页等浏览器做的事情 setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 WebViewClient就是帮助WebView处理各种通知.请求事件的. 在AndroidManifest.xml设置访问网络权限:

Android:控件WebView显示网页 -摘自网络

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要处理解析,渲染网页等浏览器做的事情 setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 WebViewClient就是帮助WebView处理各种通知.请求事件的. 在AndroidManifest.xml设置访问网络权限:

Android攻城狮 http协议

工作流程 一次HTTP操作称为一个事务,其工作过程可分为四步: 1. 首先客户端与服务器需要建立连接.只要单机某个超级链接,HTTP的工作就开始了. 2. 建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL).协议版本号,后边是MIME信号包括请求修饰符.客户端信息和其他内容. 3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号.一个成功或者失败的代码,后边是MIME信息包括服务器信息.实体信息和可能的内容. 4. 客户端接收到服务

Android攻城狮GridView(主菜单)

GridView布局文件声明GridViewjava里创建GridView 配置 1.准备数据源 2.新建适配器(SimpleAdapter) 3.GridView加载适配器 4.GridView配置监听器(OnItemClickListener) gridView实现过程: 1.准备数据源 dataList=new ArrayList<Map<String,Object>>(); 2.新建适配器(SimpleAdapter) adapter=new SimpleAdapter(t

Android攻城狮认识ContextMenu

什么是ContextMenu? 例如Windows系统的右键菜单,在Android中长按某个文件夹,会跳出菜单,这个菜单就是ContextMenu. ContextMenu与OptionMenu的区别 1. OptionMenu对应的是activity,一个activity只能拥有一个选项菜单: 2. ContextMenu对应的是View,每一个View都可以设置上下文菜单: 3. 一般情况下ContextMenu常用于ListView或者GridView. ContextMenu创建方法 首

Android攻城狮CheckBox&amp;RadioGroup&amp;AutoCompleteTextView&amp;MultiAutoCompleteTextView&amp;ToggleButton

给子类加构造函数Source----Generate constractor from superclass 跑马灯效果的实现(Textview 循环): 1.定义textView标签的4个属性: android:singleLine="true"//使其只能单行 android:ellipsize="marquee"//去掉省略号 android:focusable = "true"//得到焦点 android : focusableInTou

Android攻城狮属性动画赏析

1 import android.support.v7.app.ActionBarActivity; 2 import android.support.v7.app.ActionBar; 3 import android.support.v4.app.Fragment; 4 import android.animation.AnimatorSet; 5 import android.animation.ObjectAnimator; 6 import android.animation.Prop