news 2026/7/6 16:28:05

Material Menu Drawable使用技巧:10个实用案例展示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Material Menu Drawable使用技巧:10个实用案例展示

Material Menu Drawable使用技巧:10个实用案例展示

【免费下载链接】material-menu[deprecated] Animations for Android L drawer, back, dismiss and check icons项目地址: https://gitcode.com/gh_mirrors/ma/material-menu

Material Menu Drawable是一个强大的Android动画图标库,专门用于创建流畅的Material Design风格菜单、返回、关闭和确认按钮动画。这个库提供了四种图标状态(汉堡菜单、箭头、关闭符号、勾选符号)之间的平滑过渡动画,让你的应用界面更加生动有趣。本文将为你展示10个实用的Material Menu Drawable使用技巧,帮助你快速掌握这个强大的动画工具。

🎯 1. 快速集成Material Menu Drawable

Material Menu Drawable的集成非常简单,只需在项目的build.gradle文件中添加依赖即可:

dependencies { implementation 'com.balysv.materialmenu:material-menu:2.0.0' }

这个库的核心文件位于library/src/main/java/com/balysv/materialmenu/MaterialMenuDrawable.java,包含了所有动画逻辑和图标绘制功能。

🎨 2. 在Toolbar中集成导航图标

Material Menu Drawable最常见的用法是在Toolbar中作为导航图标。以下是最简单的集成方式:

MaterialMenuDrawable materialMenu = new MaterialMenuDrawable(this, Color.WHITE, Stroke.THIN); toolbar.setNavigationIcon(materialMenu); toolbar.setNavigationOnClickListener(v -> { // 处理点击事件 materialMenu.animateIconState(MaterialMenuDrawable.IconState.ARROW); });

🔄 3. 四种图标状态切换技巧

Material Menu Drawable支持四种图标状态:

  • BURGER- 汉堡菜单图标
  • ARROW- 箭头图标
  • X- 关闭符号
  • CHECK- 勾选符号

通过animateIconState()方法可以实现平滑的动画切换:

// 动画切换到箭头状态 materialMenu.animateIconState(MaterialMenuDrawable.IconState.ARROW); // 动画切换到关闭状态 materialMenu.animateIconState(MaterialMenuDrawable.IconState.X);

📱 4. 与NavigationDrawer的完美配合

Material Menu Drawable与NavigationDrawer的配合使用是它的一大亮点。当用户滑动抽屉时,图标会平滑地从汉堡菜单过渡到箭头:

drawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerSlide(View drawerView, float slideOffset) { materialMenu.setTransformationOffset( MaterialMenuDrawable.AnimationState.BURGER_ARROW, isDrawerOpened ? 2 - slideOffset : slideOffset ); } });

🎛️ 5. 自定义动画持续时间

你可以轻松调整动画的持续时间,创建快慢不同的动画效果:

// 设置动画持续时间(毫秒) materialMenu.setTransformationDuration(500);

在demo/src/main/res/values/integers.xml中,你可以找到更多动画配置示例。

🎨 6. 线条粗细自定义

Material Menu Drawable提供了三种线条粗细选项:

  • REGULAR- 3dp(默认)
  • THIN- 2dp
  • EXTRA_THIN- 1dp
// 使用细线条 MaterialMenuDrawable materialMenu = new MaterialMenuDrawable( this, Color.WHITE, Stroke.THIN ); // 使用超细线条 MaterialMenuDrawable materialMenu = new MaterialMenuDrawable( this, Color.WHITE, Stroke.EXTRA_THIN );

🌈 7. 颜色定制技巧

你可以为Material Menu Drawable设置任何颜色,适应不同的应用主题:

// 使用主题颜色 int color = getResources().getColor(R.color.primary); MaterialMenuDrawable materialMenu = new MaterialMenuDrawable( this, color, Stroke.REGULAR ); // 使用十六进制颜色 MaterialMenuDrawable materialMenu = new MaterialMenuDrawable( this, Color.parseColor("#FF4081"), Stroke.REGULAR );

📐 8. 缩放比例调整

通过调整缩放比例,可以让Material Menu Drawable适应不同大小的Toolbar:

// 设置缩放比例 materialMenu.setScale(1.2f); // 放大20%

🔄 9. 手动控制动画进度

Material Menu Drawable允许你手动控制动画进度,这在创建自定义交互时非常有用:

// 手动设置变换偏移量 materialMenu.setTransformationOffset( MaterialMenuDrawable.AnimationState.BURGER_ARROW, 0.5f // 50%的动画进度 );

📱 10. 使用MaterialMenuView组件

