Most visited

Recently visited

ImageCardView

public class ImageCardView
extends BaseCardView

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ android.support.v17.leanback.widget.BaseCardView
           ↳ android.support.v17.leanback.widget.ImageCardView


的一个子类BaseCardViewImageView作为其主要区域。 ImageCardView是高度可定制的,可以通过将ImageViewCard的类型调整为Title,Content,Badge或ImageOnly的任意组合来用于各种使用情况。

Styling

There are two different ways to style the ImageCardView.
No matter what way you use, all your styles applied to an ImageCardView have to extend the style Widget_Leanback_ImageCardViewStyle.

例:

 <style name="CustomImageCardViewStyle" parent="Widget.Leanback.ImageCardViewStyle">
        <item name="cardBackground">#F0F</item>
        <item name="lbImageCardViewType">Title|Content</item>
   </style>
   <style name="CustomImageCardTheme" parent="Theme.Leanback">
        <item name="imageCardViewStyle">@style/CustomImageCardViewStyle</item>
        <item name="imageCardViewInfoAreaStyle">@style/ImageCardViewColoredInfoArea</item>
        <item name="imageCardViewTitleStyle">@style/ImageCardViewColoredTitle</item>
    </style>
 

第一种可能性是在Leanback的主题的属性设置自定义样式 imageCardViewStyleimageCardViewTitleStyle等在这里设置的样式,是所有ImageCardViews的默认样式。

第二种可能性允许你设计一个特定的ImageCardView。 如果您想创建多种类型的卡片,这非常有用。 例如,您可能想要显示只有标题和另一个标题和内容的卡片。 因此您需要定义两个不同的ImageCardViewStyles和两个不同的主题,并将它们应用于ImageCardView。 您可以通过使用ImageCardView(Context)构造函数并将ContextThemeWrapper传递给自定义ImageCardView主题ID来完成此操作。

示例(使用构造函数):

 new ImageCardView(new ContextThemeWrapper(context, R.style.CustomImageCardTheme));
 
 

您可以通过扩展相应样式并覆盖自定义ImageCardView主题中的特定属性来对所有ImageCardView的组件进行样式设置,例如标题,内容,徽章,infoArea和图像本身。

Components

The ImageCardView contains three components which can be combined in any combination: In order to choose the components you want to use in your ImageCardView, you have to specify them in the lbImageCardViewType attribute of your custom ImageCardViewStyle. You can combine the following values: Title, Content, IconOnRight, IconOnLeft, ImageOnly.

例子:

 <style name="CustomImageCardViewStyle" parent="Widget.Leanback.ImageCardViewStyle">
        ...
        <item name="lbImageCardViewType">Title|Content|IconOnLeft</item>
        ...
    </style>
 
 <style name="CustomImageCardViewStyle" parent="Widget.Leanback.ImageCardViewStyle">
        ...
        <item name="lbImageCardViewType">ImageOnly</item>
        ...
    </style>
 

Summary

XML attributes

android.support.v17.leanback:imageCardViewBadgeStyle  
android.support.v17.leanback:imageCardViewContentStyle  
android.support.v17.leanback:imageCardViewImageStyle  
android.support.v17.leanback:imageCardViewInfoAreaStyle  
android.support.v17.leanback:imageCardViewStyle  
android.support.v17.leanback:imageCardViewTitleStyle  
android.support.v17.leanback:lbImageCardViewType Defines what components the ImageCardView will use. 

Inherited XML attributes

From class android.widget.FrameLayout
From class android.view.ViewGroup
From class android.view.View

Constants

int CARD_TYPE_FLAG_CONTENT

int CARD_TYPE_FLAG_ICON_LEFT

int CARD_TYPE_FLAG_ICON_RIGHT

int CARD_TYPE_FLAG_IMAGE_ONLY

int CARD_TYPE_FLAG_TITLE

Inherited constants

From class android.support.v17.leanback.widget.BaseCardView
From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

ImageCardView(Context context, int themeResId)

