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; 19b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.support.v17.leanback.R; 20b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilsonimport android.text.TextUtils; 21b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.util.AttributeSet; 22b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.view.LayoutInflater; 23b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.view.View; 24b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilsonimport android.view.ViewGroup; 25b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.widget.ImageView; 269de363b8db05106b03d115c266859fe200d41db7Dake Guimport android.widget.ImageView.ScaleType; 27b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournimport android.widget.TextView; 28b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 29961a8f12d1fbeeb86ea066f9f2c693abb2ce50f2Tim Kilbourn/** 30961a8f12d1fbeeb86ea066f9f2c693abb2ce50f2Tim Kilbourn * A card view with an {@link ImageView} as its main region. 31961a8f12d1fbeeb86ea066f9f2c693abb2ce50f2Tim Kilbourn */ 32b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbournpublic class ImageCardView extends BaseCardView { 33b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 34b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private ImageView mImageView; 35b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private View mInfoArea; 36b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private TextView mTitleView; 37b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private TextView mContentView; 38b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private ImageView mBadgeImage; 39b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn private ImageView mBadgeFadeMask; 4007a94289970bb0badbd427b40eca97131638874dCraig 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); 62b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask = (ImageView) v.findViewById(R.id.fade_mask); 63ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 64ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 65ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.lbImageCardView, 66ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu defStyle, 0); 67ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu try { 68ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu setInfoAreaBackground( 69ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu a.getDrawable(R.styleable.lbImageCardView_infoAreaBackground)); 70ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } finally { 71ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu a.recycle(); 72ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 73ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 74b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 75b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 769de363b8db05106b03d115c266859fe200d41db7Dake Gu public final ImageView getMainImageView() { 779de363b8db05106b03d115c266859fe200d41db7Dake Gu return mImageView; 789de363b8db05106b03d115c266859fe200d41db7Dake Gu } 799de363b8db05106b03d115c266859fe200d41db7Dake Gu 809de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageAdjustViewBounds(boolean adjustViewBounds) { 819de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 829de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setAdjustViewBounds(adjustViewBounds); 839de363b8db05106b03d115c266859fe200d41db7Dake Gu } 849de363b8db05106b03d115c266859fe200d41db7Dake Gu } 859de363b8db05106b03d115c266859fe200d41db7Dake Gu 869de363b8db05106b03d115c266859fe200d41db7Dake Gu public void setMainImageScaleType(ScaleType scaleType) { 879de363b8db05106b03d115c266859fe200d41db7Dake Gu if (mImageView != null) { 889de363b8db05106b03d115c266859fe200d41db7Dake Gu mImageView.setScaleType(scaleType); 899de363b8db05106b03d115c266859fe200d41db7Dake Gu } 909de363b8db05106b03d115c266859fe200d41db7Dake Gu } 919de363b8db05106b03d115c266859fe200d41db7Dake Gu 92932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 93932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu * Set drawable with fade-in animation. 94932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 95b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setMainImage(Drawable drawable) { 96932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu setMainImage(drawable, true); 97932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 98932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu 99932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu /** 100932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu * Set drawable with optional fade-in animation. 101932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu */ 102932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu public void setMainImage(Drawable drawable, boolean fade) { 103b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 104b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 105b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 106b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 107b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mImageView.setImageDrawable(drawable); 108b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (drawable == null) { 109932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 110932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 111b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.INVISIBLE); 112b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 113b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setVisibility(View.VISIBLE); 114932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu if (fade) { 11507a94289970bb0badbd427b40eca97131638874dCraig Stout fadeIn(); 116932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } else { 117932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.animate().cancel(); 118932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu mImageView.setAlpha(1f); 119932feed83c3dbc49c9855a1736afd9d5a3428b8eDake Gu } 120b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 121b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 122b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 123b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson public void setMainImageDimensions(int width, int height) { 124b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson ViewGroup.LayoutParams lp = mImageView.getLayoutParams(); 125b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.width = width; 126b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson lp.height = height; 127b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mImageView.setLayoutParams(lp); 128b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 129b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 130b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getMainImage() { 131b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mImageView == null) { 132b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 133b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 134b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 135b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mImageView.getDrawable(); 136b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 137b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 138ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public Drawable getInfoAreaBackground() { 139ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 140ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return mInfoArea.getBackground(); 141ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 142ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu return null; 143ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 144ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 145ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public void setInfoAreaBackground(Drawable drawable) { 146ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 147ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackground(drawable); 148ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mBadgeImage != null) { 149ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mBadgeImage.setBackground(drawable); 150ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 151ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 152ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 153ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 154ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu public void setInfoAreaBackgroundColor(int color) { 155ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mInfoArea != null) { 156ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mInfoArea.setBackgroundColor(color); 157ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu if (mBadgeImage != null) { 158ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu mBadgeImage.setBackgroundColor(color); 159ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 160ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 161ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu } 162ae2614fe4c86c79344dc7dcb07777143b2fbd0d6Dake Gu 163b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setTitleText(CharSequence text) { 164b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 165b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 166b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 167b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 168b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mTitleView.setText(text); 169b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson setTextMaxLines(); 170b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 171b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 172b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getTitleText() { 173b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mTitleView == null) { 174b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 175b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 176b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 177b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mTitleView.getText(); 178b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 179b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 180b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setContentText(CharSequence text) { 181b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 182b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 183b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 184b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 185b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mContentView.setText(text); 186b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson setTextMaxLines(); 187b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 188b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 189b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public CharSequence getContentText() { 190b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mContentView == null) { 191b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 192b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 193b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 194b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mContentView.getText(); 195b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 196b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 197b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public void setBadgeImage(Drawable drawable) { 198b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 199b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return; 200b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 201b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 202b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (drawable != null) { 203b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setImageDrawable(drawable); 204b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.VISIBLE); 205b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask.setVisibility(View.VISIBLE); 206b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } else { 207b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeImage.setVisibility(View.GONE); 208b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn mBadgeFadeMask.setVisibility(View.GONE); 209b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 210b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 211b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 212b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn public Drawable getBadgeImage() { 213b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn if (mBadgeImage == null) { 214b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return null; 215b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 216b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn 217b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn return mBadgeImage.getDrawable(); 218b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn } 219b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 22007a94289970bb0badbd427b40eca97131638874dCraig Stout private void fadeIn() { 22107a94289970bb0badbd427b40eca97131638874dCraig Stout mImageView.setAlpha(0f); 22207a94289970bb0badbd427b40eca97131638874dCraig Stout if (mAttachedToWindow) { 22307a94289970bb0badbd427b40eca97131638874dCraig Stout mImageView.animate().alpha(1f).setDuration(mImageView.getResources().getInteger( 22407a94289970bb0badbd427b40eca97131638874dCraig Stout android.R.integer.config_shortAnimTime)); 22507a94289970bb0badbd427b40eca97131638874dCraig Stout } 226b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 227b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson 228ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu @Override 229ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu public boolean hasOverlappingRendering() { 230ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu return false; 231ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu } 232ceb7ab2ddd6e157cd4ade0f14a382c39428163c4Dake Gu 233b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson private void setTextMaxLines() { 234b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (TextUtils.isEmpty(getTitleText())) { 235b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mContentView.setMaxLines(2); 236b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 237b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mContentView.setMaxLines(1); 238b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 239b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson if (TextUtils.isEmpty(getContentText())) { 240b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mTitleView.setMaxLines(2); 241b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } else { 242b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson mTitleView.setMaxLines(1); 243b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 244b6e24f60743bd2022dd496126f0ff683ff6b3713Andrew Wilson } 2455358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout 2465358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout @Override 24707a94289970bb0badbd427b40eca97131638874dCraig Stout protected void onAttachedToWindow() { 24807a94289970bb0badbd427b40eca97131638874dCraig Stout super.onAttachedToWindow(); 24907a94289970bb0badbd427b40eca97131638874dCraig Stout mAttachedToWindow = true; 25007a94289970bb0badbd427b40eca97131638874dCraig Stout if (mImageView.getAlpha() == 0) { 25107a94289970bb0badbd427b40eca97131638874dCraig Stout fadeIn(); 25207a94289970bb0badbd427b40eca97131638874dCraig Stout } 25307a94289970bb0badbd427b40eca97131638874dCraig Stout } 25407a94289970bb0badbd427b40eca97131638874dCraig Stout 25507a94289970bb0badbd427b40eca97131638874dCraig Stout @Override 2565358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout protected void onDetachedFromWindow() { 25707a94289970bb0badbd427b40eca97131638874dCraig Stout mAttachedToWindow = false; 2585358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.animate().cancel(); 2595358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout mImageView.setAlpha(1f); 2605358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout super.onDetachedFromWindow(); 2615358b0ca6ed795892bd097fdf15d41fb6b1a03d2Craig Stout } 262b55f0880c367c0b7e4132e7d954b60725e01e0b2Tim Kilbourn} 263