186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/*
286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Copyright (C) 2015 The Android Open Source Project
386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn *
486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * in compliance with the License. You may obtain a copy of the License at
686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn *
786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * http://www.apache.org/licenses/LICENSE-2.0
886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn *
986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Unless required by applicable law or agreed to in writing, software distributed under the License
1086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
1186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * or implied. See the License for the specific language governing permissions and limitations under
1286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * the License.
1386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */
1486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
1586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnpackage android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
1686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
1723ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnataimport android.animation.ObjectAnimator;
1886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.content.Context;
1923ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnataimport android.graphics.drawable.Drawable;
2086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.supportleanbackshowcase.R;
2131475959eb09fd873551909dd21d00304b6a4ee9Robert Hahnimport android.support.v17.leanback.widget.ImageCardView;
2286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.view.View;
2386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.widget.ImageView;
2486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
2586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/**
2686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * This Presenter will display cards which consists of a single icon which will be highlighted by a
2786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * surrounding circle when the card is focused. AndroidTV uses these cards for entering settings
2886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * menu.
2986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */
3031475959eb09fd873551909dd21d00304b6a4ee9Robert Hahnpublic class IconCardPresenter extends ImageCardViewPresenter {
3123ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata    private static final int ANIMATION_DURATION = 200;
3286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
3386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    public IconCardPresenter(Context context) {
348355a74004844c0b6c0ad5c6e70d3efe93f18595Keyvan Amiri        super(context, R.style.IconCardTheme);
3586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
3686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
3731475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn    @Override
3831475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn    protected ImageCardView onCreateView() {
3931475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        final ImageCardView imageCardView = super.onCreateView();
4031475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        final ImageView image = imageCardView.getMainImageView();
4123ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata        image.setBackgroundResource(R.drawable.icon_focused);
4223ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata        image.getBackground().setAlpha(0);
4331475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        imageCardView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
4431475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn            @Override
4531475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn            public void onFocusChange(View v, boolean hasFocus) {
4623ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata                animateIconBackground(image.getBackground(), hasFocus);
4786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn            }
4886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn        });
4931475959eb09fd873551909dd21d00304b6a4ee9Robert Hahn        return imageCardView;
5086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn    }
5186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn
5223ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata    private void animateIconBackground(Drawable drawable, boolean hasFocus) {
5323ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata        if (hasFocus) {
5423ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata            ObjectAnimator.ofInt(drawable, "alpha", 0, 255).setDuration(ANIMATION_DURATION).start();
5523ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata        } else {
5623ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata            ObjectAnimator.ofInt(drawable, "alpha", 255, 0).setDuration(ANIMATION_DURATION).start();
5723ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata        }
5823ace139d151e4b2dffc56bc8a434e96ecc6aa7asusnata    }
5986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn}
60