`
yunlonglove
  • 浏览: 238945 次
社区版块
存档分类
最新评论

Android开发之SlidingDrawer(一)

 
阅读更多

Android开发之SlidingDrawer(一)

/*

* Android开发之SlidingDrawer

* 北京Android俱乐部群:167839253

*Created on: 2012-7-26

*Author: blueeagle

* Email:liujiaxiang@gmail.com

*/

概述

为了方便操作、美观、节约空间等多方面原因的考虑,Android提供了SlidingDrawer这样的控件。SlidingDrawer——一个像抽屉一样的控件,我们暂且就称之为抽屉。这种抽屉的效果随处可见,比如Android通知栏的下拉效果,比如某个网页工具箱的弹出框等等。

我们来看一下SDK中是如何定义的:SlidingDrawer隐藏了再屏幕外的一些内容,并且允许用户用拖拽“手柄”的方式使得内容再次显示于屏幕中。SlidingDrawer可以用于水平和垂直两个方向。一个SlidingDrawer控件由两个子View来组成,一个是“手柄”一个就是拖拽出来的内容。SlidingDrawer应该覆盖在layout上面,这就是说SlidingDrawer应该只被用于一个FrameLayout或者是 RelativeLayout之中。SlidingDrawer的大小定义了它被拖拽出来的内容将占据多大的空间。因此,SlidingDrawer通常使用match_parent来定义其大小。SlidingDrawer还必须定义“手柄”和其内容这两个View的id号。

例如下面的布局文件就是一个简单的SlidingDrawer的描述:

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

XML文件中的属性

属性名称

描述

android:allowSingleTap

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

android:animateOnClick

顾名思义,点击的时候是否有动画。默认是true。

android:bottomOffset

“手柄”距离SlidingDrawer底部的额外距离 。

android:content

SlidingDrawer的内容。

android:handle

SlidingDrawer的“手柄”。

android:orientation

SlidingDrawer的方向。

android:topOffset

“手柄”距离SlidingDrawer顶部的额外距离 。

一些重要的方法:

voidsetOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListeneronDrawerCloseListener)

设置一个监听器,用来接收当抽屉被关闭时候的通知。

voidsetOnDrawerOpenListener(SlidingDrawer.OnDrawerOpenListeneronDrawerOpenListener)

Since:API Level 3

设置一个监听器,用来接收当抽屉被打开的时候的通知。

voidsetOnDrawerScrollListener(SlidingDrawer.OnDrawerScrollListeneronDrawerScrollListener)

设置一个监听器,用来接收当抽屉处于正在打开或者正在结束的滚动时候的通知。

animateClose():

使用动画关闭抽屉。

animateOpen():

使用动画打开抽屉

getContent():

获取内容

isMoving():

指示SlidingDrawer是否在移动。

isOpened():

指示SlidingDrawer是否已全部打开

lock():

屏蔽触摸事件。

unlock():

解除屏蔽触摸事件。

toggle():

切换打开和关闭的抽屉SlidingDrawer。

一个简单的例子

我们可以引用SDK中给我们提供的XML文件。

JAVA文件中如下编写:

public class SlidingDrawerDemoActivity extends Activity {  
            private SlidingDrawer myDrawer;
            private ImageView myImageView;
            private GridView myGridView;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                myDrawer = (SlidingDrawer) findViewById(R.id.drawer);
                myImageView = (ImageView)findViewById(R.id.handle);
                myGridView = (GridView)findViewById(R.id.content);
                myDrawer.setOnDrawerOpenListener(newSlidingDrawer.OnDrawerOpenListener() {
                    @Override
                    public void onDrawerOpened() {
                        myImageView.setImageResource(R.drawable.down);
                    }
                });
                myDrawer.setOnDrawerCloseListener(newSlidingDrawer.OnDrawerCloseListener() {
                    @Override
                    public void onDrawerClosed() {
                        myImageView.setImageResource(R.drawable.up);
                    }
                });    
                myGridView.setAdapter(new ImageAdapter(this));   
                myGridView.setOnItemClickListener(newOnItemClickListener(){ 
                    @Override 
                    public void onItemClick(AdapterView<?> arg0, Viewarg1, int arg2, 
                            long arg3) { 
                        // TODO Auto-generated method stub 
                        Toast.makeText(SlidingDrawerDemoActivity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show(); 
                    } 
                });
    }
}

对于ImageAdapter这个类前面我们已经讨论过,这里就不再赘述。上面代码的效果如下:


当然,还需要在GridView的XML文件中添加如下几个参数:

android:numColumns="auto_fit"

android:verticalSpacing="10dp"

android:horizontalSpacing="10dp"

android:columnWidth="90dp"

android:stretchMode="columnWidth"

android:gravity="center"

如果将SildingDrawer的高度属性改变一下例如:android:layout_height="100dip",则效果就会变成如下图所示:


如果将SildingDrawer的topOffset属性改变一下例如:android:topOffset="150dip",则效果就会变成如下图所示:


小结

上述简单的例子显然不能够满足应用开发的需求,我们在写程序的时候,经常遇见从左到右,从上到下,控制SlidingDrawer的大小等需求,要完成这个操作,我们需要自定义一个SlidingDrawer。自定义的SlidingDrawer则相当于是继承了一个LinearLayout,我们会在后面的章节详细讨论如何自定义一个SlidingDrawer。

分享到:
评论

相关推荐

    Android-SlidingDrawer一个Android滑动抽屉支持ListViewScrollViewRecyclerView

    在Android应用开发中,SlidingDrawer控件是一个非常实用的组件,它允许用户通过手势从屏幕边缘滑出隐藏的内容,通常用于实现类似抽屉的效果。本文将深入探讨Android的SlidingDrawer及其在不同场景下的应用,包括与...

    Android的SlidingDrawer范例程序

    在Android开发中,`SlidingDrawer`是一个非常实用的组件,它允许用户通过手势从屏幕边缘滑动出一个隐藏的抽屉,常用于存放菜单、设置或其他附加功能。本范例程序深入展示了如何有效地实现这一功能,使得用户界面更加...

    Android自带SlidingDrawer实例

    在Android开发中,SlidingDrawer是系统提供的一种滑动抽屉控件,它允许开发者将内容以抽屉的形式从屏幕边缘滑出,通常用于隐藏不常用但必要的功能或信息。这个实例是专为初学者设计的,展示了如何使用SlidingDrawer...

    Android UI开发——SlidingDrawer 抽屉效果

    在Android应用开发中,UI设计是至关重要的一个环节,它直接影响到用户体验。今天我们要讨论的是一个经典的Android UI组件——SlidingDrawer,它提供了一种抽屉式的交互效果,常用于隐藏和显示额外的信息或者功能区域...

    android控件SlidingDrawer的学习应用

    在Android开发中,SlidingDrawer控件是一种常用的交互元素,它允许用户通过滑动手势从屏幕边缘拉出或隐藏一个抽屉式视图。这个控件在早期版本的Android API中广泛使用,但在API Level 17之后逐渐被更灵活的滑动面板...

    知识共享-android之slidingdrawer的应用(雷惊风).

    在Android开发中,`SlidingDrawer`是一种用于创建滑动抽屉效果的布局容器,它允许用户通过触摸屏幕边缘来展开或收起一个包含额外控件的面板。这在需要隐藏和显示额外选项或功能时非常有用,尤其是在移动应用设计中,...

    Android SlidingDrawer抽屉效果

    在Android开发中,SlidingDrawer是早期用于实现滑动抽屉效果的一个组件,它允许开发者在界面下方或上方隐藏一个可滑动的视图,通常用于显示附加菜单或操作选项。这种设计模式常见于许多应用中,如谷歌地图、电子邮件...

    Android 中抽屉 SlidingDrawer

    在Android应用开发中,抽屉(SlidingDrawer)是一个非常实用的组件,它允许开发者在屏幕上添加一个可滑动的面板,通常用于隐藏或显示额外的功能或内容。抽屉类在早期版本的Android SDK中被广泛使用,但在后来的版本...

    android SlidingDrawer 左侧拉出

    在Android开发中,`SlidingDrawer`是一个非常实用的组件,它允许用户通过手势从屏幕边缘滑出一个隐藏的视图,类似于许多应用中的抽屉式导航菜单。在这个实例中,我们将关注如何实现一个从左侧拉出的`SlidingDrawer`...

    android自定义slidingdrawer

    在Android开发中,SlidingDrawer 是一个非常常见的组件,它允许用户通过拖动来显示或隐藏内容,类似于抽屉的效果。然而,标准的SlidingDrawer组件在某些情况下可能无法满足开发者的需求,比如需要部分数据始终可见。...

    Android学习笔记(二四):多页显示SlidingDrawer的使用.doc

    在Android开发中,SlidingDrawer是一个非常实用的组件,它允许用户通过拖动一个手柄来显示或隐藏内容。在本篇Android学习笔记中,我们将探讨如何使用SlidingDrawer实现多页显示,并理解其工作原理和相关属性。 首先...

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

    SlidingDrawer效果想必大家也见到过,它就是1.5模拟器上进入应用程序列表的效果。下面是截图 ...SlidingDrawer android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:handl

    SlidingDrawer抽屉效果可以默认显示一部分。

    在Android应用开发中,抽屉效果(SlidingDrawer)是一种常见的界面交互元素,它允许用户通过滑动操作从屏幕边缘拉出隐藏的内容区域,通常用于显示菜单或额外的信息。标题"SlidingDrawer抽屉效果可以默认显示一部分...

    android slidingdrawer实例

    在Android开发中,SlidingDrawer 是一个非常常见的组件,它为用户提供了一种滑动打开和关闭的抽屉式界面效果。通常,这个组件用于隐藏一些不常用但必要的内容,如设置选项、帮助信息等,用户可以滑动抽屉来显示或...

    Android Launcher抽屉类SlidingDrawer的使用

    在Android开发中,SlidingDrawer常被用于实现类似iOS中的滑动菜单或者底部工具栏的效果。 SlidingDrawer的工作原理是通过监听用户的触摸事件,当用户拖动指定的手柄(handle)时,隐藏的内容会沿着预设的方向滑出或...

    android抽屉项目源码实例SlidingDrawer

    通过对这个项目的深入研究,开发者不仅可以学习到如何使用SlidingDrawer,还能了解到早期Android开发的一些技巧和限制。同时,这也为开发者提供了一个很好的起点,去探索更现代的侧滑菜单实现,比如使用`...

    安卓SlidingDrawer抽屉控件源码.zip

    在Android开发中,SlidingDrawer控件是一种常用的交互元素,它允许用户通过滑动手势从屏幕边缘拉出或隐藏一个包含内容的“抽屉”。这个压缩包“安卓SlidingDrawer抽屉控件源码.zip”提供了这样一个控件的示例代码,...

    android 抽屉从左拉出 slidingdrawer

    在Android开发中,抽屉(Drawer)是一种常见的交互设计,常用于实现侧边栏导航,让用户可以方便地从屏幕边缘滑动呼出菜单或者其它功能区。本项目以"android 抽屉从左拉出 slidingdrawer"为主题,旨在实现一个自定义...

    Android 用SlidingDrawer实现抽屉效果.docx

    在Android开发中,SlidingDrawer是一个非常有用的组件,它允许我们创建类似抽屉的效果,可以是上下滑动或左右滑动。这个组件包含两个主要部分:handle(手柄)和content(内容)。用户通过拖动手柄来显示或隐藏内容...

    SlidingDrawer(抽屉)

    在Android开发中,SlidingDrawer控件是一种常用的设计元素,它允许用户通过滑动手势从屏幕边缘拉出或隐藏一个包含内容的“抽屉”。这个抽屉通常用于隐藏不常用但重要的功能或信息,比如设置选项、菜单或者额外的内容...

Global site tag (gtag.js) - Google Analytics