ImageCardView.java revision 70acb0c19be3831a2080e4f902324de16bfbf62e
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/** 31961a8f12d1fbeeb86ea066f9f2c693abb2ce50f2Tim Kilbourn * A card view 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 779de363b8db05106b03d115c266859fe200d41db7Dake Gu public final ImageView getMainImageView() { 789de363b8db05106b03d115c266859fe200d41db7Dake Gu return mImageView; 799de363b8db05106b03d115c266859fe200d41db7Dake Gu } 809de363b8db05106b03d115c266859fe200d41db7Dake Gu 819de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageAdjustViewBounds(boolean adjustViewBounds) { 829de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 839de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setAdjustViewBounds(adjustViewBounds); 849de363b8db05106b03d115c266859fe200d41db7Dake Gu } 859de363b8db05106b03d115c266859fe200d41db7Dake Gu } 869de363b8db05106b03d115c266859fe200d41db7Dake Gu 879de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageScaleType(ScaleType scaleType) { 889de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 899de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setScaleType(scaleType); 909de363b8db05106b03d115c266859fe200d41db7Dake Gu } 919de363b8db05106b03d115c266859fe200d41db7Dake Gu } 929de363b8db05106b03d115c266859fe200d41db7Dake Gu 93932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 94932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu * Set drawable with fade-in animation. 95932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 96b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setMainImage(Drawable drawable) { 97932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu setMainImage(drawable, true); 98932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 99932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu 100932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 101932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu * Set drawable with optional fade-in animation. 102932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 103932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu public void setMainImage(Drawable drawable, boolean fade) { 104b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 105b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 106b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 107b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 108b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mImageView.setImageDrawable(drawable); 109b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (drawable == null) { 110932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 111932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 112b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.INVISIBLE); 113b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 114b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.VISIBLE); 115932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu if (fade) { 11689589687d8aafcfdc11d9760205e9d0b16505201Craig Stout fadeIn(); 117932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } else { 118932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 119932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 120932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 121b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 122b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 123b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 124b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson public void setMainImageDimensions(int width, int height) { 125b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson ViewGroup.LayoutParams lp = mImageView.getLayoutParams(); 126b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.width = width; 127b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.height = height; 128b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setLayoutParams(lp); 129b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 130b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 131b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getMainImage() { 132b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 133b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 134b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 135b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 136b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mImageView.getDrawable(); 137b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 138b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 139ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public Drawable getInfoAreaBackground() { 140ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 141ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return mInfoArea.getBackground(); 142ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 143ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return null; 144ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 145ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 146ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public void setInfoAreaBackground(Drawable drawable) { 147ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 148ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackground(drawable); 149ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mBadgeImage != null) { 150ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mBadgeImage.setBackground(drawable); 151ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 152ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 153ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 154ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 15570acb0c19be3831a2080e4f902324de16bfbf62eTor Norbye public void setInfoAreaBackgroundColor(@ColorInt int color) { 156ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 157ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackgroundColor(color); 158ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mBadgeImage != null) { 159ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mBadgeImage.setBackgroundColor(color); 160ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 161ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 162ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 163ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 164b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setTitleText(CharSequence text) { 165b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 166b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 167b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 168b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 169b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mTitleView.setText(text); 170b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson setTextMaxLines(); 171b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 172b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 173b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getTitleText() { 174b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 175b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 176b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 177b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 178b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mTitleView.getText(); 179b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 180b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 181b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setContentText(CharSequence text) { 182b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 183b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 184b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 185b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 186b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mContentView.setText(text); 187b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson setTextMaxLines(); 188b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 189b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 190b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getContentText() { 191b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 192b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 193b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 194b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 195b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mContentView.getText(); 196b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 197b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 198b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setBadgeImage(Drawable drawable) { 199b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 200b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 201b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 202b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 203b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (drawable != null) { 204b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setImageDrawable(drawable); 205b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.VISIBLE); 206b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask.setVisibility(View.VISIBLE); 207b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } else { 208b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.GONE); 209b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask.setVisibility(View.GONE); 210b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 211b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 212b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 213b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getBadgeImage() { 214b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 215b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 216b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 217b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 218b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mBadgeImage.getDrawable(); 219b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 220b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 22189589687d8aafcfdc11d9760205e9d0b16505201Craig Stout private void fadeIn() { 22289589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mImageView.setAlpha(0f); 22389589687d8aafcfdc11d9760205e9d0b16505201Craig Stout if (mAttachedToWindow) { 22489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mImageView.animate().alpha(1f).setDuration(mImageView.getResources().getInteger( 22589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout android.R.integer.config_shortAnimTime)); 22689589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 227b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 228b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 229ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu @Override 230ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu public boolean hasOverlappingRendering() { 231ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu return false; 232ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu } 233ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu 234b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson private void setTextMaxLines() { 235b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (TextUtils.isEmpty(getTitleText())) { 236b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mContentView.setMaxLines(2); 237b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 238b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mContentView.setMaxLines(1); 239b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 240b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (TextUtils.isEmpty(getContentText())) { 241b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mTitleView.setMaxLines(2); 242b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 243b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mTitleView.setMaxLines(1); 244b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 245b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 2465358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout 2475358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout @Override 24889589687d8aafcfdc11d9760205e9d0b16505201Craig Stout protected void onAttachedToWindow() { 24989589687d8aafcfdc11d9760205e9d0b16505201Craig Stout super.onAttachedToWindow(); 25089589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mAttachedToWindow = true; 25189589687d8aafcfdc11d9760205e9d0b16505201Craig Stout if (mImageView.getAlpha() == 0) { 25289589687d8aafcfdc11d9760205e9d0b16505201Craig Stout fadeIn(); 25389589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 25489589687d8aafcfdc11d9760205e9d0b16505201Craig Stout } 25589589687d8aafcfdc11d9760205e9d0b16505201Craig Stout 25689589687d8aafcfdc11d9760205e9d0b16505201Craig Stout @Override 2575358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout protected void onDetachedFromWindow() { 25889589687d8aafcfdc11d9760205e9d0b16505201Craig Stout mAttachedToWindow = false; 2595358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.animate().cancel(); 2605358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.setAlpha(1f); 2615358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout super.onDetachedFromWindow(); 2625358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout } 263b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn} 264