【问题标题】:What is the alternative class in Harmony OS for AccelerateInterpolator and OvershootInterpolator in Android OS?Harmony OS 中用于 Android OS 中的 AccelerateInterpolator 和 OvershootInterpolator 的替代类是什么?
【发布时间】:2021-11-08 13:05:41
【问题描述】:

我正在用 JAVA 编写一个类来将一个库从 Android 移植到 Harmony OS。 在下面为方法onSelectedY(boolean, float, int) 给出的Android 代码中,它需要将类AccelerateInterpolator 的构造函数添加到方法中

private void onSelectedY(final boolean isTop, float exitX, int duration)
{
        ....
        ....

        this.frame.animate()
                .setDuration(duration)
                .setInterpolator(new AccelerateInterpolator())
                .x(exitX)
                .y(exitY)
                .setListener(new AnimatorListenerAdapter()
                {
                    @Override
                    public void onAnimationEnd(Animator animation)
                    {
                        if(isTop)
                        {
                            mFlingListener.onCardExited();
                            mFlingListener.topExit(dataObject);
                        }
                        else
                        {
                            mFlingListener.onCardExited();
                            mFlingListener.bottomExit(dataObject);
                        }
                        isAnimationRunning = false;
                    }
                })
                .rotation(getVerticalExitRotation(isTop));
}

对于 AccelerateInterpolator 类的等效 Harmony OS 组件,有一个名为 Animator.TimelineCurve 的接口。 但是它作为接口的问题是它没有构造函数,在这种情况下需要它。如果我直接使用接口,我必须在这里自己重写接口,但是不能这样做,因为没有什么可以手动重写。

OvershootInterpolator 也是如此。

这种情况的解决方法是什么?

问候,苏布汉姆

【问题讨论】:

    标签: java android huawei-mobile-services huawei-developers harmonyos


    【解决方案1】:

    ohos.agp.animation.Animator.CurveType 是 Android 中 Interpolators 的等效 API。您必须使用 setCurveType(int) API,而对于 AccelerateInterpolator,您必须使用 Animator.CurveType.ACCELERATE。对于 OvershootInterpolator 使用 Animator.CurveType.OVERSHOOT

    用法:

        animator.setCurveType(Animator.CurveType.ACCELERATE);
    

    【讨论】:

      【解决方案2】:

      您可以查看this development documentation 看看是否有帮助。

      此外,TimelineCurve 类还有两个实现:CubicBezierCurveSpringCurve

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多