gpt4 book ai didi

Android RippleForeground 有界模式实现

转载 作者:行者123 更新时间:2023-11-29 01:27:36 26 4
gpt4 key购买 nike

我正在通读 RippleDrawableRippleForeground 的实现(软件渲染部分),我已经知道有界意味着波纹有一个掩码。

但我仍然对实现的某些点感到困惑:

  1. 为什么执行说 "Bounded ripples don't have enter animations"并简单地跳过它的输入动画?在这种情况下如何启动波纹动画(如果用户没有释放他的触摸所以没有触发退出)?

    @Override
    protected Animator createSoftwareEnter(boolean fast) {
    // Bounded ripples don't have enter animations.
    if (mIsBounded) {
    return null;
    }
    ...
    }
  2. 为什么实现选择 nearly constant value (以及为什么 random())用于 mBoundedRadiusmTargetRadius ?如果用 ColorDrawable 屏蔽的 View 大于该尺寸,它能正常工作吗?

    public RippleForeground(RippleDrawable owner, Rect bounds, float startingX, float startingY,
    boolean isBounded) {
    ...
    if (isBounded) {
    mBoundedRadius = MAX_BOUNDED_RADIUS * 0.9f
    + (float) (MAX_BOUNDED_RADIUS * Math.random() * 0.1);
    }
    ...
    }

    ...

    private void computeBoundedTargetValues() {
    ...
    mTargetRadius = mBoundedRadius;
    }

最佳答案

对于第一个问题,我通过深入研究提交历史并尝试使用新的 Marshmallow 图像自行找到了答案。答案很简单:

他们移除了有界 RippleDrawable 的(前景)触摸波纹,但没有为无界移除,故意留下这种不一致。

我刚刚在 Android SDK 的 Marshmallow 图像上进行了测试。它被移除了,更糟糕的是,他们在用户第一次触摸屏幕的地方而不是他们的手指离开屏幕的地方留下了退出波纹。

Ripple on Marshmallow

我无法理解这个设计决定,因为它对我来说更像是一种倒退而不是一种改进,但正如在提交日志中,他们相信他们做到了 implement bounded ripple animation , 而不是删除它。

但是对于第二个问题,我还没有得到答案。

关于Android RippleForeground 有界模式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com