blob: 4f06ebcfde7d4bb5c60240f65ccb3104d55e5eae [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.tv.dvr.ui;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.transition.Transition;
import android.transition.TransitionValues;
import android.transition.Visibility;
import android.util.AttributeSet;
import android.view.ViewGroup;
import com.android.tv.R;
/**
* This transition fades in/out of the background of the view by changing the background color.
*/
public class FadeBackground extends Transition {
private final int mMode;
public FadeBackground(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FadeBackground);
mMode = a.getInt(R.styleable.FadeBackground_fadingMode, Visibility.MODE_IN);
a.recycle();
}
@Override
public void captureStartValues(TransitionValues transitionValues) { }
@Override
public void captureEndValues(TransitionValues transitionValues) { }
@Override
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
TransitionValues endValues) {
if (startValues == null || endValues == null) {
return null;
}
Drawable background = endValues.view.getBackground();
if (background instanceof ColorDrawable) {
int color = ((ColorDrawable) background).getColor();
int transparentColor = Color.argb(0, Color.red(color), Color.green(color),
Color.blue(color));
return mMode == Visibility.MODE_OUT
? ObjectAnimator.ofArgb(background, "color", transparentColor)
: ObjectAnimator.ofArgb(background, "color", transparentColor, color);
}
return null;
}
}