此构造函数已弃用。 调用这个构造函数无法有效地为每张卡片创建一个ContextThemeWrapper,你应该在卡片Presenter中分享它:wrapper = new ContextThemeWrapper(context,themResId); 返回新的ImageCardView(包装);

ImageCardView(Context context, AttributeSet attrs, int defStyleAttr)
ImageCardView(Context context)
ImageCardView(Context context, AttributeSet attrs)

Public methods

Drawable getBadgeImage()

返回可绘制的徽章图像。

CharSequence getContentText()

返回内容文本。

Drawable getInfoAreaBackground()

返回可绘制的信息区域背景。

Drawable getMainImage()

返回ImageView drawable。

final ImageView getMainImageView()

返回主图像视图。

CharSequence getTitleText()

返回标题文本。

boolean hasOverlappingRendering()

返回此视图是否包含重叠的内容。

void setBadgeImage(Drawable drawable)

设置可绘制的徽章图像。

void setContentText(CharSequence text)

设置内容文本。

void setInfoAreaBackground(Drawable drawable)

设置可绘制的信息区域背景。

void setInfoAreaBackgroundColor(int color)

设置信息区域的背景色。

void setMainImage(Drawable drawable, boolean fade)

使用可选淡入动画设置可绘制图像。

void setMainImage(Drawable drawable)

使用淡入动画设置可绘制的图像。

void setMainImageAdjustViewBounds(boolean adjustViewBounds)

启用或禁用主图像上视图边界的调整。

void setMainImageDimensions(int width, int height)

设置ImageView的布局尺寸。

void setMainImageScaleType(ImageView.ScaleType scaleType)

设置主图像的ScaleType。

void setTitleText(CharSequence text)

设置标题文本。

Protected methods

void onAttachedToWindow()

这在视图附加到窗口时被调用。

void onDetachedFromWindow()

这是在视图从窗口分离时调用的。

Inherited methods

From class android.support.v17.leanback.widget.BaseCardView
From class android.widget.FrameLayout
From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource

XML attributes

android.support.v17.leanback:imageCardViewBadgeStyle

android.support.v17.leanback:imageCardViewContentStyle

android.support.v17.leanback:imageCardViewImageStyle

android.support.v17.leanback:imageCardViewInfoAreaStyle

android.support.v17.leanback:imageCardViewStyle

android.support.v17.leanback:imageCardViewTitleStyle

android.support.v17.leanback:lbImageCardViewType

定义ImageCardView将使用哪些组件。

必须是以下常量值中的一个或多个(用'|'分隔)。

Constant Value 描述
Content 2
IconOnLeft 8
IconOnRight 4
ImageOnly 0 Only display the main image.
Title 1

Constants

CARD_TYPE_FLAG_CONTENT

int CARD_TYPE_FLAG_CONTENT

常量值:2(0x00000002)

CARD_TYPE_FLAG_ICON_LEFT

int CARD_TYPE_FLAG_ICON_LEFT

常量值:8(0x00000008)

CARD_TYPE_FLAG_ICON_RIGHT

int CARD_TYPE_FLAG_ICON_RIGHT

常量值:4(0x00000004)

CARD_TYPE_FLAG_IMAGE_ONLY

int CARD_TYPE_FLAG_IMAGE_ONLY

常量值:0(0x00000000)

CARD_TYPE_FLAG_TITLE

int CARD_TYPE_FLAG_TITLE

常数值:1(0x00000001)

Public constructors

ImageCardView

ImageCardView (Context context, 
                int themeResId)

此构造函数已弃用。
调用这个构造函数无法有效地为每张卡片创建一个ContextThemeWrapper,你应该在卡片Presenter中分享它:wrapper = new ContextThemeWrapper(context,themResId); 返回新的ImageCardView(包装);

使用给定的主题创建ImageCardView以进行自定义。

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.
themeResId int: The resourceId of the theme you want to apply to the ImageCardView. The theme includes attributes "imageCardViewStyle", "imageCardViewTitleStyle", "imageCardViewContentStyle" etc. to customize individual part of ImageCardView.

