Android之WebView的使用与简单浏览器

在要浏览网页的时候,第一种我们可以通过Intent来使用自带的浏览器,第二种可以通过WebView这个控件来浏览。

第一种很简单,直接看代码:

Uri uri = Uri.parse("http://www.baidu.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uri);
startActivity(launchBrowser);

第二种就稍微复杂点

首先我们要对WebView这个控件有一个XML布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

在OnCreate方法中加载这个控件,并设置一些参数:

webView = (WebView) findViewById(R.id.webView); //加载WebView
webView.getSettings().setJavaScriptEnabled(true); //设置设否支持JavaScript
webView.loadUrl("http://www.baidu.com/");  //加载地址
webView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
 	    return true;
      }
}); //设置浏览

如果要使用WebView来访问网络,则还需要一个权限:

<uses-permission android:name="android.permission.INTERNET"/>

这样,一个简单的访问web的小程序就做好了。

当然,简单的这样并不能满足,我们还需要加一点功能。。。

首先我们要对回退键进行一下处理:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if((keyCode == KeyEvent.KEYCODE_BACK)) {
        if(webView.canGoBack())
           webView.goBack();
        else
           finish();
        return true;
    }
    return false;
}

这样做的目的,是为了每次按回退键之后都返回到前一个页面,如果不这么做,就相当于回退一个activity,这个本身就一个activity,按回退之后就相当于把这个activity给销毁掉了,因此,要加上以上这些代码。

我们知道,浏览器的上方都有一个输入地址的地方,我们也给加上去,先修改一下XML布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/et_address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/webView"
        android:layout_toLeftOf="@+id/btn_go"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:id="@+id/btn_go"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="GO"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"/>

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/btn_go" />

</RelativeLayout>

多了个EditText和Button控件,对这两个控件作如下处理:

et_address = (EditText) findViewById(R.id.et_address);
et_address.setText("http://www.baidu.com/");
btn_go = (Button) findViewById(R.id.btn_go);
    btn_go.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String address = et_address.getText().toString();
        if(!address.startsWith("http://")) {
            address = "http://" + address;
        } // 如果不以http://开头,识别不了,所以判断
        webView.loadUrl(address);
        et_address.setText(address);
    }
});

好了,到此为止,一个普通的浏览器就完成了,当然WebView这个控件还有很多可以设置的属性,我就不一一介绍了。

The End~

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 14:09:15

Android之WebView的使用与简单浏览器的相关文章

Chromium on Android: Android L平台上WebView的变化及其对浏览器厂商的影响分析

摘要:Android L平台在图形渲染方面有一项重要的改进,它引入了一个专门的线程用于执行渲染工作,UI线程负责生成的显示列表(DisplayList),渲染线程负责重放(playback)这个显示列表绘制最终的内容,因此Chromium WebView在图形栈的实现方面也作了相应的调整,以支持Android L系统上新的渲染线程模型.本文将深度分析Chromium WebView的渲染流水线是如何无缝整合到Android L系统的渲染模型中,以及对目前市场主流浏览器厂商将会产生什么样影响等问题

android利用WebView实现浏览器的封装

android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 参考:http://developer.android.com/reference/android/webkit/WebView.html 效果如下: 上面两张图分别是首页的截图,当点击java时的截图.可以看到在浏览器上面已经没有地址栏了.这个是利用WebViewClient显示的内容.相关代码如下

Android使用WebView的简单使用

layout下 : webviewdemo.xml  文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="w

安卓开发_关于WebView使用链接时调用浏览器显示的问题

在我们的实际开发中,我们用到WebView就是为了在自己的APP中的某个部分来显示指定网页的效果. 但是在学习的过程中,我发现一个问题: 有的网页使用WebView控件显示出来以后,再点击网页中的某个链接,进入到下一个网页,它没有在APP中继续显示,而是要在手机浏览器中显示网址,这显示没有了良好的人机交互体验.(PS:这个问题有的网页是不出现的,本人没有大量测试,估计是我在Fragment中使用WebView的原因,在Activity中就没有这个问题,不管怎么样,加上相应的代码就可以了) 下面来

Android中WebView的相关使用

近期做的项目中,遇到个非常棘手的问题: 客户给我的数据是有限制的,因此,在返回某条详细页面内容的时候,他仅仅能给我一个html片段,里面包括 文字,图片以及附件的下载地址.假设网页模版规范的爱比較好说,可是他给我的数据中,不确定的因素非常多: 比方 可能没有图片,图片和文字穿插在一起,最为重要的是html便签他的嵌套层次和标签个数都是不确定的. 假设我採用解析html提取内容出来的话,预计就掉进坑里了....... 但实际情况中,打算server先将客户代码的标签属性删除,仅仅剩骨头,但结果还是

使用WebView视图显示网页-----迷你浏览器

Android提供了WebView组件,表面上来看,这个组件与普通ImageView差不多,但实际上,这个组件的功能要强大得多,WebView组件本身就是一个浏览器实现,它的内核基于开源WebKit引擎.如果我们对WebView进行一些美化.包装,可以非常轻松地开发出自己的浏览器. WebView的用法与普通ImageView组件的用法基本相似,它提供了大量方法来执行浏览器操作: 1.void  goBack():后退. 2.void  goForward():前进. 3.void  loadU

Android Chromium WebView学习启动篇

Android从4.4起提供基于Chromium实现的WebView.此前WebView基于WebKit实现.WebKit提供网页解析.布局和绘制以及JS运行等基础功能.Chromium在WebKit基础上为WebView提供进程.线程和渲染等基础构架.因此基于Chromium实现的WebView更好地提供了网页浏览功能.从本文开始我们启动对Android Chromium WebView的学习. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 学习Web

Android与WebView的同步和异步访问机制

大家都知道,通过WebView,我们可以在Android客户端,用Web开发的方式来开发我们的应用. 如果一个应用就是单纯一个WebView,所有的逻辑都只需要在网页上交互的话,那我们其实就只需要通过html和javascript来跟服务器交互就可以了. 但是很多情况下,我们的应用不是单纯一个WebView就可以了,有可能会需要运用到Android本身的应用,比如拍照,就需要调用Android本身的照像机等,要产生震动,在需要运用到手机特性的一些场景下,肯定需要这么一套机制在javascript

浅谈Android之webView及交互

记得有一段时间安卓的webview挺火的,很多都喜欢用h5来开发页面.不过相对于原声安卓,webview的缺点显而易见,慢,耗电,用户体验不好.或许对开发人员还好,因为可以跨平台(ios,安卓都能用),而且开发难度也不是很大.安卓本身的webview是基于webkit浏览器的,而如果用过支付宝或者微信其实就能发现,他们肯定是进行了很多改进,把网页一下拉就能看到xxx提供技术支持. 下面这段代码介绍了webview的简单用法,以及如何通过安卓通过post方法去访问一个webview. import