Android 3.0 r1 API中文文档(113) ——SlidingDrawer

本章内容是android.widget.SlidingDrawer,译为"滑动式抽屉",版本为Android 3.0 r1,翻译来自"xiaoQLu",含示例代码,欢迎访问它的博客:"http://www.cnblogs.com/xiaoQLu",再次感谢"xiaoQLu" !期待你一起参与Android API的翻译,联系我over140@gmail.com。 

 

声明

  欢迎转载,但请保留文章原始出处:) 

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://goo.gl/6vJQl

 

正文

一、结构

public class SlidingDrawer extends ViewGroup

        

java.lang.Object

android.view.View

         android.view.ViewGroup

                   android.widget.SlidingDrawer

 

  二、概述

    SlidingDrawer(滑动式抽屉)隐藏屏外的内容,并允许用户拖拽一个handle以显示隐藏的内容。SlidingDrawer可以在垂直或者水平使用。它由两个子视图组成:一个是用户拖拽的handle(柄),另一个是随着拖动变化的content(内容)。SlidingDrawer应当作为内部布局的覆盖来使用,也就是说SlidingDrawer内部应该使用FrameLayout或RelativeLayout布局。SlidingDrawer的大小决定了其内容显示时所占空间的大小,所以它的尺寸一般定义为match_parent。在XML布局中SlidingDrawer必须指定handle和content的id:

    

 

  三、内部类

    interface          SlidingDrawer.OnDrawerCloseListener       

    当drawer(抽屉)关闭时调用

 

    interface          SlidingDrawer.OnDrawerOpenListener      

    当drawer(抽屉)打开时调用

 

    interface          SlidingDrawer.OnDrawerScrollListener       

    当drawer(抽屉)滑动(滚动)时调用

 

  四、XML属性


属性名称


描述


android:allowSingleTap


指示是否可通过单击handle打开或关闭(如果是false,刚用户必须通过拖动,滑动或者使用轨迹球,来打开/关闭抽屉。)默认的是true。


android:animateOnClick


指示当用户点击handle的时候,抽屉是否以动画的形式打开或关闭。默认的是true。


android:bottomOffset


Handle距离SlidingDrawer底部的额外距离


android:content


标识SlidingDrawer的内容


android:handle


标识SlidingDrawer的handle(译者注:如按钮)


android:orientation


SlidingDrawer的方向。必须是下面的一个值:


常量



描述


horizontal


0


水平方向对齐


vertical


1


竖直方向对齐


android:topOffset


