首页 > 解决方案 > 是否可以将 ofFloat 设置为多个目标?

问题描述

我有这个淡入淡出功能

    private void fadeIn() {
        ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(ButtonA, "alpha", 0f, 1f);

        objectAnimator.setDuration(2000L);
        objectAnimator.addListener(new AnimatorListenerAdapter() {
        });
        objectAnimator.start();
}

现在唯一的目标是ButtonA,我还有3个按钮(ButtonB,ButtonC ....)无论如何我可以在不写这个代码片段4次的情况下定位所有四个?

标签: javaandroid

解决方案


尝试这个

private static void fadeIn(long duration, final View... views) {
    if (views == null) return;
    final ValueAnimator va = ValueAnimator.ofFloat(0, 1);
    va.setDuration(duration);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animator) {
            final float alpha = (float) animator.getAnimatedValue();
            for (View view : views) view.setAlpha(alpha);
        }
    });
    va.start();
}

如何使用:

// first argument duration and then pass any number of views
fadeIn(2000, buttonA, buttonB, buttonC);

推荐阅读