Android UI界面学习之WebView(网络视图)
2012-10-05 22:53
411 查看
Android中使用WebView来显示网页内容。使用WebView需要下面几个步骤:
1、在Android.manifest中添加访问互联网的权限:
首先要在manifest.main文件中创建一个webview,然后再activity中定义这个webview然后进行一下相关操作。
1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web pagenot available错误。
2、在要Activity中生成一个WebView组件:WebView webView = newWebView(this);
3、设置WebView基本信息:
如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法 shouldOverrideUrlLoading:对网页中超链接按钮的响应。
当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
5、如果访问的页面中有Javascript,则webview必须设置支持Javascript ,否则显示空白页面。
Java代码
webview.getSettings().setJavaScriptEnabled(true);
6、如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖webview的WebViewClient对象:
Java代码
1. mWebView.setWebViewClient(new WebViewClient(){
2. public boolean shouldOverrideUrlLoading(WebView view, String url) {
3. view.loadUrl(url);
4. return true;
5. }
6. });
上述方法告诉系统由我这个WebViewClient处理这个Intent,我来加载URL。点击一个链接的Intent是向上冒泡的,shouldOverrideUrlLoading方法return
true表示我加载后这个Intent就消费了,不再向上冒泡了。
7、如果不做任何处理,在显示你的Brower UI时,点击系统“Back”键,整个Browser会作为一个整体“Back"到其他Activity中,而不是希望的在Browser的历史页面中 Back。如果希望实现在历史页面中Back,需要在当前Activity中处理并消费掉该Back事件:
Java代码
1. public boolean onKeyDown(int keyCode, KeyEvent event) {
2. if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
3. mWebView.goBack();
4. return true;
5. }
6. return super.onKeyDown(keyCode, event);
7. }
对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写
onBackPressed 方法即可,代码如下
Java代码
@Override
1、public void onBackPressed()
{
2、 // 这里处理逻辑代码,该方法仅适用于2.0或更高版本的sdk
3、 return ;
4、}
这里还有几个知识点:
1)为了让WebView从apk文件中加载 assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的 Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的。
加上进度条:
webView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
}
);
1、在Android.manifest中添加访问互联网的权限:
首先要在manifest.main文件中创建一个webview,然后再activity中定义这个webview然后进行一下相关操作。
1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web pagenot available错误。
2、在要Activity中生成一个WebView组件:WebView webView = newWebView(this);
3、设置WebView基本信息:
如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法 shouldOverrideUrlLoading:对网页中超链接按钮的响应。
当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
5、如果访问的页面中有Javascript,则webview必须设置支持Javascript ,否则显示空白页面。
Java代码
webview.getSettings().setJavaScriptEnabled(true);
6、如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖webview的WebViewClient对象:
Java代码
1. mWebView.setWebViewClient(new WebViewClient(){
2. public boolean shouldOverrideUrlLoading(WebView view, String url) {
3. view.loadUrl(url);
4. return true;
5. }
6. });
上述方法告诉系统由我这个WebViewClient处理这个Intent,我来加载URL。点击一个链接的Intent是向上冒泡的,shouldOverrideUrlLoading方法return
true表示我加载后这个Intent就消费了,不再向上冒泡了。
7、如果不做任何处理,在显示你的Brower UI时,点击系统“Back”键,整个Browser会作为一个整体“Back"到其他Activity中,而不是希望的在Browser的历史页面中 Back。如果希望实现在历史页面中Back,需要在当前Activity中处理并消费掉该Back事件:
Java代码
1. public boolean onKeyDown(int keyCode, KeyEvent event) {
2. if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
3. mWebView.goBack();
4. return true;
5. }
6. return super.onKeyDown(keyCode, event);
7. }
对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写
onBackPressed 方法即可,代码如下
Java代码
@Override
1、public void onBackPressed()
{
2、 // 这里处理逻辑代码,该方法仅适用于2.0或更高版本的sdk
3、 return ;
4、}
这里还有几个知识点:
1)为了让WebView从apk文件中加载 assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的 Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的。
加上进度条:
webView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
}
);
相关文章推荐
- android学习日记15--WebView(网络视图)
- Android学习 (十五) 网络技术之WebView控件基础
- Android 学习笔记之网络通信基础+WebView....
- 步步为营_Android开发课[35]_用户界面之WebView(网络视图)
- android用户界面-组件Widget-网络视图WebView
- 安卓学习笔记---完美解决Android的WebView加载失败(404,500),显示的自定义视图
- Android设计之UI篇(WebView网络视图)
- Android—UI篇—WebView(网络视图)
- android用户界面-组件Widget-网络视图WebView
- Android---UI篇---WebView(网络视图)
- Android强大的网络视图(WebView)
- Android UI控件系列:WebView(网络视图)
- Android开发实践(三)WebView(网络视图)使用实例
- 玩转Android---UI篇---WebView(网络视图)
- Android 进阶学习:Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- android之webview无网络情况下简单处理
- Android中WebView拦截替换网络请求数据
- 【Android基础学习】带进度条的WebView 2
- Android开发学习笔记:浅谈WebView
- Android学习5--界面编程与视图(View)组件