Android применяет цвет к альфа-анимации - PullRequest
4 голосов
/ 14 июля 2010

есть ли способ применить цвет к альфа-анимации в Android? Я знаю, как использовать элемент <alpha>, но я бы хотел, чтобы альфа применила цвет, а также альфа, чтобы я мог выделить макет. это возможно?

Ответы [ 3 ]

3 голосов
/ 14 июля 2010

Анимации не могут включать изменения цвета в Android - включены только альфа, вращение, масштаб и перевод.

Тем не менее, вы все равно можете изменять цвет, накладывая два объектаразных цветов друг над другом и затемняют верхний или нижний.

Вы также можете заглянуть в TransitionDrawable или TextSwitcher , чтобы выполнить нечто подобное.Надеемся, что в следующем обновлении мы сможем получить полную поддержку цветных анимаций.

1 голос
/ 04 декабря 2015

Ну, вот мое решение, анимирующее конкретную область экрана (см. Демонстрацию ниже).Обратите внимание, что этот код предназначен для устройств, которые работают > = API9 .

enter image description here

Для начинающих, просто скопируйте и вставьте.

FadeAnimationColored.java

public class FadeAnimationColored {

private View view;
private float maxBrightness = 1.0f;
private float minBrightness = 0.0f;
private long duration = 400L;
private long startOffset = 0L;
private int color = android.R.color.white;

// Constructors...

public FadeAnimationColored(View view, String color, float maxBrightness, float minBrightness, long duration, long startOffset) {
    this.view = view;
    this.color = Color.parseColor(color);
    this.maxBrightness = maxBrightness;
    this.minBrightness = minBrightness;
    this.duration = duration;
    this.startOffset = startOffset;
    prepareView();
}


public void fadeOut() {
    this.view.setAlpha(1f);
    Animation anim = new AlphaAnimation(minBrightness, maxBrightness);
    anim.setDuration(duration);
    anim.setStartOffset(startOffset);
    anim.setFillEnabled(true);
    anim.setFillAfter(true);
    view.startAnimation(anim);
}


public void fadeIn() {
    Animation anim = new AlphaAnimation(maxBrightness, minBrightness);
    anim.setDuration(duration);
    anim.setStartOffset(startOffset);
    anim.setFillEnabled(true);
    anim.setFillAfter(true);
    view.startAnimation(anim);
}


private void prepareView() {
    this.view.setBackgroundColor(this.color);
    this.view.setAlpha(0f);
}
}

Затем добавьте дополнительный вид в макет, представьте его как наложение (я использовал простой FrameLayout, для которого установлено значение match_parent)

Вот фрагмент, который показывает, как настроитьанимация в вашей деятельности или фрагменте:

FrameLayout interceptorFrame = (FrameLayout) mView.findViewById(R.id.fl_interceptor);

final FadeAnimationColored fadeAnimationLayout =
        new FadeAnimationColored(interceptorFrame, MaterialColor.GREY_800, 0.9f, 0.0f, 400L, 0);

mFabMenu.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() {
    @Override
    public void onMenuToggle(boolean opened) {
        if (opened) {
            fadeAnimationLayout.fadeOut();
        } else {
            fadeAnimationLayout.fadeIn();
        }
    }
});
1 голос
/ 26 июля 2013

Я тоже пробую то же самое на альфе. но http://nathanael.hevenet.com/android-dev-fading-background-animation/ эта ссылка может ответить на ваш вопрос. используя переход можно ... :)

...