ImageCardView.java revision 0670f090a011e864bd726784c2a85333bf2ae7fb
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; 40b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private ImageView mBadgeFadeMask; 4189589687d8aafcfdc11d9760205e9d0b16505201Craig Stout private boolean mAttachedToWindow; 42b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 43b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public ImageCardView(Context context) { 44b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn this(context, null); 45b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 46b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 47b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public ImageCardView(Context context, AttributeSet attrs) { 48b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn this(context, attrs, R.attr.imageCardViewStyle); 49b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 50b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 51b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public ImageCardView(Context context, AttributeSet attrs, int defStyle) { 52b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn super(context, attrs, defStyle); 53b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 54b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn LayoutInflater inflater = LayoutInflater.from(context); 55b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn View v = inflater.inflate(R.layout.lb_image_card_view, this); 56b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 57b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mImageView = (ImageView) v.findViewById(R.id.main_image); 58b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.INVISIBLE); 59b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mInfoArea = v.findViewById(R.id.info_field); 60b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mTitleView = (TextView) v.findViewById(R.id.title_text); 61b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mContentView = (TextView) v.findViewById(R.id.content_text); 62b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage = (ImageView) v.findViewById(R.id.extra_badge); 63b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask = (ImageView) v.findViewById(R.id.fade_mask); 64ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 65ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 66ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.lbImageCardView, 67ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu defStyle, 0); 68ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu try { 69ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu setInfoAreaBackground( 70ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu a.getDrawable(R.styleable.lbImageCardView_infoAreaBackground)); 71ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } finally { 72ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu a.recycle(); 73ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 74ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 75b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 76b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 77a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 78a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the main image view. 79a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 809de363b8db05106b03d115c266859fe200d41db7Dake Gu public final ImageView getMainImageView() { 819de363b8db05106b03d115c266859fe200d41db7Dake Gu return mImageView; 829de363b8db05106b03d115c266859fe200d41db7Dake Gu } 839de363b8db05106b03d115c266859fe200d41db7Dake Gu 84a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 85a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Enables or disables adjustment of view bounds on the main image. 86a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 879de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageAdjustViewBounds(boolean adjustViewBounds) { 889de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 899de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setAdjustViewBounds(adjustViewBounds); 909de363b8db05106b03d115c266859fe200d41db7Dake Gu } 919de363b8db05106b03d115c266859fe200d41db7Dake Gu } 929de363b8db05106b03d115c266859fe200d41db7Dake Gu 93a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 94a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the ScaleType of the main image. 95a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 969de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageScaleType(ScaleType scaleType) { 979de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 989de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setScaleType(scaleType); 999de363b8db05106b03d115c266859fe200d41db7Dake Gu } 1009de363b8db05106b03d115c266859fe200d41db7Dake Gu } 1019de363b8db05106b03d115c266859fe200d41db7Dake Gu 102932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 103a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the image drawable with fade-in animation. 104932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 105b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setMainImage(Drawable drawable) { 106932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu setMainImage(drawable, true); 107932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 108932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu 109932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 110a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the image drawable with optional fade-in animation. 111932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 112932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu public void setMainImage(Drawable drawable, boolean fade) { 113b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 114b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 115b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 116b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 117b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mImageView.setImageDrawable(drawable); 118b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (drawable == null) { 119932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 120932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 121b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.INVISIBLE); 122b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 123b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.VISIBLE); 124932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu if (fade) { 12589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout fadeIn(); 126932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } else { 127932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 128932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 129932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 130b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 131b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 132b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 133a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 134a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the layout dimensions of the ImageView. 135a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 136b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson public void setMainImageDimensions(int width, int height) { 137b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson ViewGroup.LayoutParams lp = mImageView.getLayoutParams(); 138b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.width = width; 139b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.height = height; 140b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setLayoutParams(lp); 141b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 142b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 143a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 144a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the ImageView drawable. 145a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 146b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getMainImage() { 147b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 148b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 149b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 150b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 151b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mImageView.getDrawable(); 152b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 153b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 154a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 155a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the info area background drawable. 156a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 157ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public Drawable getInfoAreaBackground() { 158ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 159ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return mInfoArea.getBackground(); 160ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 161ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return null; 162ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 163ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 164a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 165a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the info area background drawable. 166a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 167ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public void setInfoAreaBackground(Drawable drawable) { 168ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 169ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackground(drawable); 170ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mBadgeImage != null) { 171ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mBadgeImage.setBackground(drawable); 172ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 173ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 174ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 175ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 176a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 177a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the info area background color. 1780670f090a011e864bd726784c2a85333bf2ae7fbCraig Stout */ 17970acb0c19be3831a2080e4f902324de16bfbf62eTor Norbye public void setInfoAreaBackgroundColor(@ColorInt int color) { 180ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 181ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackgroundColor(color); 182ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mBadgeImage != null) { 183ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mBadgeImage.setBackgroundColor(color); 184ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 185ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 186ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 187ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 188a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 189a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the title text. 190a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 191b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setTitleText(CharSequence text) { 192b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 193b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 194b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 195b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 196b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mTitleView.setText(text); 197b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson setTextMaxLines(); 198b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 199b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 200a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 201a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the title text. 202a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 203b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getTitleText() { 204b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 205b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 206b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 207b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 208b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mTitleView.getText(); 209b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 210b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 211a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 212a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the content text. 213a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 214b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setContentText(CharSequence text) { 215b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 216b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 217b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 218b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 219b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mContentView.setText(text); 220b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson setTextMaxLines(); 221b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 222b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 223a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 224a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the content text. 225a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 226b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getContentText() { 227b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 228b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 229b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 230b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 231b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mContentView.getText(); 232b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 233b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 234a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 235a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets the badge image drawable. 236a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 237b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setBadgeImage(Drawable drawable) { 238b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 239b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 240b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 241b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 242b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (drawable != null) { 243b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setImageDrawable(drawable); 244b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.VISIBLE); 245b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask.setVisibility(View.VISIBLE); 246b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } else { 247b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.GONE); 248b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask.setVisibility(View.GONE); 249b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 250b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 251b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 252a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 253a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Returns the badge image drawable. 254a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 255b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getBadgeImage() { 256b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 257b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 258b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 259b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 260b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mBadgeImage.getDrawable(); 261b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 262b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 26389589687d8aafcfdc11d9760205e9d0b16505201Craig Stout private void fadeIn() { 26489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mImageView.setAlpha(0f); 26589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout if (mAttachedToWindow) { 26689589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mImageView.animate().alpha(1f).setDuration(mImageView.getResources().getInteger( 26789589687d8aafcfdc11d9760205e9d0b16505201Craig Stout android.R.integer.config_shortAnimTime)); 26889589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 269b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 270b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 271ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu @Override 272ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu public boolean hasOverlappingRendering() { 273ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu return false; 274ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu } 275ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu 276b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson private void setTextMaxLines() { 277b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (TextUtils.isEmpty(getTitleText())) { 278b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mContentView.setMaxLines(2); 279b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 280b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mContentView.setMaxLines(1); 281b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 282b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (TextUtils.isEmpty(getContentText())) { 283b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mTitleView.setMaxLines(2); 284b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 285b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mTitleView.setMaxLines(1); 286b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 287b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 2885358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout 2895358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout @Override 29089589687d8aafcfdc11d9760205e9d0b16505201Craig Stout protected void onAttachedToWindow() { 29189589687d8aafcfdc11d9760205e9d0b16505201Craig Stout super.onAttachedToWindow(); 29289589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mAttachedToWindow = true; 29389589687d8aafcfdc11d9760205e9d0b16505201Craig Stout if (mImageView.getAlpha() == 0) { 29489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout fadeIn(); 29589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 29689589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 29789589687d8aafcfdc11d9760205e9d0b16505201Craig Stout 29889589687d8aafcfdc11d9760205e9d0b16505201Craig Stout @Override 2995358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout protected void onDetachedFromWindow() { 30089589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mAttachedToWindow = false; 3015358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.animate().cancel(); 3025358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.setAlpha(1f); 3035358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout super.onDetachedFromWindow(); 3045358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout } 305b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn} 306