Most visited

Recently visited

Added in API level 3
Deprecated since API level 17

SlidingDrawer

public class SlidingDrawer
extends ViewGroup

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.SlidingDrawer


此类在API级别17中已被弃用。
这个类不再被支持。 如果您必须在您的应用程序中使用它,建议您将自己的实现基于Android开放源代码项目的源代码。

SlidingDrawer将内容隐藏在屏幕之外,并允许用户拖动句柄以将内容显示在屏幕上。 SlidingDrawer可以垂直或水平使用。 一个由两个子视图组成的特殊小部件:用户拖动的句柄,用户拖动的内容以及附加到句柄并随其拖动的内容。 SlidingDrawer应该用作覆盖内部布局。 这意味着SlidingDrawer应该仅用于FrameLayout或RelativeLayout中。 SlidingDrawer的大小定义了一旦滑出内容将占用多少空间,因此SlidingDrawer通常应该在其维度上使用match_parent。 在XML布局中,SlidingDrawer必须定义句柄和内容的ID:

 <SlidingDrawer
     android:id="@+id/drawer"
     android:layout_width="match_parent"
     android:layout_height="match_parent"

     android:handle="@+id/handle"
     android:content="@+id/content">

     <ImageView
         android:id="@id/handle"
         android:layout_width="88dip"
         android:layout_height="44dip" />

     <GridView
         android:id="@id/content"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />

 </SlidingDrawer>
 

Summary

Nested classes

interface SlidingDrawer.OnDrawerCloseListener

当抽屉关闭时调用回调。

interface SlidingDrawer.OnDrawerOpenListener

当抽屉打开时调用回调。

interface SlidingDrawer.OnDrawerScrollListener

当抽屉滚动时调用回调。

XML attributes

android:allowSingleTap Indicates whether the drawer can be opened/closed by a single tap on the handle. 
android:animateOnClick Indicates whether the drawer should be opened/closed with an animation when the user clicks the handle. 
android:bottomOffset Extra offset for the handle at the bottom of the SlidingDrawer. 
android:content Identifier for the child that represents the drawer's content. 
android:handle Identifier for the child that represents the drawer's handle. 
android:orientation Orientation of the SlidingDrawer. 
android:topOffset Extra offset for the handle at the top of the SlidingDrawer. 

Inherited XML attributes

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

Constants

int ORIENTATION_HORIZONTAL

int ORIENTATION_VERTICAL

Inherited constants

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

Inherited fields

From class android.view.View

Public constructors

SlidingDrawer(Context context, AttributeSet attrs)

从XML中定义的一组指定的属性创建一个新的SlidingDrawer。

SlidingDrawer(Context context, AttributeSet attrs, int defStyleAttr)

从XML中定义的一组指定的属性创建一个新的SlidingDrawer。

SlidingDrawer(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

从XML中定义的一组指定的属性创建一个新的SlidingDrawer。

Public methods

void animateClose()

用动画关闭抽屉。

void animateOpen()

用动画打开抽屉。

void animateToggle()

使用动画切换抽屉打开和关闭。

void close()

立即关闭抽屉。

CharSequence getAccessibilityClassName()

返回此对象的类名称以用于辅助功能。

View getContent()

返回抽屉的内容。

View getHandle()

返回抽屉的手柄。

boolean isMoving()

指示抽屉是否正在滚动或投掷。

boolean isOpened()

指示抽屉当前是否完全打开。

void lock()

锁定SlidingDrawer,以便触摸事件被忽略。

boolean onInterceptTouchEvent(MotionEvent event)

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

boolean onTouchEvent(MotionEvent event)

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

void open()

立即打开抽屉。

void setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener)

设置在抽屉关闭时收到通知的侦听器。

void setOnDrawerOpenListener(SlidingDrawer.OnDrawerOpenListener onDrawerOpenListener)

设置当抽屉打开时收到通知的侦听器。

void setOnDrawerScrollListener(SlidingDrawer.OnDrawerScrollListener onDrawerScrollListener)

设置当抽屉开始或结束滚动时收到通知的侦听器。

void toggle()

切换抽屉打开和关闭。

void unlock()

解锁SlidingDrawer,以便处理触摸事件。

Protected methods

void dispatchDraw(Canvas canvas)

通过绘制来绘制子视图。

void onFinishInflate()

最终确定从XML扩展视图。

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

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

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

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

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

XML attributes

android:allowSingleTap

指示抽屉是否可通过手柄上的一次敲击打开/关闭。 (如果为false,则用户必须拖动或滑动,或者单击使用轨迹球来打开/关闭抽屉。)默认值为true。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 allowSingleTap

android:animateOnClick

指示用户单击手柄时是否应使用动画打开/关闭抽屉。 默认值是true。

必须是布尔值,即“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 animateOnClick

android:bottomOffset

SlidingDrawer底部手柄的额外偏移量。

必须是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 bottomOffset

android:content

代表抽屉内容的孩子的标识符。

必须是另一个资源的引用,其形式为“ @[+][package:]type:name ”,或者其形式为“一个主题属性 ?[package:][type:]name ”。

这对应于全局属性资源符号 content

android:handle

表示抽屉把手的孩子的标识符。

必须是另一个资源的引用,其形式为“ @[+][package:]type:name ”,或者其形式为“一个主题属性 ?[package:][type:]name ”。

这对应于全局属性资源符号 handle

android:orientation

SlidingDrawer的方向。

