Most visited

Recently visited

SlidingPaneLayout

public class SlidingPaneLayout
extends ViewGroup

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.support.v4.widget.SlidingPaneLayout


SlidingPaneLayout提供了一个水平的多窗格布局,用于UI的顶层。 左侧(或第一个)窗格被视为内容列表或浏览器,从属于用于显示内容的主要详细视图。

如果组合宽度超过SlidingPaneLayout中的可用宽度,子视图可能会重叠。 发生这种情况时,用户可以通过拖动最上面的视图,或通过使用键盘沿重叠视图的方向导航。 如果拖动的子视图的内容本身可以水平滚动,则用户可以抓住它的边缘。

由于这种滑动行为,SlidingPaneLayout可能适用于创建可平滑适应多种不同屏幕尺寸的布局,在较大的屏幕上完全展开并在较小的屏幕上展开。

SlidingPaneLayout与设计指南中描述的导航抽屉不同,不应在相同场景中使用。 SlidingPaneLayout应该被认为只是一种允许在大屏幕上通常使用的双窗格布局以自然方式适应较小屏幕的方式。 由SlidingPaneLayout表示的交互模式意味着窗格之间的物理性和直接信息层次结构,而不一定存在于应该使用导航抽屉的场景中。

SlidingPaneLayout的适当用法包括窗格的配对,例如联系人列表和与这些联系人的从属交互,或者包含内容窗格的电子邮件线索列表,显示所选线程的内容。 SlidingPaneLayout的不恰当用法包括在应用程序的不同功能之间切换,例如从社交流视图跳转到个人资料视图 - 此类情况应该使用导航抽屉模式。 DrawerLayout实现此模式。)

LinearLayout一样,SlidingPaneLayout支持在子视图上使用布局参数layout_weight ,以确定在测量完成后如何划分剩余空间。 它只与宽度有关。 当视图不重叠时,重量会像在LinearLayout中一样。

当视图确实重叠时,可滑动窗格上的重量指示应调整窗格的大小以填充关闭状态下的所有可用空间。 覆盖窗格上的重量表示窗格的大小应满足所有可用空间的尺寸,但用户可用于抓取可滑动视图并将其拉回到关闭状态的小型最小条纹除外。

Summary

Nested classes

class SlidingPaneLayout.LayoutParams

 

interface SlidingPaneLayout.PanelSlideListener

监听器用于监视滑动窗格的事件。

class SlidingPaneLayout.SimplePanelSlideListener

无操作存根SlidingPaneLayout.PanelSlideListener

Inherited XML attributes

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

Inherited constants

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

Inherited fields

From class android.view.View

Public constructors

SlidingPaneLayout(Context context)
SlidingPaneLayout(Context context, AttributeSet attrs)
SlidingPaneLayout(Context context, AttributeSet attrs, int defStyle)

Public methods

boolean canSlide()

此方法已弃用。 更名为isSlideable() - 这种方法很快就会消失!

boolean closePane()

如果滑动窗格当前可滑动,请关闭滑动窗格。

void computeScroll()

由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。

void draw(Canvas c)

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

ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

int getCoveredFadeColor()
int getParallaxDistance()
int getSliderFadeColor()
boolean isOpen()

检查布局是否完全打开。

boolean isSlideable()

检查此布局中的内容是否不能完全适合并排,因此内容窗格可以前后滑动。

boolean onInterceptTouchEvent(MotionEvent ev)

实施此方法来拦截所有触摸屏幕动作事件。

