码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【使用篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview


    本文首发我的公众号徐公,收录于 Github·AndroidGuide,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,5 年中大厂程序员,一起建立核心竞争力

    背景

    最近项目在开发中,需要实现 WebView 吸顶的效果。刚开始在 Demo 实现的时候,使用的是普通的 WebView。切换到项目的时候,由于使用的是 X5 WebView,在解决过程中。又遇到了一些问题,觉得挺有代表性的,就记录了下来。

    如果你也有相似的问题,可以参考这种思路解决。

    实现原理简述

    讲解之前,我们先来看一下效果图

    请添加图片描述

    说到嵌套滑动,很多人第一时间都会想到 CoordinatorLayout behavior ,但是 webview 本身并不是 NestedScrollChild 的,无法实现。

    于是,我们可以自己实现 NestedScrollChild 接口,去实现嵌套滑动。具体的实现原理,可以参照我的这一篇博客。

    【原理篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview

    系统 webview 实现吸顶效果

    第一步:引入我的开源库

     implementation("io.github.gdutxiaoxu:nestedwebview:0.22")
    

    第二步:借助 CoordinatorLayout behavior 实现吸顶效果

    
    
        
    
            
    
        
    
    
        
    
    
    
    
    

    X5 webview 实现吸顶效果

    第一种方式

    第一种方式,使用我封装好的 NestedX5WebView,在布局文件中指定 behavior

    第一步:引入我的开源库

    implementation("io.github.gdutxiaoxu:nestedx5webview:0.22")
    

    第二步:借助 CoordinatorLayout behavior 实现吸顶效果

    
    
        
    
            
    
        
    
    
        
    
    
    

    第二种方式

    使用腾讯的 WebView,在代码当中动态指定 X5ProxyWebViewClientExtension 即可

    
    
        
    
            
    
        
    
    
        
    
    
    

    代理 X5 webview 相关的触摸事件

            val x5CallBackClient = X5CallBackClient(webView.view, webView)
            webView.setWebViewCallbackClient(x5CallBackClient)
            webView.webViewClientExtension = X5ProxyWebViewClientExtension(x5CallBackClient)
    

    更多吸顶效果

    使用CoordinatorLayout打造各种炫酷的效果

    自定义Behavior —— 仿知乎,FloatActionButton隐藏与展示

    NestedScrolling 机制深入解析

    一步步带你读懂 CoordinatorLayout 源码

    自定义 Behavior -仿新浪微博发现页的实现

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    自定义 behavior - 完美仿 QQ 浏览器首页,美团商家详情页

    源码地址

    nestedwebview, 可以帮忙给个 star 哦。

    如果觉得对你有所帮助的话,可以关注我我的微信公众号徐公,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,一起建立核心竞争力

  • 相关阅读:
    多线程面试题总结
    Linux常用命令
    秦简总经理王建忠:论都江堰泛计算操作系统的商业价值
    java毕业设计电商项目mybatis+源码+调试部署+系统+数据库+lw
    Surface area
    Pytorch model.apply/net.apply
    python实现简单的三维建模学习记录
    Mybatis 实现简单增删改查
    漏洞修复优先级考虑-不错的思路
    微信小程序入门
  • 原文地址:https://blog.csdn.net/gdutxiaoxu/article/details/126959683
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号