webview 中的平滑水平滚动

2024-02-03

我有一个包含许多“页面”(文本列)的 wevbiew,并且希望能够在列之间水平滚动以响应 Fling 手势。我可以使用scrollTo() 很好地做到这一点,但这相当突然,我真的希望能够从一个“页面”平滑过渡到下一个“页面”。

我所看到的问题是:您不能将 Scroller 附加到 WebView,也不应该将 WebView 嵌套在 ScrollView 中。

有谁有在 WebView 中实现平滑或动画水平滚动的好主意吗?

编辑添加:我正在尝试实现一个knotmanish的想法,我使用一个独立的滚动器来计算距离。

    // vx and vy are from the onfling event of the gesture detector 
    scroller.fling(page*x, 0, vx, vy, page*(x + 1), page*(x + 1), 0, 0);

    while(scroller.computeScrollOffset()){
        webview.scrollTo(scroller.getCurrX(), 0);
        webview.invalidate();
    }

...但是 while 循环似乎太慢,无法捕获滚动条的移动或其他内容,因为其行为看起来就像scrollTo() 方法(视图跳转到滚动的末尾)。


您无法将滚动条附加到 Web 视图,但是您可以使用手势来执行相同的操作。

手势使用此方法检测 fling

onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)

将velocityX、velocityY以及其他参数提供给scoller方法

fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)

扫描computeScrollOffset()值以查找getCurrX()、getCurrY()位置。

扩展 webview 并重写 onTouchEvent(MotionEvent ev)、dispatchTouchEvent(MotionEvent ev) 方法以返回 false,以便默认情况下 webview 本身不会消耗触摸事件。 现在实现gestureListener并重写上面提到的onfling方法。 将速度和其他参数传递给滚动条。 启动一个循环来扫描computeScrollOffset()值以找到getCurrX()和getCurrY()并每次使视图无效。 传递此值以根据需要滚动 Web 视图。

如果您需要什么,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webview 中的平滑水平滚动 的相关文章

  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • Android Studio 3.0.0 不允许 DOCTYPE

    升级到Android Studio 3 0 0 同步并更新gradle插件 出现以下错误 Error DOCTYPE not allowed if function http apache org xml features disallow
  • TypedArray 的 getResourceId 方法

    我正在阅读有关的文档获取资源Id https developer android com reference android content res TypedArray html getResourceId int 20int 方法 它说
  • 如何获取.so文件的依赖项列表?

    假设我有libFoo so为 android arm 编译 我不确定它链接到什么STL实现 有options http developer android com intl ru ndk guides standalone toolchai
  • ProGuard 无法与 Windows 中使用的 Joda Time 一起编译

    实际上 这是一个答案 而不是一个问题 我确实在 Windows 上花了很多时间 使用 JodaTime 并使用 ProGuard 将其包含在我的 Android 项目中 混淆器配置 libraryjars C Users Reto Docu
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • 在 Android 中长按时从操作模式中删除后退/主页按钮

    我已经在里面长按实现了上下文操作模式recycler view 为此我打电话给ActionModeCallback从创建动作模式开始 创建动作模式时 默认显示后退箭头 检查如下 单击后退箭头 操作模式将关闭 现在我想要hide or rem
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • 尝试在模拟器上安装第二个 flutter 应用程序时出错

    我创建了一个简单的 flutter 应用程序并在 android 模拟器上运行它 效果还不错 现在我创建了另一个 当我尝试在模拟器上运行它时 我得到 Error ADB exited with exit code 1 adb failed
  • 如何以编程方式启动 ssh 服务器 android,以及如何获取连接到设备的用户名和密码

    我正在开发像这样的应用程序sshdroid 我想在 Android 操作系统上打开 ssh 连接 并且我想从电脑连接应用程序 我使用了 JSCH lib 但是这个lib用于将android连接到pc 我的要求是pc到android 任何人都
  • 为什么Android应用程序在发布到市场后尺寸会增加?

    我最近在 Android 市场上发布了我的应用程序 显示应用程序大小为 5 4MB 而实际 apk 大小为 2 8MB 为什么显示多出2MB 我应该如何限制我的应用程序大小 请帮我 您的应用程序大小会增加 因为您使用了复制保护选项ON在发布
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A

