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