SlidingDrawer开发实例简介

        SlidingDrawer可以将内容隐藏在屏幕外,允许用户通过拖拽一个把手,将内容带回屏幕上显示. SlidingDrawer可以横向使用,也可以纵向使用。 该小部件由两个子视图组成:用于拖拽的把手视图和由该把手连接并拖拽的内容。 SlidingDrawer应该用于覆盖内部布局。这意味着SlidingDrawer应该常用于象 FrameLayout或RelativeLayout这样的布局的内部。SlidingDrawer 的大小定义了滑出屏幕时其占用的空间。因此一般SlidingDrawer 的长宽属性都设置为match_parent。 在XML布局中,SlidingDrawer必须为其把手和内容定义ID。


     以下是一个小例子,SlidingDrawer中有一个TextView,SlidingDrawer左侧空白也有一个TextView,两个TextView分别可以相应SlidingDrawer的滑动状态,左边的TextView设置了监听器可以操作SlidingDrawer的状态切换。

     布局文件:

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.slidingdrawerdemo.MainActivity" >

     <TextView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         
         android:gravity="center_vertical"
         android:id="@+id/tv1"
         android:text="隐藏"
         android:textSize="30dp" />

     <!--一定要给handle和content加上id  -->
    <SlidingDrawer
        android:id="@+id/drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:content="@+id/content"
        android:handle="@+id/handle"
        android:orientation="horizontal" >
      <!--handle对应的图片资源  -->  
     <ImageView
         android:id="@id/handle"
         android:layout_width="88dip"
         android:layout_height="44dip"
         android:src="@drawable/ic_launcher" />

     <!--滑出显示的内容  -->
     <TextView
         android:id="@id/content"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
        
         android:textSize="30sp" />

 </SlidingDrawer>

</RelativeLayout>

 MainActivity:

  

package com.example.slidingdrawerdemo;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
import android.widget.SlidingDrawer.OnDrawerScrollListener;
import android.widget.TextView;




public class MainActivity extends Activity {

	private SlidingDrawer sd;
	private TextView tv1;
	private TextView tv2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1 = (TextView) findViewById(R.id.tv1);
        tv2 = (TextView) findViewById(R.id.content);
        sd = (SlidingDrawer) findViewById(R.id.drawer);
        //SlidingDrawer设置监听器,分别对应滑出,隐藏,滑动时的状态
        sd.setOnDrawerOpenListener(new OnDrawerOpenListener() {
			
			@Override
			public void onDrawerOpened() {
				tv2.setText("滑出");
				
			}
		});
        
      
        
        sd.setOnDrawerCloseListener(new OnDrawerCloseListener() {
			
			@Override
			public void onDrawerClosed() {
				// TODO Auto-generated method stub
				tv1.setText("隐藏");
			}
		});
        
        sd.setOnDrawerScrollListener(new OnDrawerScrollListener() {
			
			@Override
			public void onScrollStarted() {
				// TODO Auto-generated method stub
				tv1.setText("开始滑动");
				tv2.setText("开始滑动");
			}
			
			@Override
			public void onScrollEnded() {
				// TODO Auto-generated method stub
				tv1.setText("滑动结束");
				tv2.setText("滑动结束");
			}
		});
        //tv1设置监听器,可以控制SlidingDrawer的滑动状态的切换
        tv1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				sd.toggle();
			}
		});
    }

   
   
}

运行:

首先是隐藏状态:



拉动手柄(机器人)开始滑动:




滑动结束:




点击左侧的TextView,slidingdrawer会滑出和隐藏的状态切换。


总结:一般slidingdrawer常用于显示列表,即在slidingdrawer的content中加一个ListView,点击不同的列表选项就在屏幕中显示出相应的内容。不需要时就将列表隐藏起来。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值