除了作为Drawable使用,Material Menu Drawable还提供了MaterialMenuView组件,可以直接在XML布局中使用:

<com.balysv.materialmenu.MaterialMenuView android:id="@+id/material_menu_button" android:layout_width="48dp" android:layout_height="48dp" app:mm_color="@color/white" app:mm_iconState="burger" app:mm_strokeWidth="2" app:mm_transformDuration="300" />

在demo/src/main/res/layout/demo.xml中,你可以找到完整的MaterialMenuView使用示例。

🚀 高级技巧:状态保存与恢复

当Activity重新创建时,确保Material Menu Drawable的状态正确保存:

@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("icon_state", materialMenu.getIconState().ordinal()); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { int savedState = savedInstanceState.getInt("icon_state", 0); materialMenu.setIconState(intToState(savedState)); } }

💡 实用案例总结

通过这10个实用技巧,你可以充分发掘Material Menu Drawable的潜力:

  1. 快速集成- 只需一行依赖
  2. Toolbar集成- 轻松添加到导航栏
  3. 状态切换- 四种图标平滑过渡
  4. NavigationDrawer配合- 滑动动画效果
  5. 动画定制- 调整持续时间
  6. 线条粗细- 三种粗细选择
  7. 颜色定制- 适配应用主题
  8. 缩放调整- 适应不同尺寸
  9. 手动控制- 精确动画控制
  10. XML使用- 直接布局声明

Material Menu Drawable虽然已被标记为废弃项目,但其简洁的API和流畅的动画效果仍然值得学习和使用。你可以在demo/src/main/java/com/balysv/materialmenu/demo/DemoActivity.java中找到完整的演示代码,体验所有功能。

无论你是Android新手还是有经验的开发者,掌握Material Menu Drawable的使用技巧都能让你的应用界面更加专业和吸引人。开始尝试这些技巧,为你的应用添加流畅的Material Design动画吧!✨

【免费下载链接】material-menu[deprecated] Animations for Android L drawer, back, dismiss and check icons项目地址: https://gitcode.com/gh_mirrors/ma/material-menu

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 16:25:07

three.quarks路线图解析:探索VFX引擎的未来功能与发展方向

three.quarks路线图解析&#xff1a;探索VFX引擎的未来功能与发展方向 【免费下载链接】three.quarks Three.quarks is a general purpose particle system / VFX engine for three.js 项目地址: https://gitcode.com/GitHub_Trending/th/three.quarks three.quarks是一…

作者头像 李华
网站建设 2026/7/6 16:24:23

Material Menu动画插值器深度教程:创建自定义动画效果

Material Menu动画插值器深度教程&#xff1a;创建自定义动画效果 【免费下载链接】material-menu [deprecated] Animations for Android L drawer, back, dismiss and check icons 项目地址: https://gitcode.com/gh_mirrors/ma/material-menu Material Menu是一个为An…

作者头像 李华
网站建设 2026/7/6 16:24:11

CMS版本迁移工具:Instatic数据转换与升级完整指南

CMS版本迁移工具&#xff1a;Instatic数据转换与升级完整指南 【免费下载链接】Instatic Instatic is a modern self-hosted visual CMS - get it running in 1 minute 项目地址: https://gitcode.com/GitHub_Trending/in/Instatic 如果你正在寻找一个现代化的自托管CMS…

作者头像 李华
网站建设 2026/7/6 16:22:43

FloatingView实战案例:如何在社交App中实现酷炫点赞动画

FloatingView实战案例&#xff1a;如何在社交App中实现酷炫点赞动画 【免费下载链接】FloatingView FloatingView can make the target view floating above the anchor view with cool animation 项目地址: https://gitcode.com/gh_mirrors/fl/FloatingView 想要为你的…

作者头像 李华
网站建设 2026/7/6 16:21:32

three.quarks实例化渲染:高效渲染大量粒子的终极指南

three.quarks实例化渲染&#xff1a;高效渲染大量粒子的终极指南 【免费下载链接】three.quarks Three.quarks is a general purpose particle system / VFX engine for three.js 项目地址: https://gitcode.com/GitHub_Trending/th/three.quarks 在WebGL和Three.js的世…

作者头像 李华
网站建设 2026/7/6 16:20:03

Instatic开发工具推荐:编辑器、插件与扩展

Instatic开发工具推荐&#xff1a;编辑器、插件与扩展 【免费下载链接】Instatic Instatic is a modern self-hosted visual CMS - get it running in 1 minute 项目地址: https://gitcode.com/GitHub_Trending/in/Instatic Instatic作为一款现代自托管视觉CMS&#xff…

作者头像 李华