Android控件webview使用

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

Android控件webview使用_第1张图片     Android控件webview使用_第2张图片


    接下来我们就来看下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的主要原因。
    

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

你可能感兴趣的:(Android控件webview使用)