Android控件webview使用

来源:互联网 发布:印度军事实力 知乎 编辑:程序博客网 时间:2024/06/01 08:12

先来看下webview在一些App当中的应用实例,类似网易 今日头条等新闻类APP中基本都有用到,可以看到顶部栏中间显示的链接是网页链接

     


    接下来我们就来看下webview究竟如何使用

    思路:1.我们希望使用当前程序来加载webview页面,而不是通过使用Android系统默认浏览器加载页面。需要实现                                      setWebViewClient()方法,重写其shouldOverrideUrlLoading(WebView view, String url)方法来实现页面加载

2.实现类似上面导航栏效果,导航栏中间展示网页链接或者网页名称。通过setWebChromeClient()方法,重写                             其onReceivedTitle(WebView view, String title)方法


    具体代码

    配置文件MainActivity.xml

<span style="font-size:14px;"><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">    <RelativeLayout        android:id="@+id/rl_container"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <Button            android:id="@+id/btn_return"            android:layout_width="wrap_content"            android:layout_height="40dip"            android:text="@string/title_return"            android:layout_alignParentLeft="true"/>        <TextView            android:id="@+id/tv_title"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:ellipsize="end"/>        <Button            android:id="@+id/btn_refresh"            android:layout_width="wrap_content"            android:layout_height="40dip"            android:text="@string/title_refresh"            android:layout_alignParentRight="true"/>    </RelativeLayout>    <WebView        android:id="@+id/webView"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@id/rl_container"/></RelativeLayout></span>
    

    MainActivity中

<span style="font-size:14px;">public class MainActivity extends ActionBarActivity {    private WebView webView;    private Button returnButton,refreshButton;    private TextView titleTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        titleTextView= (TextView) findViewById(R.id.tv_title);        returnButton= (Button) findViewById(R.id.btn_return);        refreshButton= (Button) findViewById(R.id.btn_refresh);        webView= (WebView) findViewById(R.id.webView);       <span style="color:#ff0000;"> webView.loadUrl("http://www.baidu.com");</span>       <span style="color:#ff0000;"> webView.setWebChromeClient(new WebChromeClient()</span>{            @Override            public void onReceivedTitle(WebView view, String title) {                titleTextView.setText(title);                super.onReceivedTitle(view, title);            }        });        //项目自身调用,而不是采用手机自带浏览器调用        <span style="color:#ff0000;">webView.setWebViewClient(new WebViewClient()</span>{            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });        returnButton.setOnClickListener(new MyListener());        refreshButton.setOnClickListener(new MyListener());    }    class MyListener implements View.OnClickListener {        @Override        public void onClick(View view) {            switch (view.getId()){                case R.id.btn_return:                    finish();                    break;                case R.id.btn_refresh:                    webView.reload();                    break;            }        }    }}</span>
效果


    别忘了网络权限,在主配置文件中:
<uses-permission android:name="android.permission.INTERNET"/>

    
    ok,功能基本实现,至于后续在webview中下载文件,cookie存储相关先不做研究。

    实现以后,不知道你们有没有这样的疑问,既然webview功能这么强大,而且html5已经很好的支持手机页面,那为什么还要做客户端的开发呢?webview是很强大,也确实有很多实际项目就用html5来实现手机页面,根本不用客户端;但是webview有其致命的缺点,最早的facebook曾经尝试用webview来实现手机App的研发,很快他们就放弃了,因为webview加载对手机耗电量,手机性能等很多因素消耗非常大,用户体验会很差,这也是为什么不完全采用webview的主要原因。
    

    看完觉得还可以的,记得点赞留言。

0 0
原创粉丝点击