Android进阶篇之WebView的简单应用

考虑了一会儿 ,博主还是把这篇博客安排在进阶篇里面。

webview,顾名思义 就类似web前端一样,至少有那么点关系(不知道对不对 ,反正我是这么理解的),就是两者都是连接网页,进行一系列网络操作的,所以

大家在学习,交流webview时,第一时间就要给自己的android程序加上网络权限:

  <uses-permission android:name="android.permission.INTERNET"/>
然后就是布局文件了,activity_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.webview.MainActivity">

    <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="正在加载。。。。"
        android:textSize="18sp" />

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="8">

    </WebView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/back"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="后退"
            android:textSize="19sp" />

        <TextView
            android:id="@+id/gobtn"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="前进"
            android:textSize="19sp" />

        <TextView
            android:id="@+id/refrech"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="刷新"
            android:textSize="19sp" />
    </LinearLayout>


</LinearLayout>
布局文件我安排了三个按钮(最下面,博主的按钮习惯用textview):前进,后退,刷新,然后还隐藏了一个textview显示加载提示(最上面),好 接下来就是MainActivity了:

public class MainActivity extends Activity implements View.OnClickListener {

    //几个按钮,以及加载提示
    private TextView back,go,refrech,txt;
    //网页
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //控件id
        back = (TextView) findViewById(R.id.back);
        go = (TextView) findViewById(R.id.gobtn);
        refrech = (TextView) findViewById(R.id.refrech);
        txt = (TextView) findViewById(R.id.txt);
        webView = (WebView) findViewById(R.id.webview);

        //按钮的点击事件
        back.setOnClickListener(this);
        go.setOnClickListener(this);
        refrech.setOnClickListener(this);
        
        //进行webview的操作的方法
        init();

    }

    //设置和启动webview
    private void init(){
        /**
         * 在开启webview之前要强调一点:如果不确定网页是js设计还是javascript
         * 个人建议用下面的代码统一规划一下,这么做是防止某些图片无法加载的情况出现
         */
        webView.getSettings().setJavaScriptEnabled(true);
        //设置webview优先使用缓存加载
        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        //开启webview,个人建议前面定一个string,把网址装起来,这样便于代码的整洁
        webView.loadUrl("www.baidu.com");
        //设置webview的启动方式
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                /**
                 * 这里说一下下面的返回值:
                 * true:在webview里面打开网页,可以想象成微信里面加载网页一样
                 * false:使用第三方或系统自带的浏览器打开网页,如同跳转
                 */
                return true;
            }
        });
        //当打开界面时,我们设置一个显示网页进度的进度条,当然也可以设置成圆环或别的什么
        webView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                setTitle("%"+newProgress);
                //当界面玩全打开,隐藏进度条和提示字符
                if (newProgress == 100){
                    theprogress_close();
                    txt.setVisibility(View.GONE);
                }else{
                    //圆形进度条
                    theProgress_open(newProgress);
                }

                super.onProgressChanged(view, newProgress);
            }
        });
    }

    //进度条打开
    private void theProgress_open(int p){
        setProgressBarIndeterminateVisibility(true);
        setProgress(p);
    }

    //进度条关闭
    private void theprogress_close(){
        setProgressBarIndeterminateVisibility(false);
    }


    //点击事件的集中处理(让mainactivity实现onclick接口)
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            //使网页返回上页
            case R.id.back:
                webView.goBack();
                break;
            //使网页前进一页
            case R.id.gobtn:
                webView.goForward();
                break;
            //刷新当前界面
            case R.id.refrech:
                webView.reload();
                break;
        }
    }

    //


}

嗯嗯 ,webview的简单运用就这些啦 ,本博主还是很相信自己的注释的


源码下载



猜你喜欢

转载自blog.csdn.net/jonsonbob/article/details/62058770
今日推荐