Android进阶篇之WebView的简单应用

本文详细介绍如何在Android应用中集成WebView组件,并实现基本的网页加载、前进、后退及刷新等功能。文章通过具体代码示例展示了如何配置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的简单运用就这些啦 ,本博主还是很相信自己的注释的


源码下载



内容概要:本文系统梳理了2025年数学前沿领域的研究动态与发展趋势,涵盖代数几何、数论、微分几何、拓扑学、偏微分方程、数学物理等多个核心方向,并介绍了当前国际数学研究的三大主流趋势:代数几何与数论、分析与偏微分方程、几何拓扑与表示论。文中重点报道了青年数学家王虹成功证明三维挂谷猜想的重大突破,以及韦东奕在偏微分方程与几何分析方面的研究成果,展现了中国数学界的崛起态势。同时,文档还涉及数学基础研究、应用数学、数学教育、期刊评价体系及国际数学强国格局等内容,引用大量视频、文章和权威资源,呈现数学学科的全貌与发展前景。; 适合人群:具备一定数学基础的本科生、研究生及科研工作者,关注数学前沿发展的教师、科技爱好者以及从事人工智能、物理、工程等相关领域并需数学支撑的专业人士。; 使用场景及目标:①了解2025年数学领域的重要突破与研究热点,如挂谷猜想的证明、朗兰兹纲领、拓扑数据分析等;②把握数学各分支的前沿方向与交叉应用,服务于科研选题、学术规划或跨学科研究;③获取权威学习资源与经典文献推荐,辅助数学学习与教学实践。; 阅读建议:此文档为信息聚合型资料,建议结合所列视频、书籍和论文深入拓展学习,重点关注核心突破案例(如王虹、韦东奕)与主流研究方向的演进脉络,宜以批判性思维梳理知识体系,避免碎片化阅读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值