DrawerLayout抽屉布局的使用 最简单的侧滑菜单实现

之前项目中遇到需要实现侧滑菜单,自己动手写真是费劲,各种手势判断,各种事件监听,而且效果不是太好,后来知道DrawerLayout实现侧滑真的很方便,用法也非常简单。

DrawerLayout是V4包中的内容,使用如下

(小弟文笔不好,直接附上代码:)

1.首先定义Xml布局,

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/drawer_layout"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     tools:context=".MainActivity" >  
  7.   
  8.     <FrameLayout  
  9.         android:id="@+id/content_view"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="match_parent"  
  12.         android:background="#F00" />  
  13.   
  14.     <!-- layout_gravity属性控制左右:left/right/ -->  
  15.     <ListView  
  16.         android:id="@+id/drawer_left"  
  17.         android:layout_width="120dp"  
  18.         android:layout_height="match_parent"  
  19.         android:layout_gravity="left" >  
  20.     </ListView>  
  21.     <ListView  
  22.             android:id="@+id/drawer_right"  
  23.             android:layout_width="120dp"  
  24.             android:layout_height="match_parent"  
  25.             android:layout_gravity="right"  
  26.             android:background="#0FF" >  
  27.         </ListView>  
  28. </android.support.v4.widget.DrawerLayout>  

 

 

2.java中主布局代码

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
    1. package com.example.drawerlayout;  
    2.   
    3. import android.graphics.Color;  
    4. import android.os.Bundle;  
    5. import android.support.v4.app.FragmentActivity;  
    6. import android.support.v4.widget.DrawerLayout;  
    7. import android.view.Gravity;  
    8. import android.view.View;  
    9. import android.view.ViewGroup;  
    10. import android.widget.AdapterView;  
    11. import android.widget.AdapterView.OnItemClickListener;  
    12. import android.widget.ArrayAdapter;  
    13. import android.widget.ListView;  
    14. import android.widget.TextView;  
    15.   
    16. public class MainActivity extends FragmentActivity {  
    17.   
    18.     private DrawerLayout drawerLayout;  
    19.     private ListView leftDrawer;  
    20.     private ArrayAdapter<String> adapter;  
    21.     private final String[] items = new String[] { "选项一:", "选项二:", "选项三:",  
    22.             "选项4:", "选项5:", "选项6:" };  
    23.   
    24.     @Override  
    25.     protected void onCreate(Bundle savedInstanceState) {  
    26.         super.onCreate(savedInstanceState);  
    27.         setContentView(R.layout.activity_main);  
    28.   
    29.         drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);  
    30.         leftDrawer = (ListView) findViewById(R.id.drawer_left);  
    31.         adapter = new ArrayAdapter<String>(this,  
    32.                 android.R.layout.simple_list_item_1, items) {  
    33.             @Override  
    34.             public View getView(int position, View convertView, ViewGroup parent) {  
    35.                 // 设置背填充内容背景色  
    36.                 TextView tView = (TextView) super.getView(position,  
    37.                         convertView, parent);  
    38.                 tView.setTextColor(Color.BLACK);  
    39.                 return super.getView(position, convertView, parent);  
    40.             }  
    41.         };  
    42.         leftDrawer.setAdapter(adapter);  
    43.         leftDrawer.setBackgroundColor(Color.WHITE);  
    44.   
    45.         // 设置选择模式为单条选中  
    46.         leftDrawer.setChoiceMode(ListView.CHOICE_MODE_SINGLE);  
    47.         leftDrawer.setOnItemClickListener(new OnItemClickListener() {  
    48.             @Override  
    49.             public void onItemClick(AdapterView<?> parent, View view, int pos,  
    50.                     long id) {  
    51.                 leftDrawer.setItemChecked(pos, true);  
    52.                 NumerFragment frag = NumerFragment.createNumerFragment(pos);  
    53.                 getSupportFragmentManager().beginTransaction()  
    54.                         .replace(R.id.content_view, frag).commit();  
    55.                 // 关闭所有打开的抽屉  
    56.                 drawerLayout.closeDrawers();  
    57.             }  
    58.         });  
    59.   
    60.         // 通过代码:根据重力方向打开指定抽屉  
    61.         drawerLayout.openDrawer(Gravity.LEFT);  
    62.         // 设置抽屉阴影  
    63.         // drawerLayout.setDrawerShadow(R.drawable.ic_launcher, Gravity.LEFT);  
    64.         // 设置抽屉空余处颜色  
    65.         drawerLayout.setScrimColor(Color.BLUE);  
    66.         // 设置抽屉锁定模式 LOCK_MODE_LOCKED_OPEN:锁定 无法滑动; 只能通过代码取消锁定  
    67.         // drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);  
    68.     }  
    69. }  

posted on 2015-10-18 16:59  杭州糊涂虫  阅读(544)  评论(0)    收藏  举报

导航