ImageCardView.java revision 9de363b8db05106b03d115c266859fe200d41db7
1/* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the License 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 * or implied. See the License for the specific language governing permissions and limitations under 12 * the License. 13 */ 14package android.support.v17.leanback.widget; 15 16import android.content.Context; 17import android.graphics.drawable.Drawable; 18import android.support.v17.leanback.R; 19import android.text.TextUtils; 20import android.util.AttributeSet; 21import android.view.LayoutInflater; 22import android.view.View; 23import android.view.ViewGroup; 24import android.widget.ImageView; 25import android.widget.ImageView.ScaleType; 26import android.widget.TextView; 27 28/** 29 * A card view with an {@link ImageView} as its main region. 30 */ 31public class ImageCardView extends BaseCardView { 32 33 private ImageView mImageView; 34 private View mInfoArea; 35 private TextView mTitleView; 36 private TextView mContentView; 37 private ImageView mBadgeImage; 38 private ImageView mBadgeFadeMask; 39 40 public ImageCardView(Context context) { 41 this(context, null); 42 } 43 44 public ImageCardView(Context context, AttributeSet attrs) { 45 this(context, attrs, R.attr.imageCardViewStyle); 46 } 47 48 public ImageCardView(Context context, AttributeSet attrs, int defStyle) { 49 super(context, attrs, defStyle); 50 51 LayoutInflater inflater = LayoutInflater.from(context); 52 View v = inflater.inflate(R.layout.lb_image_card_view, this); 53 54 mImageView = (ImageView) v.findViewById(R.id.main_image); 55 mImageView.setVisibility(View.INVISIBLE); 56 mInfoArea = v.findViewById(R.id.info_field); 57 mTitleView = (TextView) v.findViewById(R.id.title_text); 58 mContentView = (TextView) v.findViewById(R.id.content_text); 59 mBadgeImage = (ImageView) v.findViewById(R.id.extra_badge); 60 mBadgeFadeMask = (ImageView) v.findViewById(R.id.fade_mask); 61 } 62 63 public final ImageView getMainImageView() { 64 return mImageView; 65 } 66 67 public void setMainImageAdjustViewBounds(boolean adjustViewBounds) { 68 if (mImageView != null) { 69 mImageView.setAdjustViewBounds(adjustViewBounds); 70 } 71 } 72 73 public void setMainImageScaleType(ScaleType scaleType) { 74 if (mImageView != null) { 75 mImageView.setScaleType(scaleType); 76 } 77 } 78 79 public void setMainImage(Drawable drawable) { 80 if (mImageView == null) { 81 return; 82 } 83 84 mImageView.setImageDrawable(drawable); 85 if (drawable == null) { 86 mImageView.setVisibility(View.INVISIBLE); 87 } else { 88 mImageView.setVisibility(View.VISIBLE); 89 fadeIn(mImageView); 90 } 91 } 92 93 public void setMainImageDimensions(int width, int height) { 94 ViewGroup.LayoutParams lp = mImageView.getLayoutParams(); 95 lp.width = width; 96 lp.height = height; 97 mImageView.setLayoutParams(lp); 98 } 99 100 public Drawable getMainImage() { 101 if (mImageView == null) { 102 return null; 103 } 104 105 return mImageView.getDrawable(); 106 } 107 108 public void setTitleText(CharSequence text) { 109 if (mTitleView == null) { 110 return; 111 } 112 113 mTitleView.setText(text); 114 setTextMaxLines(); 115 } 116 117 public CharSequence getTitleText() { 118 if (mTitleView == null) { 119 return null; 120 } 121 122 return mTitleView.getText(); 123 } 124 125 public void setContentText(CharSequence text) { 126 if (mContentView == null) { 127 return; 128 } 129 130 mContentView.setText(text); 131 setTextMaxLines(); 132 } 133 134 public CharSequence getContentText() { 135 if (mContentView == null) { 136 return null; 137 } 138 139 return mContentView.getText(); 140 } 141 142 public void setBadgeImage(Drawable drawable) { 143 if (mBadgeImage == null) { 144 return; 145 } 146 147 if (drawable != null) { 148 mBadgeImage.setImageDrawable(drawable); 149 mBadgeImage.setVisibility(View.VISIBLE); 150 mBadgeFadeMask.setVisibility(View.VISIBLE); 151 } else { 152 mBadgeImage.setVisibility(View.GONE); 153 mBadgeFadeMask.setVisibility(View.GONE); 154 } 155 } 156 157 public Drawable getBadgeImage() { 158 if (mBadgeImage == null) { 159 return null; 160 } 161 162 return mBadgeImage.getDrawable(); 163 } 164 165 private void fadeIn(View v) { 166 v.setAlpha(0f); 167 v.animate().alpha(1f).setDuration(v.getContext().getResources().getInteger( 168 android.R.integer.config_shortAnimTime)).start(); 169 } 170 171 private void setTextMaxLines() { 172 if (TextUtils.isEmpty(getTitleText())) { 173 mContentView.setMaxLines(2); 174 } else { 175 mContentView.setMaxLines(1); 176 } 177 if (TextUtils.isEmpty(getContentText())) { 178 mTitleView.setMaxLines(2); 179 } else { 180 mTitleView.setMaxLines(1); 181 } 182 } 183} 184