随机推荐

  • Julia 0.6中不同类型词典的向量

    我对新的有点困惑whereJulia 0 6 中的语法 我有这样的事情 a Dict a gt b b Dict a gt 3 c Dict a gt c 我想要一个接收字典向量而无需进行显式转换的函数 我尝试过 function bbb
  • 将 jQuery fullcalendar 集成到 PHP 网站中

    我想将 jQuery fullcalendar 集成到我的 PHP 网站中 但我不知道如何处理该事件以及如何使用 MySQL 中的 JSON 数据 任何意见 将不胜感激 确保你的 PHP 可以输出 f以下 HTML 代码 http docs
  • 在项目中使用 Node.js 作为独立的 LESS 编译器?

    我一直在尝试将lessc https github com cloudhead less js tree master bin在一个大型项目中使用 Bootstrap 进行基本设置的编译器 只会导致各种编译错误 每个人都有不同解决方案的票证
  • 服务上的 AccessViolationException

    我正在运行一项服务 该服务连接到一些客户端 它已经启动并运行了几周 这个函数每分钟都会被调用很多次 我在不同的函数中有一些捕获 但是这个异常使它一路崩溃 我以前从未见过这个问题 谁能让这一切发生 Stack Framework Versio
  • 资源与 SQLite

    我正在尝试分析对于需要附带相当大量文本 几本书 的应用程序使用 SQLite 与使用资源之间的权衡 我读了这篇关于原始 XML 文件与 SQLite 的文章 https stackoverflow com questions 5213550
  • 使用 Capistrano 的 Git 工作流程

    我正在尝试使用 capistrano 来了解一个良好的 git 工作流程 我找到了一个few http nakedstartup com 2010 04 simple daily git workflow good http reinh c
  • 如何生成 AdWords API 脚本的 USER_AGENT

    生成 USER AGENT 以使用 Python 从 AdWords API 提取数据的最有效方法是什么 该值是我需要能够提取数据的最后一个值 任何帮助将不胜感激 user agent INSERT USER AGENT HERE 值得庆幸
  • SublimeText 片段的正则表达式

    我现在已经在这个 Sublime Snippet 上停留了一段时间了 我想在创建新类时显示正确的包名称 使用TM FILEPATH and TM FILENAME 打印时TM FILEPATH变量 我得到这样的东西 Users caubry
  • 一个小游戏/测验:你看到我的价值观了吗? (解释十六进制值)

    好的 我需要一些帮助 我有一个蓝牙体重秤 我可以将我的 Raspberry Pi 连接到该秤并获取一些数据 但对我来说 在这个六角沙拉中读懂我的价值观并不容易 每次测量后 我都会得到两行信息 其中应包含我的值 我模拟了所有测量结果 第5个人
  • 错误:未定义模板 'llvm::yaml::MissingTrait 的隐式实例化

    我正在开发一个使用 LLVM YAML I O 库的项目 这是我正在遵循的文档 教程 https www llvm org docs YamlIO html https www llvm org docs YamlIO html 我正在尝试
  • OSX - 通过缩放按钮禁用全屏模式?

    我正在寻找以下任一设置选项NSWindow在 XIB 编辑器中或通过编程方式我可以禁用全屏模式特色于OS X当用户单击缩放按钮 绿色交通灯 时 因为它不适合我的 UI 设计 相反 将其用于正常的窗口缩放 任何人都可以给我一些提示 去哪里寻找
  • 为什么这个 Java 8 lambda 无法编译?

    以下 Java 代码无法编译 FunctionalInterface private interface BiConsumer
  • AngularJs:为此我的控制器中是否需要 $scope ?

    我正在尝试效仿这个笨蛋 https embed plnkr co plunk 2rCcJN 特别是向 ag grid 的每一行添加一个按钮 function ageClicked age window alert Age clicked a
  • 使用 numpy 进行一次热编码[重复]

    这个问题在这里已经有答案了 如果输入为零 我想创建一个如下所示的数组 1 0 0 0 0 0 0 0 0 0 如果输入是 5 0 0 0 0 0 1 0 0 0 0 对于上述内容我写道 np put np zeros 10 5 1 但它不起
  • 即使关闭后也会弹出警报对话框

    我遇到过一个典型的问题 对我来说这似乎很奇怪 详细信息是这样的 在我的应用程序的活动中 有编辑文本和提交按钮 在编辑文本中填写数据后 用户可以单击提交按钮 单击提交按钮后 根据用户输入的值 将显示两个警报对话框中的一个 一种是成功 一种是失
  • DAX 测量计算平均值及其内部参数

    我有这样的数据 App Num Days Price A1 10 100 A1 11 150 A2 11 200 A3 12 250 A3 12 300 A4 20 350 A4 21 400 天数的平均值在卡片视觉上显示为 13 857
  • request.getSession(false) 调用 session.invalidate() 后不返回 null

    不应该使会话失效request getSession false 返回空值 在我的注销 servlet 中 我调用 session invalidate 在我的登录状态过滤器中我调用 request getSession false 对 g
  • 如何从 iso 获取国家/地区电话前缀

    我通过这里的代码获得了国家 地区isoanswer https stackoverflow com questions 3659809 where am i get country TelephonyManager tm Telephony
  • 在 Router.php 第 366 行中:传递给 Illuminate\Routing\Router::group() 的参数 1 必须是数组类型,

    我有更新Laravel from v5 7 to v5 8现在我的应用程序无法运行 由于这个问题 我更新了它 作曲家要求 rebing graphql laravel 失败 https stackoverflow com questions
  • webview 中的平滑水平滚动

    我有一个包含许多 页面 文本列 的 wevbiew 并且希望能够在列之间水平滚动以响应 Fling 手势 我可以使用scrollTo 很好地做到这一点 但这相当突然 我真的希望能够从一个 页面 平滑过渡到下一个 页面 我所看到的问题是 您不