a128445
V2EX  ›  问与答

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

  •  
  •   a128445 · Sep 25, 2018 · 1039 views
    This topic created in 2790 days ago, the information mentioned may be changed or developed.

    背景

    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 replies    2018-09-26 08:41:26 +08:00
    wsxyeah
        1
    wsxyeah  
       Sep 26, 2018
    AOSP 这个代码还是很清晰的吧。

    滑动距离超过控件尺寸的 40%,或者松手时速度大于指定阈值(这个速度是水平 /垂直方向的分量,并且判断了下速度方向是否符合目标方向,即 45° 角)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3009 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:47 · PVG 15:47 · LAX 00:47 · JFK 03:47
    ♥ Do have faith in what you're doing.