blob: c628988a6c7ccd47f2b432aca32580ceac8c13c3 [file] [log] [blame]
/*
* Copyright (C) 2015 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 android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.v17.leanback.supportleanbackshowcase.R;
import android.support.v17.leanback.widget.ImageCardView;
import android.view.View;
import android.widget.ImageView;
/**
* This Presenter will display cards which consists of a single icon which will be highlighted by a
* surrounding circle when the card is focused. AndroidTV uses these cards for entering settings
* menu.
*/
public class IconCardPresenter extends ImageCardViewPresenter {
private static final int ANIMATION_DURATION = 200;
public IconCardPresenter(Context context) {
super(context, R.style.IconCardTheme);
}
@Override
protected ImageCardView onCreateView() {
final ImageCardView imageCardView = super.onCreateView();
final ImageView image = imageCardView.getMainImageView();
image.setBackgroundResource(R.drawable.icon_focused);
image.getBackground().setAlpha(0);
imageCardView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
animateIconBackground(image.getBackground(), hasFocus);
}
});
return imageCardView;
}
private void animateIconBackground(Drawable drawable, boolean hasFocus) {
if (hasFocus) {
ObjectAnimator.ofInt(drawable, "alpha", 0, 255).setDuration(ANIMATION_DURATION).start();
} else {
ObjectAnimator.ofInt(drawable, "alpha", 255, 0).setDuration(ANIMATION_DURATION).start();
}
}
}