Handle距离SlidingDrawer顶部的额外距离

 

  五、常量

    public static final int ORIENTATION_HORIZONTAL

      (译者注:水平方向对齐)

  常量值:0 (0x00000000)

 

  public static final int ORIENTATION_VERTICAL

          (译者注:垂直方向对齐)

  常量值:1 (0x00000001)

 

  六、构造函数

  public SlidingDrawer (Context context, AttributeSet attrs)

           用xml中设置的属性来创建一个新的SlidingDrawe

  参数

  context    上下文

  attrs        XML中定义的属性

        

  public SlidingDrawer (Context context, AttributeSet attrs, int defStyle)

           用xml中设置的属性来创建一个新的SlidingDrawe

  参数

  context    上下文

  attrs         XML中定义的属性

  defStyle    要应用到这个组件上的样式

 

  七、公共方法

  public void animateClose ()

  动画效果关闭抽屉。

      参见

  close()

  open()

  animateOpen()

  animateToggle()

  toggle()

 

  public void animateOpen ()

  动画效果打开抽屉。

      参见

  close()

  open()

  animateOpen()

  animateToggle()

  toggle()

 

  public void animateToggle ()

  在打开和关闭抽屉之间动画切换

    参见

  close()

  open()

  animateOpen()

  animateToggle()

  toggle()

 

  public void close ()

  立即关闭抽屉

  参见

  open()

  toggle()

 animateClose()

 

  public View getContent ()

  返回抽屉的内容(content)

    返回值

  返回在抽屉内容的视图,它在XML中是用“content”id 标识的

        

  public View getHandle ()

           返回抽屉的handle

            返回值

   返回在抽屉handle的视图,它在XML中是用“handle”id 标识的

 

  public boolean isMoving ()

           抽屉是否在滚动或滑动。

             返回值

                   如果在滚动或滑动,返回true,否则返回false        

 

  public boolean isOpened ()

           当前抽屉是否被完全打开

             返回值

                   如果是打开的,返回true,否则返回false。

 

  public void lock ()

           锁定SlidingDrawer,忽略触摸事件

             参见

                      unlock()

 

  public boolean onInterceptTouchEvent (MotionEvent event)

  实现这个方法可以拦截所有的触屏事件,它在事件被传到子类之前拦截,并获得当前手势的所有权。

  使用这个方法时要注意,因为它与View.onTouchEvent(MotionEvent)有一个相当复杂的交互,使用它需要用正确的方法来实现。事件会按照下列顺序接受:

  1.         down事件会被首先传到本方法中。

  2.         这个down事件会被当前viewgroup的onTouchEvent()方法或者其各个子视图处理,也就是说你应该实现onTouchEvent()方法并返回true,你会继续看到剩下事件的传递(而不是找一个parent view处理它)。同样的,从onTouchEvent()中返回true,你不会在onInterceptTouchEvent()中接受到任何接下来的事件,并且所有的事件都会被onTouchEvent()处理。

  3.         如果当前方法返回false,所有接下来的事件(截止到最后包含注册的事件)首先都会被继续传到这里,然后一起传递给目标的onTouchEvent()方法。截至及包括最后注册。

  4.         如果在这里返回true,将不会收到以下任何事件:目标view将收到同样的事件但是是伴随ACTION_CANCEL事件,并且所有的更进一步的事件将会传递到你自己的onTouchEvent()方法中而不会再在这里出现。

  (译者著:这里实在是太麻烦了,很不好懂,我自己看着都头晕,在网上找到一篇很不错的总结,才知道是怎么回事,这里总结一下,记住这个原则你就会很清楚了:

  1、onInterceptTouchEvent()是用于处理事件(类似于预处理,当然也可以不处理)并改变事件的传递方向,也就是决定是否允许Touch事件继续向下(子控件)传递,一但返回True(代表事件在当前的viewGroup中会被处理),则向下传递之路被截断(所有子控件将没有机会参与Touch事件),同时把事件传递给当前的控件的onTouchEvent()处理;如果返回false,则把事件交给子控件的onInterceptTouchEvent()处理

  2、onTouchEvent()用于处理事件,返回值决定当前控件是否消费(consume)了这个事件,也就是说在当前控件在处理完Touch事件后,是否还允许Touch事件继续向上(父控件)传递,一但返回True,则父控件不用操心自己来处理Touch事件。

  相关文章这里1这里2

                   参数

                            event        分层次的动作事件

                   返回值

    如果将运动事件从子视图中截获并且通过onTouchEvent()发送到当前ViewGroup ,返回true。当前目标将会收到ACTION_CANCEL事件,并且不再会有其他消息传递到此。

        

  public boolean onTouchEvent (MotionEvent event)

           实现触摸屏幕事件的方法

             参数

                   event        当前事件

               返回值

                   如果事件被处理就返回true,否则返回false

 

  public void open ()

  立即打开抽屉

             参见

                   toggle()

        close()

  animateOpen()

 

  public void setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener)

           给抽屉的关闭事件绑定监听器

             参数

                   onDrawerCloseListener 抽屉关闭时的监听器

        

  public void setOnDrawerOpenListener(SlidingDrawer.OnDrawerOpenListener onDrawerOpenListener)

           给抽屉的打开事件绑定监听器

                   参数

                            onDrawerOpenListener 抽屉打开时的鉴别器

 

  public void setOnDrawerScrollListener (SlidingDrawer.OnDrawerScrollListener onDrawerScrollListener)

  给抽屉的滚动(收缩)事件绑定监听器,轻滑(fling)也被当作一个滚动(收缩)事件,同时它可以触发抽屉关闭或者打开事件。

       参数

            onDrawerScrollListener 当滚动(收缩)开始或者停止时通知的监听器

        

  public void toggle ()

           在抽屉打开或关闭状态之间切换。事件会立即产生。

             参见

  close()

  open()

  animateOpen()

  animateToggle()

  toggle()

 

  public void unlock ()

           解锁SlidingDrawer使触摸事件能被处理

             参见

                      lock()

 

  八、补充

    文章精选

           Android高手进阶教程(二)之----Android Launcher抽屉类SlidingDrawer的使用

           SlidingDrawer 抽屉类{Android学习指南}

  MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序

      http://hi.baidu.com/j_fo/blog/item/7321c91324203437dc54017d.html

  http://www.cnblogs.com/rocky_yi/archive/2011/01/21/1941522.html#

 

    示例代码

<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>

 

 

 

SlidingDrawer.OnDrawerCloseListener

译者署名:xiaoQLu

译者链接:http://www.cnblogs.com/xiaoQLu

版本:Android 3.0 r1

 

结构

继承关系

public static interface SlidingDrawer.OnDrawerCloseListener

 

android.widget.SlidingDrawer.OnDrawerCloseListener

 

类概述

当抽屉被关闭时调用的回调。

 

公共方法

public abstract void onDrawerClosed()

当抽屉被完全关闭时调用

 

补充

文章精选

Android控件之SlidingDrawer(滑动式抽屉)详解与实例

 

 

SlidingDrawer.OnDrawerOpenListener

