首页 > 编程语言 >在Android编程中,下拉刷新Webview

在Android编程中,下拉刷新Webview

时间:2023-04-06 12:59:53浏览次数:36  
标签:SwipeRefreshLayout void 编程 Webview webView import WebView Android android

1.添加支持库依赖项:在 build.gradle 文件中添加以下行以添加 SwipeRefreshLayout 支持库:

implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

2.在布局文件中添加 SwipeRefreshLayout 和 WebView:

<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_refresh_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

3.缺少必要的权限:如果您的应用程序需要访问 Internet 权限,请确保在 AndroidManifest.xml 文件中添加以下行:

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

4.以下是一个完整的示例Activity代码

import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private SwipeRefreshLayout swipeRefreshLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webview);
        swipeRefreshLayout = findViewById(R.id.swipe_refresh_layout);

        // 检查 Internet 权限
        if (!hasInternetPermission()) {
            Toast.makeText(this, "请授予应用程序 Internet 权限", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }

        // 配置 WebView
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                swipeRefreshLayout.setRefreshing(false);
            }
        });
        webView.loadUrl("https://www.example.com");

        // 配置 SwipeRefreshLayout
        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                // 检查 WebView 是否为空
                if (webView == null) {
                    swipeRefreshLayout.setRefreshing(false);
                    return;
                }
                // 在 UI 线程上执行 WebView 刷新
                new Handler().post(new Runnable() {
                    @Override
                    public void run() {
                        webView.reload();
                    }
                });
            }
        });
    }

    private boolean hasInternetPermission() {
        return checkSelfPermission(android.Manifest.permission.INTERNET) == getPackageManager().PERMISSION_GRANTED;
    }

    @Override
    public void onBackPressed() {
        // 如果 WebView 可以返回,则返回上一页
        if (webView.canGoBack()) {
            webView.goBack();
            return;
        }
        // 否则退出应用程序
        super.onBackPressed();
    }
}

标签:SwipeRefreshLayout,void,编程,Webview,webView,import,WebView,Android,android
From: https://www.cnblogs.com/felixwan/p/17292415.html

相关文章

  • 从Android手机中取出已安装的app包,导出apk
    从Android手机中取出已安装的app包,导出apkTAG:Android,提取,apk,adb,pm,root,导出apk假设有这样一个场景,A君看到你手机上一个实用APP,想要安装到自己手机上,限于下载浪费流量,那么最简单的就是从你的手机中拷贝一个,不过你安装过的apk包已经删除了,不能直接复制出来进行安装。办法来了,就是......
  • 解决"No toolchains found in the NDK toolchains folder for ABI with prefix: mips6
    版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。今天安装了AndroidStudio3.2,打开一个旧工程,编译提示"NotoolchainsfoundintheNDKtoolchainsfolderforABIwithprefix:mips64el-linux-android"网上也有解决办法,就是下载旧版......
  • Android 12蓝牙报java.lang.SecurityException: Need android.permission.BLUETOOTH_C
    报错如下:E/AndroidRuntime:FATALEXCEPTION:mainProcess:com.studay.base.study,PID:16798java.lang.SecurityException:Needandroid.permission.BLUETOOTH_CONNECTpermissionforAttributionSource{uid=10392,packageName=com.studay.base.study,a......
  • Android - 基础知识
     1. 四层架构、五块区域①Linux内核层(硬件驱动)②系统运行库层(C/C++库-特性支持;Android运行时库-Dalvik虚拟机)③应用框架层(API)④应用层(手机上的应用程序)         2.四大组件①Activity活动——应用中所有被用户看到的东西②Service服务—......
  • Swift是Android的未来么?
    最近Swift可以写Android的新闻炒的沸沸扬扬,我本身也关注着,不过对这种新闻不是很感冒,但是最近不少人都给我留言说「张哥,Swift可以写Android了,现在要开始学习了么?」、「Swift会取代Java么?我是新手,要不要直接学习Swift呢?」其实本来就是一则新闻,只不过两巨头的影响力,加上媒体的扩大,导致......
  • Android设计模式之单例模式
    之前的一篇文章「Android开发如何进阶?」提到设计模式可谓是进阶必备,对设计模式的理解与运用对你之后的代码书写与架构设计有很多的帮助作用,那么从今天开始我就抽时间不定期来给大家分享下设计模式系列。什么是设计模式?其实简单的理解就是前人留下来的一些经验总结而已,然后把这些经......
  • 推荐一个很好用的 Android Studio 插件
    事情是这样的,今天一位小伙伴发布了一条微博,然后@了我,内容是发布了一款AS的插件,我看了下,确实很好用,于是果断微博帮忙转发了,但是我觉得还不够,这个小插件非常实用,就想着公众号也扩散下,让更多的小伙伴可以受益。这个AS插件叫做 Android-Resource-Usage-Count,顾名思义,这是一个可......
  • 题目 1016: [编程入门]水仙花数判断
    打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 #include<stdio.h>intmain(){inta,b,c,i;for(i=100;i<1000;i++){a=i/100;b=i/10%10;c=i......
  • 题目 1014: [编程入门]阶乘求和
    求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。 1.因为这是阶乘求和,一般的int类型可能就不够,因此我们利用longlongint类型(不用unsignedlong因为当n为20时,Sn=2561327494111820313)了,unsignedlong的范围不够。2.求Sn的和,我·用的是两个for循环嵌套for(in......
  • 题目 1013: [编程入门]Sn的公式求和
    求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。例如,n=5时=2+22+222+2222+22222,n由键盘输入。#include<stdio.h>intmain(){intn,i,sum=0,c=0;scanf("%d",&n);for(i=0;i<n;i++){sum*=10;sum=sum+2;c......