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