抽屉类型代码

来源:互联网 发布:英文网络面试常用口语 编辑:程序博客网 时间:2024/05/16 17:12
 private List<String> data=new ArrayList<>();
    private DrawerLayout drawerLayout;
    private RelativeLayout menu;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        drawerLayout = findViewById(R.id.drawer);
        menu = findViewById(R.id.menu);
        Button b=findViewById(R.id.btnOpen);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                drawerLayout.openDrawer(menu);//打开菜单
            }
        });






        ListView listView=findViewById(R.id.lv);


        for(int i=0;i<20;i++){
            data.add("item"+i);
        }


        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
        listView.setAdapter(adapter);


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                //关闭菜单
                drawerLayout.closeDrawer(menu);


                //动态添加fragment
                getSupportFragmentManager().beginTransaction().replace(R.id.frcontent,new MyFragment()).commit();


            }
        });


        //添加监听事件
        drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                Log.d("zzz","--"+slideOffset);


            }


            //
            @Override
            public void onDrawerOpened(View drawerView) {
                Toast.makeText(MainActivity.this,"打开了!",Toast.LENGTH_SHORT).show();


            }


            @Override
            public void onDrawerClosed(View drawerView) {
                Toast.makeText(MainActivity.this,"关闭了!",Toast.LENGTH_SHORT).show();
            }


            /**
             * 当抽屉滑动状态改变的时候被调用
             * 状态值是STATE_IDLE(闲置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。
             * 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE
             */
            @Override
            public void onDrawerStateChanged(int newState) {


            }
        });


    }












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


    <!--主页面的内容  ctrl+alt+l 格式化代码-->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello!"
            android:id="@+id/btnOpen"/>
      <!--用来放置 碎片的容器 -->
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/frcontent"
            android:layout_below="@+id/btnOpen">


        </FrameLayout>




    </RelativeLayout>


    <!---菜单内容
    android:layout_gravity="start":菜单在左边  end 菜单在右边
    侧滑菜单一般不要超过 320dp


    -->
    <RelativeLayout
        android:id="@+id/menu"
        android:layout_width="170dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#f00">


        <ImageView
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher" />




        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/lv"
            android:layout_below="@+id/img"></ListView>




    </RelativeLayout>




</android.support.v4.widget.DrawerLayout>