boolean onTouchEvent(MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

boolean openPane()

如果当前可滑动,请打开滑动窗格。

void requestChildFocus(View child, View focused)

当这个父母的孩子需要关注时调用

void setCoveredFadeColor(int color)

当窗格在关闭状态下完全覆盖时,设置用于淡出由滑动窗格覆盖的窗格的颜色。

void setPanelSlideListener(SlidingPaneLayout.PanelSlideListener listener)
void setParallaxDistance(int parallaxBy)

当上部窗格处于完全关闭状态时,设置视差下部窗格的距离。

void setShadowDrawable(Drawable d)

此方法已弃用。 在打开/关闭期间, setShadowDrawableLeft(Drawable)其重命名为setShadowDrawableLeft(Drawable)以支持LTR(从左到右语言)和setShadowDrawableRight(Drawable)以支持RTL(从右向左语言)。

void setShadowDrawableLeft(Drawable d)

在打开/关闭期间,设置一个可绘制的元素作为右窗格投影到左窗格的阴影。

void setShadowDrawableRight(Drawable d)

在打开/关闭期间,设置一个可绘制的元素作为左窗格投射到右窗格的阴影,以支持从右到左的语言。

void setShadowResource(int resId)

此方法已弃用。 在打开/关闭期间, setShadowResourceLeft(int)其重命名为setShadowResourceLeft(int)以支持LTR(从左到右的语言)和setShadowResourceRight(int)以支持RTL(从右向左的语言)。

void setShadowResourceLeft(int resId)

在打开/关闭期间,设置一个可绘制的元素作为右窗格投影到左窗格的阴影。

void setShadowResourceRight(int resId)

在打开/关闭期间,设置一个可绘制的元素作为左窗格投射到右窗格的阴影,以支持从右到左的语言。

void setSliderFadeColor(int color)

设置滑动窗格大部分偏离屏幕时用于淡出滑动窗格的颜色。

void smoothSlideClosed()

此方法已弃用。 更名为closePane() - 这种方法很快就会消失!

void smoothSlideOpen()

此方法已弃用。 更名为openPane() - 这种方法很快就会消失!

Protected methods

boolean canScroll(View v, boolean checkV, int dx, int x, int y)

测试v的子视图中的可滚动性,给定dx的增量。

boolean checkLayoutParams(ViewGroup.LayoutParams p)
boolean drawChild(Canvas canvas, View child, long drawingTime)

绘制这个视图组的一个孩子。

ViewGroup.LayoutParams generateDefaultLayoutParams()

返回一组默认布局参数。

ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。

void onAttachedToWindow()

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

void onDetachedFromWindow()

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

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

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

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

void onRestoreInstanceState(Parcelable state)

吊钩允许视图重新应用以前由 onSaveInstanceState()生成的内部状态的表示。

Parcelable onSaveInstanceState()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。

void onSizeChanged(int w, int h, int oldw, int oldh)

当这个视图的大小发生变化时,这在布局期间被调用。

Inherited methods

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

Public constructors

SlidingPaneLayout

SlidingPaneLayout (Context context)

Parameters
context Context

SlidingPaneLayout

SlidingPaneLayout (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

SlidingPaneLayout

SlidingPaneLayout (Context context, 
                AttributeSet attrs, 
                int defStyle)

Parameters
context Context
attrs AttributeSet
defStyle int

Public methods

canSlide

boolean canSlide ()

此方法已弃用。
更名为isSlideable() - 这种方法很快就会消失!

Returns
boolean true if content in this layout can be slid open and closed

closePane

boolean closePane ()

如果滑动窗格当前可滑动,请关闭滑动窗格。 如果第一个布局已经完成,这将生成动画。

Returns
boolean true if the pane was slideable and is now closed/in the process of closing

computeScroll

void computeScroll ()

由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。 这通常会在孩子使用Scroller对象动画滚动时Scroller

draw

void draw (Canvas c)

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

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

generateLayoutParams

ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

Parameters
attrs AttributeSet: the attributes to build the layout parameters from
Returns
ViewGroup.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

getCoveredFadeColor

int getCoveredFadeColor ()

Returns
int The ARGB-packed color value used to fade the fixed pane

getParallaxDistance

int getParallaxDistance ()

Returns
int The distance the lower pane will parallax by when the upper pane is fully closed.

也可以看看:

getSliderFadeColor

int getSliderFadeColor ()

Returns
int The ARGB-packed color value used to fade the sliding pane

isOpen

boolean isOpen ()

检查布局是否完全打开。 它可以打开,因为滑块本身是打开的,可以显示左侧窗格,或者所有内容都可以滑动。

Returns
boolean true if sliding panels are completely open

isSlideable

boolean isSlideable ()

检查此布局中的内容是否不能完全适合并排,因此内容窗格可以前后滑动。

Returns
boolean true if content in this layout can be slid open and closed

onInterceptTouchEvent

boolean onInterceptTouchEvent (MotionEvent ev)

实施此方法来拦截所有触摸屏幕动作事件。 这允许您在事件发送给您的孩子时观看事件,并在任何时候掌握当前手势的所有权。

使用这个函数需要注意,因为它与View.onTouchEvent(MotionEvent)有一个相当复杂的交互,并且使用它需要以正确的方式实现该方法。 活动将按以下顺序收到:

  1. You will receive the down event here.
  2. The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
  3. For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
  4. If you return true from here, you will not receive any following events: the target view will receive the same event but with the action ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.

Parameters
ev MotionEvent: The motion event being dispatched down the hierarchy.
Returns
boolean Return true to steal motion events from the children and have them dispatched to this ViewGroup through onTouchEvent(). The current target will receive an ACTION_CANCEL event, and no further messages will be delivered here.

onTouchEvent

boolean onTouchEvent (MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

如果此方法用于检测点击操作,建议通过执行并调用performClick()来执行操作。 这将确保一致的系统行为,包括:

  • obeying click sound preferences
  • dispatching OnClickListener calls
  • handling ACTION_CLICK when accessibility features are enabled

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

openPane

boolean openPane ()

如果当前可滑动,请打开滑动窗格。 如果第一个布局已经完成,这将生成动画。

Returns
boolean true if the pane was slideable and is now open/in the process of opening

requestChildFocus

void requestChildFocus (View child, 
                View focused)

当这个父母的孩子需要关注时调用

Parameters
child View: The child of this ViewParent that wants focus. This view will contain the focused view. It is not necessarily the view that actually has focus.
focused View: The view that is a descendant of child that actually has focus

setCoveredFadeColor

void setCoveredFadeColor (int color)

当窗格在关闭状态下完全覆盖时,设置用于淡出由滑动窗格覆盖的窗格的颜色。

Parameters
color int: An ARGB-packed color value

setPanelSlideListener

void setPanelSlideListener (SlidingPaneLayout.PanelSlideListener listener)

Parameters
listener SlidingPaneLayout.PanelSlideListener

setParallaxDistance

void setParallaxDistance (int parallaxBy)

当上部窗格处于完全关闭状态时,设置视差下部窗格的距离。 下部窗格将在此位置和其完全打开状态之间滚动。

Parameters
parallaxBy int: Distance to parallax by in pixels

setShadowDrawable

void setShadowDrawable (Drawable d)

此方法已弃用。
在打开/关闭期间,重命名为setShadowDrawableLeft(Drawable)以支持LTR(从左到右的语言)和setShadowDrawableRight(Drawable)以支持RTL(从右向左的语言)。

Parameters
d Drawable: drawable to use as a shadow

setShadowDrawableLeft

void setShadowDrawableLeft (Drawable d)

在打开/关闭期间,设置一个可绘制的元素作为右窗格投影到左窗格的阴影。

Parameters
d Drawable: drawable to use as a shadow

setShadowDrawableRight

void setShadowDrawableRight (Drawable d)

在打开/关闭期间,设置一个可绘制的元素作为左窗格投射到右窗格的阴影,以支持从右到左的语言。

Parameters
d Drawable: drawable to use as a shadow

setShadowResource

void setShadowResource (int resId)

此方法已弃用。
在打开/关闭期间, setShadowResourceLeft(int)其重命名为setShadowResourceLeft(int)以支持LTR(从左到右的语言)和setShadowResourceRight(int)以支持RTL(从右向左的语言)。

在打开/关闭期间,设置一个可绘制的元素作为右窗格投影到左窗格的阴影。

Parameters
resId int: Resource ID of a drawable to use

setShadowResourceLeft

void setShadowResourceLeft (int resId)

在打开/关闭期间,设置一个可绘制的元素作为右窗格投影到左窗格的阴影。

Parameters
resId int: Resource ID of a drawable to use

setShadowResourceRight

void setShadowResourceRight (int resId)

在打开/关闭期间,设置一个可绘制的元素作为左窗格投射到右窗格的阴影,以支持从右到左的语言。

Parameters
resId int: Resource ID of a drawable to use

setSliderFadeColor

void setSliderFadeColor (int color)

设置滑动窗格大部分偏离屏幕时用于淡出滑动窗格的颜色。

Parameters
color int: An ARGB-packed color value

smoothSlideClosed

void smoothSlideClosed ()

此方法已弃用。
更名为closePane() - 这种方法很快就会消失!

smoothSlideOpen

void smoothSlideOpen ()

此方法已弃用。
更名为openPane() - 这种方法很快就会消失!

Protected methods

canScroll

boolean canScroll (View v, 
                boolean checkV, 
                int dx, 
                int x, 
                int y)

测试v的子视图中的可滚动性,给定dx的增量。

Parameters
v View: View to test for horizontal scrollability
checkV boolean: Whether the view v passed should itself be checked for scrollability (true), or just its children (false).
dx int: Delta scrolled in pixels
x int: X coordinate of the active touch point
y int: Y coordinate of the active touch point
Returns
boolean true if child views of v can be scrolled by delta of dx.

checkLayoutParams

boolean checkLayoutParams (ViewGroup.LayoutParams p)

Parameters
p ViewGroup.LayoutParams
Returns
boolean

drawChild

boolean drawChild (Canvas canvas, 
                View child, 
                long drawingTime)

绘制这个视图组的一个孩子。 这个方法负责让画布处于正确的状态。 这包括剪裁,翻译,以便孩子的滚动起点在0,0,并应用任何动画转换。

Parameters
canvas Canvas: The canvas on which to draw the child
child View: Who to draw
drawingTime long: The time at which draw is occurring
Returns
boolean True if an invalidate() was issued

generateDefaultLayoutParams

ViewGroup.LayoutParams generateDefaultLayoutParams ()

返回一组默认布局参数。 当传递给addView(View)的视图没有设置布局参数时,请求这些参数。 如果返回null,则会从addView引发异常。

Returns
ViewGroup.LayoutParams a set of default layout parameters or null

generateLayoutParams

ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。 当一个ViewGroup被传递了一个View,其布局参数不能通过checkLayoutParams(android.view.ViewGroup.LayoutParams)的测试时,这个方法被调用。 此方法应该返回一组适合此ViewGroup的布局参数,可能是通过从指定的一组布局参数中复制适当的属性。

Parameters
p ViewGroup.LayoutParams: The layout parameters to convert into a suitable set of layout parameters for this ViewGroup.
Returns
ViewGroup.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

onAttachedToWindow

void onAttachedToWindow ()

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

onDetachedFromWindow

void onDetachedFromWindow ()

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

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

onMeasure

void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 该方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时,您必须致电setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 如果不这样做,将触发IllegalStateException ,由measure(int, int)引发。 调用超类' onMeasure(int, int)是一种有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

吊钩允许视图重新应用之前由onSaveInstanceState()生成的内部状态的表示。 这个函数永远不会被调用为null状态。

Parameters
state Parcelable: The frozen state that had previously been returned by onSaveInstanceState().

onSaveInstanceState

Parcelable onSaveInstanceState ()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。 此状态应仅包含不持久或以后不能重建的信息。 例如,您永远不会将当前位置存储在屏幕上,因为当视图的新实例放置在其视图层次结构中时会再次计算该位置。

您可能在此处存储的某些示例:文本视图中的当前光标位置(但通常不是文本本身,因为它存储在内容提供程序或其他永久性存储中),即当前在列表视图中选择的项目。

Returns
Parcelable Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save. The default implementation returns null.

onSizeChanged

void onSizeChanged (int w, 
                int h, 
                int oldw, 
                int oldh)

当这个视图的大小发生变化时,这在布局期间被调用。 如果您刚刚添加到视图层次结构中,则会使用旧值0调用。

Parameters
w int: Current width of this view.
h int: Current height of this view.
oldw int: Old width of this view.
oldh int: Old height of this view.

Hooray!