1b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn/* 2b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * Copyright (C) 2014 The Android Open Source Project 3b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * 4b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * in compliance with the License. You may obtain a copy of the License at 6b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * 7b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * http://www.apache.org/licenses/LICENSE-2.0 8b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * 9b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * Unless required by applicable law or agreed to in writing, software distributed under the License 10b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * or implied. See the License for the specific language governing permissions and limitations under 12b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn * the License. 13b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn */ 14b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournpackage android.support.v17.leanback.widget; 15b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 16b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.content.Context; 17ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Guimport android.content.res.TypedArray; 18b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.graphics.drawable.Drawable; 1970acb0c19be3831a2080e4f902324de16bfbf62eTor Norbyeimport android.support.annotation.ColorInt; 20b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.support.v17.leanback.R; 21b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilsonimport android.text.TextUtils; 22b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.util.AttributeSet; 23b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.view.LayoutInflater; 24b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.view.View; 25b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilsonimport android.view.ViewGroup; 26b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.widget.ImageView; 279de363b8db05106b03d115c266859fe200d41db7Dake Guimport android.widget.ImageView.ScaleType; 28b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.widget.TextView; 29b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 30961a8f12d1fbeeb86ea066f9f2c693abb2ce50f2Tim Kilbourn/** 31a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * A subclass of {@link BaseCardView} with an {@link ImageView} as its main region. 32961a8f12d1fbeeb86ea066f9f2c693abb2ce50f2Tim Kilbourn */ 33b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournpublic class ImageCardView extends BaseCardView { 34b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 35b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private ImageView mImageView; 36b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private View mInfoArea; 37b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private TextView mTitleView; 38b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private TextView mContentView; 39b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private ImageView mBadgeImage; 4089589687d8aafcfdc11d9760205e9d0b16505201Craig Stout private boolean mAttachedToWindow; 41b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 42b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public ImageCardView(Context context) { 43b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn this(context, null); 44b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 45b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 46b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public ImageCardView(Context context, AttributeSet attrs) { 47b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn this(context, attrs, R.attr.imageCardViewStyle); 48b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 49b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 50b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public ImageCardView(Context context, AttributeSet attrs, int defStyle) { 51b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn super(context, attrs, defStyle); 52b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 53b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn LayoutInflater inflater = LayoutInflater.from(context); 54b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn View v = inflater.inflate(R.layout.lb_image_card_view, this); 55b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 56b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mImageView = (ImageView) v.findViewById(R.id.main_image); 57b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.INVISIBLE); 58b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mInfoArea = v.findViewById(R.id.info_field); 59b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mTitleView = (TextView) v.findViewById(R.id.title_text); 60b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mContentView = (TextView) v.findViewById(R.id.content_text); 61b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage = (ImageView) v.findViewById(R.id.extra_badge); 62ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 63ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 64ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.lbImageCardView, 65ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu defStyle, 0); 66ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu try { 67ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu setInfoAreaBackground( 68ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu a.getDrawable(R.styleable.lbImageCardView_infoAreaBackground)); 69ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } finally { 70ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu a.recycle(); 71ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 72ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 73b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 74b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 75a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 76a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the main image view. 77a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 789de363b8db05106b03d115c266859fe200d41db7Dake Gu public final ImageView getMainImageView() { 799de363b8db05106b03d115c266859fe200d41db7Dake Gu return mImageView; 809de363b8db05106b03d115c266859fe200d41db7Dake Gu } 819de363b8db05106b03d115c266859fe200d41db7Dake Gu 82a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 83a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Enables or disables adjustment of view bounds on the main image. 84a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 859de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageAdjustViewBounds(boolean adjustViewBounds) { 869de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 879de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setAdjustViewBounds(adjustViewBounds); 889de363b8db05106b03d115c266859fe200d41db7Dake Gu } 899de363b8db05106b03d115c266859fe200d41db7Dake Gu } 909de363b8db05106b03d115c266859fe200d41db7Dake Gu 91a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 92a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the ScaleType of the main image. 93a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 949de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageScaleType(ScaleType scaleType) { 959de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 969de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setScaleType(scaleType); 979de363b8db05106b03d115c266859fe200d41db7Dake Gu } 989de363b8db05106b03d115c266859fe200d41db7Dake Gu } 999de363b8db05106b03d115c266859fe200d41db7Dake Gu 100932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 101a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the image drawable with fade-in animation. 102932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 103b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setMainImage(Drawable drawable) { 104932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu setMainImage(drawable, true); 105932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 106932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu 107932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 108a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the image drawable with optional fade-in animation. 109932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 110932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu public void setMainImage(Drawable drawable, boolean fade) { 111b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 112b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 113b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 114b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 115b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mImageView.setImageDrawable(drawable); 116b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (drawable == null) { 117932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 118932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 119b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.INVISIBLE); 120b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 121b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.VISIBLE); 122932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu if (fade) { 12389589687d8aafcfdc11d9760205e9d0b16505201Craig Stout fadeIn(); 124932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } else { 125932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 126932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 127932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 128b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 129b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 130b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 131a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 132a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the layout dimensions of the ImageView. 133a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 134b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson public void setMainImageDimensions(int width, int height) { 135b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson ViewGroup.LayoutParams lp = mImageView.getLayoutParams(); 136b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.width = width; 137b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.height = height; 138b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setLayoutParams(lp); 139b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 140b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 141a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 142a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the ImageView drawable. 143a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 144b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getMainImage() { 145b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 146b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 147b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 148b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 149b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mImageView.getDrawable(); 150b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 151b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 152a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 153a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the info area background drawable. 154a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 155ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public Drawable getInfoAreaBackground() { 156ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 157ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return mInfoArea.getBackground(); 158ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 159ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return null; 160ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 161ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 162a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 163a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the info area background drawable. 164a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 165ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public void setInfoAreaBackground(Drawable drawable) { 166ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 167ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackground(drawable); 168ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 169ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 170ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 171a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 172a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the info area background color. 1730670f090a011e864bd726784c2a85333bf2ae7fbCraig Stout */ 17470acb0c19be3831a2080e4f902324de16bfbf62eTor Norbye public void setInfoAreaBackgroundColor(@ColorInt int color) { 175ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 176ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackgroundColor(color); 177ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 178ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 179ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 180a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 181a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the title text. 182a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 183b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setTitleText(CharSequence text) { 184b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 185b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 186b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 187b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 188b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mTitleView.setText(text); 189b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 190b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 191a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 192a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the title text. 193a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 194b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getTitleText() { 195b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 196b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 197b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 198b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 199b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mTitleView.getText(); 200b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 201b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 202a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 203a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the content text. 204a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 205b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setContentText(CharSequence text) { 206b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 207b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 208b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 209b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 210b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mContentView.setText(text); 211b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 212b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 213a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 214a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the content text. 215a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 216b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getContentText() { 217b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 218b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 219b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 220b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 221b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mContentView.getText(); 222b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 223b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 224a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 225a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the badge image drawable. 226a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 227b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setBadgeImage(Drawable drawable) { 228b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 229b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 230b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 231cb933aeb5c89f168f604bf081d6f8f4fdde6534fDake Gu mBadgeImage.setImageDrawable(drawable); 232cb933aeb5c89f168f604bf081d6f8f4fdde6534fDake Gu if (drawable != null && mContentView!= null && mContentView.getVisibility() != GONE) { 233b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.VISIBLE); 234b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } else { 235b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.GONE); 236b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 237b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 238b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 239a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 240a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the badge image drawable. 241a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 242b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getBadgeImage() { 243b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 244b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 245b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 246b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 247b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mBadgeImage.getDrawable(); 248b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 249b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 25089589687d8aafcfdc11d9760205e9d0b16505201Craig Stout private void fadeIn() { 25189589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mImageView.setAlpha(0f); 25289589687d8aafcfdc11d9760205e9d0b16505201Craig Stout if (mAttachedToWindow) { 25389589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mImageView.animate().alpha(1f).setDuration(mImageView.getResources().getInteger( 25489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout android.R.integer.config_shortAnimTime)); 25589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 256b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 257b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 258ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu @Override 259ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu public boolean hasOverlappingRendering() { 260ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu return false; 261ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu } 262ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu 2635358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout @Override 26489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout protected void onAttachedToWindow() { 26589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout super.onAttachedToWindow(); 26689589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mAttachedToWindow = true; 26789589687d8aafcfdc11d9760205e9d0b16505201Craig Stout if (mImageView.getAlpha() == 0) { 26889589687d8aafcfdc11d9760205e9d0b16505201Craig Stout fadeIn(); 26989589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 27089589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 27189589687d8aafcfdc11d9760205e9d0b16505201Craig Stout 27289589687d8aafcfdc11d9760205e9d0b16505201Craig Stout @Override 2735358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout protected void onDetachedFromWindow() { 27489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mAttachedToWindow = false; 2755358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.animate().cancel(); 2765358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.setAlpha(1f); 2775358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout super.onDetachedFromWindow(); 2785358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout } 279b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn} 280