ImageCardView

ImageCardView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context
attrs AttributeSet
defStyleAttr int

也可以看看:

ImageCardView

ImageCardView (Context context)

Parameters
context Context

也可以看看:

ImageCardView

ImageCardView (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

也可以看看:

Public methods

getBadgeImage

Drawable getBadgeImage ()

返回可绘制的徽章图像。

Returns
Drawable

getContentText

CharSequence getContentText ()

返回内容文本。

Returns
CharSequence

getInfoAreaBackground

Drawable getInfoAreaBackground ()

返回可绘制的信息区域背景。

Returns
Drawable

getMainImage

Drawable getMainImage ()

返回ImageView drawable。

Returns
Drawable

getMainImageView

ImageView getMainImageView ()

返回主图像视图。

Returns
ImageView

getTitleText

CharSequence getTitleText ()

返回标题文本。

Returns
CharSequence

hasOverlappingRendering

boolean hasOverlappingRendering ()

返回此视图是否包含重叠的内容。

打算被特定视图类型覆盖的此函数是在视图上设置alpha时的优化。 如果渲染在alpha <1的视图中重叠,则该视图将被拖到屏幕外的缓冲区,然后合成到位,这可能很昂贵。 如果视图没有重叠的渲染,视图可以直接用适当的alpha值绘制每个基元。 重叠渲染的一个例子是带有背景图像的TextView,例如Button。 非重叠渲染的一个例子是没有背景的TextView或只有前景图像的ImageView。 默认实现返回true; 如果子类有可以优化的情况,子类应该重写。

当前实现在saveLayer和saveLayerAlpha方法 Canvas必要,一个视图,如果它使用的方法在内部,而没有经过返回true CLIP_TO_LAYER_SAVE_FLAG

注意:如果在此视图上调用了 forceHasOverlappingRendering(boolean) ,则此方法的返回值将被忽略。

Returns
boolean true if the content in this view might overlap, false otherwise.

setBadgeImage

void setBadgeImage (Drawable drawable)

设置可绘制的徽章图像。

Parameters
drawable Drawable

setContentText

void setContentText (CharSequence text)

设置内容文本。

Parameters
text CharSequence

setInfoAreaBackground

void setInfoAreaBackground (Drawable drawable)

设置可绘制的信息区域背景。

Parameters
drawable Drawable

setInfoAreaBackgroundColor

void setInfoAreaBackgroundColor (int color)

设置信息区域的背景色。

Parameters
color int

setMainImage

void setMainImage (Drawable drawable, 
                boolean fade)

使用可选淡入动画设置可绘制图像。

Parameters
drawable Drawable
fade boolean

setMainImage

void setMainImage (Drawable drawable)

使用淡入动画设置可绘制的图像。

Parameters
drawable Drawable

setMainImageAdjustViewBounds

void setMainImageAdjustViewBounds (boolean adjustViewBounds)

启用或禁用主图像上视图边界的调整。

Parameters
adjustViewBounds boolean

setMainImageDimensions

void setMainImageDimensions (int width, 
                int height)

设置ImageView的布局尺寸。

Parameters
width int
height int

setMainImageScaleType

void setMainImageScaleType (ImageView.ScaleType scaleType)

设置主图像的ScaleType。

Parameters
scaleType ImageView.ScaleType

setTitleText

void setTitleText (CharSequence text)

设置标题文本。

Parameters
text CharSequence

Protected methods

onAttachedToWindow

void onAttachedToWindow ()

这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此功能保证在onDraw(android.graphics.Canvas)之前onDraw(android.graphics.Canvas) ,但可能会在第一次onDraw之前的任何时候调用 - 包括onMeasure(int, int)之前或之后。

onDetachedFromWindow

void onDetachedFromWindow ()

这是在视图从窗口分离时调用的。 此时它不再有绘图表面。

Hooray!