.drawerlayout侧滑

DrawerLayout 提供
1、当界面弹出的时候,主要内容区会自动背景变黑,当点击内容区的时候,抽屉布局会消失
2、在屏幕边缘手势滑动 会拉出抽屉布局

注意:当按后退键的时候,如果抽屉布局正在显示,则需要关闭抽屉布局

首先布局文件:
布局分为三部分,左中右。中间的是APP显示的主要内容区,然后看你个人的需求来选择是要左边弹出布局,还是右边弹出布局。
如果选择是左边弹出界面还是右边弹出界面,只要给弹出界面设设置

自动打开抽屉

mdrawerLayout.openDrawer(Gravity.LEFT);//这里设置的方向应该跟下面xml文件里面的gravity方向相同,不然会报错,start和LEFT都为从左边出现

mdrawerLayout.closDrawers();//没有参数,关闭所有的出现的抽屉

//xml布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="l.drawerlayoutdemo.MainActivity">

    <FrameLayout
        android:id="@+id/fl"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <ListView
        android:id="@+id/lv"
        android:background="#FF0000"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:layout_width="150dp"
        android:layout_height="match_parent"/>

</android.support.v4.widget.DrawerLayout>
//侧滑布局必须写
        android:layout_gravity="start"
        android:choiceMode="singleChoice"



package l.drawerlayoutdemo;

        import android.graphics.drawable.DrawableWrapper;
                import android.support.v4.widget.DrawerLayout;
                import android.support.v7.app.AppCompatActivity;
                import android.os.Bundle;
                import android.view.View;
                import android.view.ViewGroup;
                import android.widget.AdapterView;
                import android.widget.BaseAdapter;
                import android.widget.ListView;
                import android.widget.TextView;

                import java.util.ArrayList;
                import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView lv;
    private DrawerLayout drawer;
    private List<String> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        indata();
        //获取控件
        lv = (ListView)findViewById(R.id.lv);
        //获取侧滑控件
        drawer = (DrawerLayout)findViewById(R.id.drawer);
        //点击事件
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                //获取子布局里的静态方法
                MFragment getname = MFragment.getname(list.get(i));
                //管理事务   开启事务      提交事务
                getSupportFragmentManager().beginTransaction().replace(R.id.fl,getname).commit();
                //关闭侧滑
                drawer.closeDrawer(lv);

            }
        });

          
 //侧滑的点击事件
drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
       //当抽屉被滑动的时候调用此方法
       //slideOffset 表示 滑动的幅度(0-1)
    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {

    }
    //侧滑的开启事件
    @Override
    public void onDrawerOpened(View drawerView) {

      Toast.makeText(MainActivity.this,"开启侧滑",Toast.LENGTH_LONG).show();

    }
    //侧滑的关闭事件
    @Override
    public void onDrawerClosed(View drawerView) {
        Toast.makeText(MainActivity.this,"关闭侧滑",Toast.LENGTH_LONG).show();
    }

    @Override
    public void onDrawerStateChanged(int newState) {

     }
  });
 //获取适配器      
 lv.setAdapter(new BaseAdapter() {           
     @Override           
       public int getCount() {            
              return list.size();         
    }           
     @Override          
       public Object getItem(int i) { 
               return null;      
   }           
 @   Override           
       public long getItemId(int i) {  
              return 0;        
    }            
@Override            
public View getView(int i, View view, ViewGroup viewGroup) { 
     if(view==null){  
 
         view=View.inflate(MainActivity.this,R.layout.f1,null);  
    
      }       
     
      TextView tv = view.findViewById(R.id.tv);   
 
            tv.setText(list.get(i));  
   
           return view;        
       } 
    
      }); 
   }   
 //初始值   
 private void indata() {   
     list = new ArrayList<>(); 
       for (int i=0;i<10;i++) {  
          list.add("drawer++"+i);     
   }   
 }}
//点击侧滑菜单传参
/**
 * Created by lenovo on 2017/11/9.
 */
//写一个方法类 
public class MFragment extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.f2, container, false);
        //获取控件
        TextView tvv = (TextView)inflate.findViewById(R.id.tvv);
        //undle获取穿过来的值`
        Bundle bundle = getArguments();
        //获取键值
        String name =(String) bundle.get("name");
        //赋值
        tvv.setText(name);
        return inflate;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);


    }
//自己调自己自己调自己的方法
   public static MFragment getname(String s){
        //实力化自己
       MFragment m=new MFragment();
          //实力化一个bundle
        Bundle bundle=new Bundle();
//       向bundle向里存之

        bundle.putString("name",s);
         m.setArguments(bundle);

         return m;


   }

}

 
 
 

自动打开抽屉

mdrawerLayout.openDrawer(Gravity.LEFT);//这里设置的方向应该跟下面xml文件里面的gravity方向相同,不然会报错,start和LEFT都为从左边出现

mdrawerLayout.closDrawers();//没有参数,关闭所有的出现的抽屉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值