必须是下列常数值之一。

Constant Value 描述
horizontal 0 Defines an horizontal widget.
vertical 1 Defines a vertical widget.

这对应于全局属性资源符号 orientation

android:topOffset

在SlidingDrawer顶部的手柄额外补偿。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 topOffset

Constants

ORIENTATION_HORIZONTAL

Added in API level 3
int ORIENTATION_HORIZONTAL

常量值:0(0x00000000)

ORIENTATION_VERTICAL

Added in API level 3
int ORIENTATION_VERTICAL

常数值:1(0x00000001)

Public constructors

SlidingDrawer

Added in API level 3
SlidingDrawer (Context context, 
                AttributeSet attrs)

从XML中定义的一组指定的属性创建一个新的SlidingDrawer。

Parameters
context Context: The application's environment.
attrs AttributeSet: The attributes defined in XML.

SlidingDrawer

Added in API level 3
SlidingDrawer (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

从XML中定义的一组指定的属性创建一个新的SlidingDrawer。

Parameters
context Context: The application's environment.
attrs AttributeSet: The attributes defined in XML.
defStyleAttr int: An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.

SlidingDrawer

Added in API level 21
SlidingDrawer (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

从XML中定义的一组指定的属性创建一个新的SlidingDrawer。

Parameters
context Context: The application's environment.
attrs AttributeSet: The attributes defined in XML.
defStyleAttr int: An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
defStyleRes int: A resource identifier of a style resource that supplies default values for the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.

Public methods

animateClose

Added in API level 3
void animateClose ()

用动画关闭抽屉。

也可以看看:

animateOpen

Added in API level 3
void animateOpen ()

用动画打开抽屉。

也可以看看:

animateToggle

Added in API level 3
void animateToggle ()

使用动画切换抽屉打开和关闭。

也可以看看:

close

Added in API level 3
void close ()

立即关闭抽屉。

也可以看看:

getAccessibilityClassName

Added in API level 23
CharSequence getAccessibilityClassName ()

返回此对象的类名称以用于辅助功能。 如果子类正在实现的东西应该被视为一个全新的视图类,当它被可访问性使用时,子类只应该覆盖这个子类,与它所源自的类无关。 这用于填写AccessibilityNodeInfo.setClassName

Returns
CharSequence

getContent

Added in API level 3
View getContent ()

返回抽屉的内容。

Returns
View The View reprenseting the content of the drawer, identified by the "content" id in XML.

getHandle

Added in API level 3
View getHandle ()

返回抽屉的手柄。

Returns
View The View reprenseting the handle of the drawer, identified by the "handle" id in XML.

isMoving

Added in API level 3
boolean isMoving ()

指示抽屉是否正在滚动或投掷。

Returns
boolean True if the drawer is scroller or flinging, false otherwise.

isOpened

Added in API level 3
boolean isOpened ()

指示抽屉当前是否完全打开。

Returns
boolean True if the drawer is opened, false otherwise.

lock

Added in API level 3
void lock ()

锁定SlidingDrawer,以便触摸事件被忽略。

也可以看看:

onInterceptTouchEvent

Added in API level 3
boolean onInterceptTouchEvent (MotionEvent event)

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

使用这个函数需要注意,因为它与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
event 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

Added in API level 3
boolean onTouchEvent (MotionEvent event)

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

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

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

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

open

Added in API level 3
void open ()

立即打开抽屉。

也可以看看:

setOnDrawerCloseListener

Added in API level 3
void setOnDrawerCloseListener (SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener)

设置在抽屉关闭时收到通知的侦听器。

Parameters
onDrawerCloseListener SlidingDrawer.OnDrawerCloseListener: The listener to be notified when the drawer is closed.

setOnDrawerOpenListener

Added in API level 3
void setOnDrawerOpenListener (SlidingDrawer.OnDrawerOpenListener onDrawerOpenListener)

设置当抽屉打开时收到通知的侦听器。

Parameters
onDrawerOpenListener SlidingDrawer.OnDrawerOpenListener: The listener to be notified when the drawer is opened.

setOnDrawerScrollListener

Added in API level 3
void setOnDrawerScrollListener (SlidingDrawer.OnDrawerScrollListener onDrawerScrollListener)

设置当抽屉开始或结束滚动时收到通知的侦听器。 投掷被认为是滚动。 投掷也会触发抽屉打开或抽屉关闭事件。

Parameters
onDrawerScrollListener SlidingDrawer.OnDrawerScrollListener: The listener to be notified when scrolling starts or stops.

toggle

Added in API level 3
void toggle ()

切换抽屉打开和关闭。 立即生效。

也可以看看:

unlock

Added in API level 3
void unlock ()

解锁SlidingDrawer,以便处理触摸事件。

也可以看看:

Protected methods

dispatchDraw

Added in API level 3
void dispatchDraw (Canvas canvas)

通过绘制来绘制子视图。 这可能会被派生类重写,以便在子对象被绘制之前获得控制权(但在绘制自己的视图之后)。

Parameters
canvas Canvas: the canvas on which to draw the view

onFinishInflate

Added in API level 3
void onFinishInflate ()

最终确定从XML扩展视图。 这被称为通货膨胀的最后一个阶段,毕竟所有的孩子的观点已被添加。

即使子类重写onFinishInflate,他们也应该始终确保调用super方法,以便调用。

onLayout

Added in API level 3
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

Added in API level 3
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.

Hooray!