Most visited

Recently visited

ShadowOverlayContainer

public class ShadowOverlayContainer
extends FrameLayout

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


提供独立于SDK版本的封装以支持阴影,颜色叠加层和圆角。 创建ShadowOverlayContainer并不总是首选,请改用ShadowOverlayHelper

必须在使用阴影之前在容器的父级上调用prepareParentForShadow(ViewGroup) 根据sdk版本,光学边界可能会应用于父项。

如果阴影可能出现在父视图的边界之外,则必须在祖父视图上调用setClipChildren(false)。

必须先在容器上调用initialize(boolean, boolean, boolean) 然后调用wrap(View)将包装视图插入到容器中。

调用 setShadowFocusLevel(float)来控制阴影的强度(聚焦阴影投射更强的阴影)。

致电 setOverlayColor(int)以控制叠加颜色。

Summary

Inherited XML attributes

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

Constants

int SHADOW_DYNAMIC

阴影取决于视图的大小,形状和位置。

int SHADOW_NONE

没有影子。

int SHADOW_STATIC

阴影是固定的。

Inherited constants

From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

ShadowOverlayContainer(Context context)

创建ShadowOverlayContainer和自动选择阴影类型。

ShadowOverlayContainer(Context context, AttributeSet attrs)

创建ShadowOverlayContainer和自动选择阴影类型。

ShadowOverlayContainer(Context context, AttributeSet attrs, int defStyle)

创建ShadowOverlayContainer和自动选择阴影类型。

Public methods

void draw(Canvas canvas)

手动将此视图(及其所有子项)呈现给定的Canvas。

int getShadowType()

返回的阴影类型,一个 SHADOW_NONESHADOW_STATIC ,或 SHADOW_DYNAMIC

View getWrappedView()

返回包装视图。

boolean hasOverlappingRendering()

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

void initialize(boolean hasShadow, boolean hasColorDimOverlay)

此方法已弃用。 改为使用createShadowOverlayContainer(Context)

void initialize(boolean hasShadow, boolean hasColorDimOverlay, boolean roundedCorners)

此方法已弃用。 改用createShadowOverlayContainer(Context)

static void prepareParentForShadow(ViewGroup parent)

必须在使用阴影之前在容器的父级上调用 prepareParentForShadow(ViewGroup)

void setOverlayColor(int overlayColor)

设置叠加层的颜色(带alpha)。

void setShadowFocusLevel(float level)

设置阴影对焦水平(0到1)。

static boolean supportsDynamicShadow()

如果平台sdk支持动态阴影,则返回true。

static boolean supportsShadow()

如果平台sdk支持阴影,则返回true。

void useDynamicShadow(float unfocusedZ, float focusedZ)

如果支持,将阴影类型设置为 SHADOW_DYNAMIC ,并将高程/ Z值设置为给定参数。

void useDynamicShadow()

如果支持,将阴影类型设置为 SHADOW_DYNAMIC

void useStaticShadow()

如果支持,将阴影类型设置为 SHADOW_STATIC

void wrap(View view)

将视图插入到包装中。

Protected methods

void onLayout(boolean changed, int l, int t, int r, int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。

Inherited methods

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

Constants

SHADOW_DYNAMIC

int SHADOW_DYNAMIC

阴影取决于视图的大小,形状和位置。

常量值:3(0x00000003)

SHADOW_NONE

int SHADOW_NONE

没有影子。

常数值:1(0x00000001)

SHADOW_STATIC

int SHADOW_STATIC

阴影是固定的。

常量值:2(0x00000002)

Public constructors

ShadowOverlayContainer

ShadowOverlayContainer (Context context)

创建ShadowOverlayContainer和自动选择阴影类型。

Parameters
context Context

ShadowOverlayContainer

ShadowOverlayContainer (Context context, 
                AttributeSet attrs)

创建ShadowOverlayContainer和自动选择阴影类型。

Parameters
context Context
attrs AttributeSet

ShadowOverlayContainer

ShadowOverlayContainer (Context context, 
                AttributeSet attrs, 
                int defStyle)

创建ShadowOverlayContainer和自动选择阴影类型。

Parameters
context Context
attrs AttributeSet
defStyle int

Public methods

draw

void draw (Canvas canvas)

手动将此视图(及其所有子项)呈现给定的Canvas。 在调用这个函数之前,视图必须已经完成了一个完整的布局。 在实现视图时,实现onDraw(android.graphics.Canvas)而不是重写此方法。 如果您确实需要重写此方法,请调用超类版本。

Parameters
canvas Canvas: The Canvas to which the View is rendered.

getShadowType

int getShadowType ()

返回的阴影类型,一个 SHADOW_NONESHADOW_STATIC ,或 SHADOW_DYNAMIC

Returns
int

getWrappedView

View getWrappedView ()

返回包装视图。

Returns
View

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.

initialize

void initialize (boolean hasShadow, 
                boolean hasColorDimOverlay)

此方法已弃用。
改为使用createShadowOverlayContainer(Context)

初始化阴影,颜色叠加。

Parameters
hasShadow boolean
hasColorDimOverlay boolean

initialize

void initialize (boolean hasShadow, 
                boolean hasColorDimOverlay, 
                boolean roundedCorners)

此方法已弃用。
改为使用createShadowOverlayContainer(Context)

初始化阴影,颜色叠加和圆角。 全部都是可选的。 影子类型是根据useStaticShadow()useDynamicShadow()调用自动选择的。

Parameters
hasShadow boolean
hasColorDimOverlay boolean
roundedCorners boolean

prepareParentForShadow

void prepareParentForShadow (ViewGroup parent)

必须在使用阴影之前在容器的父级上调用prepareParentForShadow(ViewGroup) 根据sdk版本,光学边界可能会应用于父项。

Parameters
parent ViewGroup

setOverlayColor

void setOverlayColor (int overlayColor)

设置叠加层的颜色(带alpha)。

Parameters
overlayColor int

setShadowFocusLevel

void setShadowFocusLevel (float level)

设置阴影对焦水平(0到1)。 0为未聚焦,1f为完全聚焦。

Parameters
level float

supportsDynamicShadow

boolean supportsDynamicShadow ()

如果平台sdk支持动态阴影,则返回true。

Returns
boolean

supportsShadow

boolean supportsShadow ()

如果平台sdk支持阴影,则返回true。

Returns
boolean

useDynamicShadow

void useDynamicShadow (float unfocusedZ, 
                float focusedZ)

如果支持,将阴影类型设置为 SHADOW_DYNAMIC ,并将高程/ Z值设置为给定参数。

Parameters
unfocusedZ float
focusedZ float

useDynamicShadow

void useDynamicShadow ()

如果支持,将阴影类型设置为 SHADOW_DYNAMIC

useStaticShadow

void useStaticShadow ()

如果支持,将阴影类型设置为 SHADOW_STATIC

wrap

void wrap (View view)

将视图插入到包装中。

Parameters
view View

Protected methods

onLayout

void onLayout (boolean changed, 
                int l, 
                int t, 
                int r, 
                int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。 带孩子的派生类应该覆盖这个方法,并调用他们每个孩子的布局。

Parameters
changed boolean: This is a new size or position for this view
l int: Left position, relative to parent
t int: Top position, relative to parent
r int: Right position, relative to parent
b int: Bottom position, relative to parent

Hooray!