• DrawerLayout案例


    布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/drawerlayout"
    
        tools:context="com.cmx.week7.MainActivity">
    
        <!--放主页布局-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffff00">
    
        </LinearLayout>
    
    <!--
    android:layout_gravity="right"可以决定在做还是右
    -->
        <LinearLayout
            android:id="@+id/linearlayout2"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="right"
            android:background="#45b97c"
            android:orientation="vertical" >
    
            <ListView
                android:id="@+id/lv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:divider="#CD853F"
                android:dividerHeight="2dp" >
            </ListView>
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>
    

    Activity.java

    package com.cmx.week7;
    
    import android.os.Bundle;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    
    public class MainActivity extends AppCompatActivity {
    
        private DrawerLayout mDrawerLayout;
        private ListView mLv;
    
        private String[] str;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initView();
        }
    
        //初始化控件
        private void initView() {
            mDrawerLayout= (DrawerLayout) findViewById(R.id.drawerlayout);
            mDrawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
                /**
                 * 当抽屉被滑动的时候调用此方法
                 * slideOffset 表示 滑动的幅度(0-1)
                 * drawerView 抽屉侧滑菜单栏
                 */
                @Override
                public void onDrawerSlide(View drawerView, float slideOffset) {
    
                    Log.e("drawer","===="+slideOffset+"====");
                }
                /**
                 * 当一个抽屉被完全打开的时候被调用
                 */
                @Override
                public void onDrawerOpened(View drawerView) {
    
                    Log.i("drawer", "抽屉被完全打开了!");
    
                }
                /**
                 * 当一个抽屉被完全关闭的时候被调用
                 */
                @Override
                public void onDrawerClosed(View drawerView) {
    
                    Log.i("drawer", "抽屉被完全关闭了!");
    
                }
                /**
                 * 当抽屉滑动状态改变的时候被调用
                 * 状态值是STATE_IDLE(闲置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。
                 * 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE
                 */
                @Override
                public void onDrawerStateChanged(int newState) {
    
                    Log.i("drawer", "drawer的状态:" + newState);
    
                }
            });
            mLv = (ListView) findViewById(R.id.lv);
            str = new String[] { "item1", "item2", "item3"};
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, str);
            mLv.setAdapter(adapter);
    
        }
    }
    /**
     * 1. 必须把DrawerLayout作为布局的跟标签。
     * 2. 然后在跟标签中添加一个包含内容的视图,就是当抽屉完全隐藏的时候显示的内容布局。
     * 3. 添加一个抽屉布局,这个布局可以按照需求自己定义。
     * 4. 抽屉布局中,需要指定android:layout_gravity属性,right.
     * 5. 抽屉布局的宽度最好不要超过360dp,这样做为了当抽屉完全显示的时候,不至于把内容布局全部遮挡。
     */
  • 相关阅读:
    第4天:Ansible模块
    第3天:YAML语法
    使用EXtjs6.2构建web项目
    Node中的定时器详解
    java中使用MD5加密技术
    Node+Socketio实现消息群发功能
    Angularjs+node+Mysql实现地图上特定点的定位以及附加信息展示
    那些年构建SSH所遇到的坑
    浅谈时间复杂度与空间复杂度
    创建视图并删除相关表中的记录
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152147.html
Copyright © 2020-2023  润新知