DrawerLayout——侧滑

来源:互联网 发布:美版a1532支持什么网络 编辑:程序博客网 时间:2024/06/03 19:27

今天准备做一个侧滑,以前本来是用的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()可以关闭和打开抽屉。




0 0
原创粉丝点击