第46章、滑式抽屉SlidingDrawer(从零开始学Android)

来源:互联网 发布:苹果6移动网络快捷键 编辑:程序博客网 时间:2024/04/28 04:13

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

 

一、布局文件

  1、打开“res/layout/activity_main.xml”文件。

  输入以下代码:

 

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <SlidingDrawer         android:id="@+id/slidingdraw"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:handle="@+id/handle"        android:content="@+id/content"        >        <ListView             android:id="@id/content"            android:layout_width="match_parent"            android:layout_height="match_parent"            />               <ImageView android:id="@id/handle"            android:src="@drawable/ic_launcher"            android:layout_width="88dip"            android:layout_height="44dip"             android:contentDescription="TODO"/>    </SlidingDrawer></LinearLayout>


 

二、程序文件

  打开“src/com.genwoxue.slidingdraw/MainActivity.java”文件。

  然后输入以下代码:

package com.genwoxue.slidingdrawer;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.SlidingDrawer;public class MainActivity extends Activity {//声明SlidingDrawerprivate SlidingDrawer mDrawer;private ImageView mImageView;private ListView lvNews;private String news[] = { "互联网产品中的情感化设计", "有效导向社交产品的商业价值", "移动开发者:得90后者得天下",               "用户体验:从App的加载页面说开去", "用扁平化的界面设计吸引用户", "实体与数字世界的交集",               "网络社区用户成长的5个思考模式", "十大值得关注的传统企业电商", "2013年十大热点技术发展趋势","了解产品的开发环节:环形设计论",            "客户忠诚度的四个层次","在手机背面贴张'纸'就能轻松充电","互联网公司是怎样激发你的消费欲望的","高效工作的信息搜集及管理术" };  @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获得SlidingDrawermDrawer = (SlidingDrawer) findViewById(R.id.slidingdraw);mImageView = (ImageView) findViewById(R.id.handle);   //获取ListView并填充内容   lvNews = (ListView) findViewById(R.id.content);       lvNews.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,news));        //监听打开抽屉事件mDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() {@Overridepublic void onDrawerOpened() {mImageView.setImageResource(R.drawable.ic_launcher);}});//监听关闭抽屉事件mDrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {@Overridepublic void onDrawerClosed() {mImageView.setImageResource(R.drawable.ic_launcher);}});}}


 

三、运行结果

  

  作为案例,便于学习,采用了系统本身的机器人作为打开和关闭SlidingDraw抽屉的图像,如果在实际开发,则请采用看起来更美观的图片。