V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a128445
V2EX  ›  问与答

Android 清除 recent activities 手势原理是啥?

  •  
  •   a128445 · 2018-09-25 21:38:55 +08:00 · 712 次点击
    这是一个创建于 2057 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    Android 和 iOS历史应用视图,可以通过手势来清除应用,比如

    1. 以一定加速划过;或者
    2. 拖动一段距离

    问题是

    历史应用视图中

    • Android 具体的触摸触发机制是怎样的?如需要拖动多远?或者加速度是多少?应用视图才会消失
    • iOS 具体的触摸触发机制是怎样的?如需要拖动多远?或者加速度是多少?应用视图才会消失

    摸爬滚打

    Android

    我尝试着找 Android 源代码,发现在 SystemUI package 中SwipeHelper.java #367 行(见下)似乎定义了拖动距离超和加速度,但不清楚是否是对的,也不太懂#367 行的意思

    Math.abs(getTranslation(mCurrAnimView)) > 0.4 * getSize(mCurrAnimView);

    iOS

    iOS 代码不开源,我就跟着这个教程facebook-wda python lib用模拟点击的方式试探性的了解拖动距离,如用 s.swipe(x1, y1, x1, 0, 1) 不断尝试出最小的 y1 值。但是似乎不是很准确。

    还望大神们指点迷津。

    1 条回复    2018-09-26 08:41:26 +08:00
    wsxyeah
        1
    wsxyeah  
       2018-09-26 08:41:26 +08:00
    AOSP 这个代码还是很清晰的吧。

    滑动距离超过控件尺寸的 40%,或者松手时速度大于指定阈值(这个速度是水平 /垂直方向的分量,并且判断了下速度方向是否符合目标方向,即 45° 角)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2950 人在线   最高记录 6547   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:29 · PVG 23:29 · LAX 08:29 · JFK 11:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.