译者署名:xiaoQLu

译者链接:http://www.cnblogs.com/xiaoQLu

版本:Android 3.0 r1

 

结构

继承关系

public static interface SlidingDrawer.OnDrawerOpenListener

 

android.widget.SlidingDrawer.OnDrawerOpenListener

 

类概述

当抽屉被打开时调用

 

公共方法

public abstract void onDrawerOpened()

当抽屉被完全打开时调用

 

 

SlidingDrawer.OnDrawerScrollListener

译者署名:xiaoQLu

译者链接:http://www.cnblogs.com/xiaoQLu

版本:Android 3.0 r1

结构

继承关系

public static interface SlidingDrawer.OnDrawerScrollListener

android.widget.SlidingDrawer.OnDrawerScrollListener

 

类概述

当抽屉被滚动时调用

 

公共方法

public abstract void onScrollEnded ()

当用户停止拖曳/滑动抽屉的handle时调用

 

public abstract void onScrollStarted ()

当用户开始拖曳/滑动抽屉的handle时调用

转载:http://www.cnblogs.com/over140/archive/2011/04/04/2005078.html

时间: 2024-11-04 21:03:24

Android 3.0 r1 API中文文档(113) ——SlidingDrawer的相关文章

Android2.2 r1 API 中文文档系列(10) —— CheckBox

前言 从本章开始,将直接翻译最新的Android 2.2 r1 版本的API,而之前的文章以后更新.补充.完善至新版.本章android.widget.CheckBox内容不多,目前翻译的选择策略是先翻译简单的.相关的,然后再翻译复杂.内容多一些的 :) 欢迎更多译者一起参与Android API 的中文翻译行动!我的邮箱over140@gmail.com.     声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://www

Android2.2 API 中文文档系列(6) —— ImageView

注意 请查看本文后期更新完整版: http://www.cnblogs.com/over140/archive/2011/06/08/2075054.html   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://www.cnblogs.com/over140/    正文 一.结构 java.lang.Object android.view.View android.widget.ImageView   已知直接子类:

Android2.2 API 中文文档系列(9) —— ZoomButton

前言 本章翻译的是android.widget.ZoomButton,译为缩放按钮,实际意义不大,搜遍GOOGLE也找不到几个应用的例子,但是为了整个API文档的完整性,这里还是贴了出来.欢迎更多译者一起参与Android API 的中文翻译行动!我的邮箱over140@gmail.com.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://www.cnblogs.com/over140/   正文 一.类结构 jav

Android2.2 API 中文文档系列(8) —— QuickContactBadge

前言 本章翻译的是android.widget.QuickContactBadge,译为联系人快捷标识,具体效果为显示一张联系人图片,点一下弹出与之相关的快捷功能栏,如打电话.发短信等(见正文部分的截图).欢迎更多译者一起参与Android API 的中文翻译行动!我的邮箱over140@gmail.com.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯:http://www.cnblogs.com/over140/    正文

hge-求javaee6 api中文文档,跪求跪求

问题描述 求javaee6 api中文文档,跪求跪求 求javaee6 api中文文档求javaee6 api中文文档,求javaee6 api中文文档,求javaee6 api中文文档,跪求跪求跪求跪求跪求跪求 解决方案 跪求百度收录吧跪求 解决方案二: 我这里有链接: http://pan.baidu.com/s/1hqUcSmg 密码: s8uv

求JBPM4 API中文文档

问题描述 要中文文档哦要中文文档哦要中文文档哦要中文文档哦要中文文档哦 解决方案

Android2.2 API 中文文档系列(2) —— EditText

前言 关键字: Android API 中文,android sdk 中文,Android EditText 详解   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com Android中文翻译组:http://androidbox.sinaapp.com/   正文 一.结构 java.lang.Object android.view.View   android.widget.TextView          android.widget.Ed

Android2.2 API 中文文档系列(3) —— AccessibilityService

前言 关键字: Android API 中文,Android SDK 中文,Android AccessibilityService 详解 本章翻译来自 java_cofi ,他的博客地址:http://java-cofi.javaeye.com/admin,这里本博负责整理和发布,欢迎其他译者一起参与Android API 的中文翻译行动.   声明 欢迎转载,但请保留文章原始出处:)  java_cofi:http://java-cofi.javaeye.com/ 博客园:http://ww

Android2.2 API 中文文档系列(5) —— View

前言 关于View日文转中文的工作在上周女朋友就已经帮我做完,如果要感谢我的翻译成果请先感谢她!但本周太忙,几乎天天加班赶项目,只好把时间挤到周末才完成,这里努力保持一周一篇的进度.View很重要,很多控件都继承自它,所以这里先翻译这篇.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com Android中文翻译组:http://androidbox.sinaapp.com/    正文 一.结构 java.lang.Object android