DrawerLayout——侧滑

今天准备做一个侧滑,以前本来是用的SlidingMenu实现,忽然想起来,前几个月有人跟我说DrawerLayout也可以实现侧滑,那么就来试一下

布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myDrawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:textColor="@color/txt_gray"
        android:textSize="20dp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:background="@color/colorAccent"
        android:gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="shflksjdflkjsdfs"
            android:textColor="@color/txt_orange"
            android:textSize="20dp" />
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>
注意:里边有一行关键的代码:(红色部分的代码)

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        <span style="color:#ff0000;">android:layout_gravity="end"</span>
        android:background="@color/colorAccent"
        android:gravity="center">
该代码表示,是从左右那个位置滑动(上下没有试,可以自己尝试下),必须写,不写不能实现滑动功能

activity代码:

public class SevenActivity extends Activity {

    private ActionBarDrawerToggle mActionBarDrawerToggle;
    private DrawerLayout myDrawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.drawer_layout);
        myDrawerLayout = (DrawerLayout) findViewById(R.id.myDrawerLayout);
        //监听
        mActionBarDrawerToggle = new ActionBarDrawerToggle(this, myDrawerLayout, R.mipmap.ic_launcher,
<span style="white-space:pre">	</span>R.string.drawer_open, R.string.drawer_close);
    }
至此,一个侧滑就完成了,我做的是左滑的功能。

<pre name="code" class="java" style="line-height: 26px;"> mActionBarDrawerToggle = new ActionBarDrawerToggle(this, myDrawerLayout, R.mipmap.ic_launcher,
<span>	</span>R.string.drawer_open, R.string.drawer_close);

 

这是drawerlayout的监听,他有三种方法

1. 设置DrawerLayout.DrawerListener作为监听器类,里面包含四个回调函数。

代码如下:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. mDrawerLayout.setDrawerListener(new DrawerListener() {  
  2.         /** 
  3.          * 当抽屉滑动状态改变的时候被调用 
  4.          * 状态值是STATE_IDLE(闲置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。 
  5.          * 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE 
  6.         */  
  7.         @Override  
  8.         public void onDrawerStateChanged(int arg0) {  
  9.             Log.i("drawer""drawer的状态:" + arg0);  
  10.         }  
  11.         /** 
  12.          * 当抽屉被滑动的时候调用此方法 
  13.          * arg1 表示 滑动的幅度(0-1) 
  14.          */  
  15.         @Override  
  16.         public void onDrawerSlide(View arg0, float arg1) {  
  17.             Log.i("drawer", arg1 + "");  
  18.         }  
  19.         /** 
  20.          * 当一个抽屉被完全打开的时候被调用 
  21.          */  
  22.         @Override  
  23.         public void onDrawerOpened(View arg0) {  
  24.             Log.i("drawer""抽屉被完全打开了!");  
  25.         }  
  26.         /** 
  27.          * 当一个抽屉完全关闭的时候调用此方法 
  28.          */  
  29.         @Override  
  30.         public void onDrawerClosed(View arg0) {  
  31.             Log.i("drawer""抽屉被完全关闭了!");  
  32.         }  
  33.     });  

2. 设置DrawerListener的子类SimpleDrawerListener,使用这个类的时候不必实现全部的回调函数,可以根据自己的需要重写相应的方法。

代码如下:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {  
  2.             @Override  
  3.             public void onDrawerClosed(View drawerView) {  
  4.                 super.onDrawerClosed(drawerView);  
  5.             }  
  6.             @Override  
  7.             public void onDrawerOpened(View drawerView) {  
  8.                 super.onDrawerOpened(drawerView);  
  9.             }  
  10.         });  

3.  使用DrawerListener的子类ActionBarDrawerToggle。一般与ActionBar结合使用。

代码如下:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,  
  2.                 R.drawable.ic_drawer, R.string.drawer_open,  
  3.                 R.string.drawer_close) {  
  4. @Override  
  5. public void onDrawerClosed(View drawerView) {  
  6.     getActionBar().setTitle(mTitle);  
  7.     invalidateOptionsMenu();  
  8. }  
  9. @Override  
  10. public void onDrawerOpened(View drawerView) {  
  11.     getActionBar().setTitle(mDrawerTitle);  
  12.     invalidateOptionsMenu();  
  13.     }  
  14. };  
  15. mDrawerLayout.setDrawerListener(mDrawerToggle);  
所谓监听,无非就是打开抽屉之后的操作,关闭抽屉之后的操作嘛,
调用closeDrawer()和openDrawer()可以关闭和打开抽屉。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值