一手遮天 AndroID - vIEw(导航类): DrawerLayout 基础示例如下:@H_404_8@项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd
/vIEw/navigation/DrawerLayoutDemo1.java
/** * DrawerLayout - 抽屉布局(侧滑菜单) * * 本例演示 * 1、如何通过手势侧滑显示侧边菜单,然后再点击空白处可隐藏侧边菜单 * 2、如何禁止侧边菜单响应手势 *** 作,而只能通过程序来控制侧边菜单的显示和隐藏 * 3、如何修改当显示侧边菜单时,覆盖在主界面上的遮罩层的颜色 * 4、如何自定义侧边菜单显示和隐藏的动画效果 */package com.webabcd.androIDdemo.vIEw.navigation;import androIDx.drawerlayout.Widget.DrawerLayout;import androIDx.appcompat.app.AppCompatActivity;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.Gravity;import androID.vIEw.VIEw;import androID.Widget.button;import com.webabcd.androIDdemo.R;public class DrawerLayoutDemo1 extends AppCompatActivity { private final String LOG_TAG = "DrawerLayoutDemo1"; private DrawerLayout mDrawerLayout; private button mbuttonOpenRightDrawer; private button mbuttonCloseRightDrawer; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_vIEw_navigation_drawerlayoutdemo1); mDrawerLayout = findVIEwByID(R.ID.drawerLayout); mbuttonOpenRightDrawer = findVIEwByID(R.ID.buttonOpenRightDrawer); mbuttonCloseRightDrawer = findVIEwByID(R.ID.buttonCloseRightDrawer); sample(); } private voID sample() { // 修改当显示侧边菜单时,覆盖在主界面上的遮罩层的颜色 mDrawerLayout.setScrimcolor(0x88ff0000); // 侧滑菜单在显示和隐藏的过程中的事件监听 mDrawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() { // 侧边菜单显示的完整性发生变化时 @OverrIDe public voID onDrawerSlIDe(VIEw drawerVIEw, float slIDeOffset) { // slIDeOffset - 侧边菜单显示的完整性(0 - 1 之间) Log.d(LOG_TAG, String.format("%s onDrawerSlIDe %f", drawerVIEw.getTag(), slIDeOffset)); // 通过 slIDeOffset 这个值可以自定义侧边菜单显示和隐藏的动画效果,比如可以像下面这样为侧边菜单添加透明度动画效果 // drawerVIEw.setAlpha(slIDeOffset); } // 侧边菜单完全打开时 @OverrIDe public voID onDrawerOpened(VIEw drawerVIEw) { Log.d(LOG_TAG, String.format("%s onDrawerOpened", drawerVIEw.getTag())); } // 侧边菜单完全关闭时 @OverrIDe public voID onDrawerClosed(VIEw drawerVIEw) { Log.d(LOG_TAG, String.format("%s onDrawerClosed", drawerVIEw.getTag())); } @OverrIDe public voID onDrawerStateChanged(int newState) { // 0 - 手指不在侧滑菜单上且侧边菜单处于稳定状态(DrawerLayout.STATE_IDLE) // 1 - 手指正在侧滑菜单上拖动时(DrawerLayout.STATE_DRAGGING) Log.d(LOG_TAG, String.format("onDrawerStateChanged %d", newState)); } }); /** * setDrawerLockMode() - 指定侧边菜单的锁定状态 * DrawerLayout.LOCK_MODE_UNLOCKED - 不锁定,可以通过手势打开或关闭 * DrawerLayout.LOCK_MODE_LOCKED_CLOSED - 锁定为关闭状态,不可以通过手势打开(可以通过程序打开),但是可以通过手势关闭 * DrawerLayout.LOCK_MODE_LOCKED_OPEN - 锁定为打开状态,不可以通过手势关闭(可以通过程序关闭),但是可以通过手势打开 * openDrawer(int gravity, boolean animate), closeDrawer(int gravity, boolean animate) - 通过程序打开或关闭指定的侧边菜单 * gravity - Gravity.START 代表左侧侧边菜单;Gravity.END 代表右侧侧边菜单 * animate - 是否显示动画效果 */ // 不允许手势打开右边侧滑菜单 mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.END); mbuttonOpenRightDrawer.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // 打开右边侧滑菜单 mDrawerLayout.openDrawer(Gravity.END, true); // 不允许手势关闭右边侧滑菜单 mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, Gravity.END); } }); mbuttonCloseRightDrawer.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // 关闭右边侧滑菜单 mDrawerLayout.closeDrawer(Gravity.END, true); // 不允许手势打开右边侧滑菜单 mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.END); } }); }}
/layout/activity_vIEw_navigation_drawerlayoutdemo1.xml
<?xml version="1.0" enCoding="utf-8"?><!-- DrawerLayout - 抽屉布局(侧滑菜单) 指定了 layout_gravity="start" 的组件为左侧侧滑菜单 指定了 androID:layout_gravity="end" 的组件为右侧侧滑菜单--><androIDx.drawerlayout.Widget.DrawerLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/drawerLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <FrameLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <button androID:ID="@+ID/buttonOpenRightDrawer" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:textAllCaps="false" androID:text="打开右侧 drawer" /> <TextVIEw androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_gravity="center_vertical" androID:text="TextVIEw" androID:textAlignment="center" androID:textSize="64dp" /> </FrameLayout> <!-- 指定了 layout_gravity="start" 的组件为左侧侧滑菜单 layout_wIDth - 此侧滑菜单的宽度 --> <linearLayout androID:layout_wIDth="180dp" androID:layout_height="match_parent" androID:background="@color/orange" androID:layout_gravity="start" androID:tag="left drawer"> </linearLayout> <!-- 指定了 androID:layout_gravity="end" 的组件为右侧侧滑菜单 layout_wIDth - 此侧滑菜单的宽度 --> <linearLayout androID:layout_wIDth="180dp" androID:layout_height="match_parent" androID:background="@color/orange" androID:layout_gravity="end" androID:tag="right drawer"> <button androID:ID="@+ID/buttonCloseRightDrawer" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:textAllCaps="false" androID:text="关闭右侧 drawer" androID:textAlignment="center" /> </linearLayout></androIDx.drawerlayout.Widget.DrawerLayout>
总结项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd
以上是内存溢出为你收集整理的一手遮天 Android - view(导航类): DrawerLayout 基础全部内容,希望文章能够帮你解决一手遮天 Android - view(导航类): DrawerLayout 基础所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)