Android编程实现ActionBar的home图标动画切换效果

发布时间 - 2026-01-10 22:40:08    点击率:

本文实例讲述了Android编程实现ActionBar的home图标动画切换效果。分享给大家供大家参考,具体如下:

Material Design中一个重要特性是侧滑菜单 展开/关闭 时,ActionBar上的home图标也动画切换。本例要实现的正是这个效果,如图所示:

实现这个效果仅需几步:

1.首先,该页面的布局是一个DrawerLayout,代码如下:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/main_drawer"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <!-- 内容布局-->
  <FrameLayout
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  <!-- 侧滑菜单-->
  <android.support.design.widget.NavigationView
    android:id="@+id/main_navigation"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/navigation_header"
    app:menu="@menu/menu_drawer" />
</android.support.v4.widget.DrawerLayout>

2.为程序指定Actionbar箭头按钮样式,即如下代码中的DrawerArrowStyle

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/white</item>
</style>

然后,将AppTheme应用到manifest中application标签下。

3. Activity继承自AppCompatActivity, 然后在onCreate方法中添加代码(使用Toolbar与此类似):

ActionBar mActionBar = getSupportActionBar();
if (mActionBar != null) {
  mActionBar.setDisplayHomeAsUpEnabled(true);
  mActionBar.setHomeButtonEnabled(true);
}
//实现左侧home图标“菜单”样式与“返回”样式的动画切换(需要在xml中配置相关样式)
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
drawerLayout.setDrawerListener(drawerToggle);

4.在Activity的onPostCreate中添加如下代码,并且在其它可能需要刷新的地方调用drawerToggle.syncState() 方法。

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发动画技巧汇总》、《Android编程之activity操作技巧总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # ActionBar  # home  # 图标  # 动画  # 切换  # Android自定义ActionBar实例  # Android中ActionBar以及menu的代码设置样式  # android中开启actionbar的两种方法  # Android ActionBar使用教程  # 灵活使用Android中ActionBar和ViewPager切换页面  # Android巧用ActionBar实现tab导航效果  # Android ActionBar搜索功能用法详解  # Android巧用ActionBar实现下拉式导航  # Android 活动条ActionBar的详解及实例代码  # Android ActionBarActivity设置全屏无标题实现方法总结  # Android编程之ActionBar Tabs用法实例分析  # Android学习笔记之ActionBar Item用法分析  # 是一个  # 进阶  # 操作技巧  # 相关内容  # 感兴趣  # 给大家  # 与此  # 一个重要  # 几步  # 更多关于  # 所述  # 程序设计  # 仅需  # 如图所示  # 本例  # 讲述了  # id  # auto  # app  # match_parent 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  如何在不使用负向后查找的情况下匹配特定条件前的换行符  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  太平洋网站制作公司,网络用语太平洋是什么意思?  黑客入侵网站服务器的常见手法有哪些?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Python3.6正式版新特性预览  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel如何处理异常和错误?(Handler示例)  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  中山网站制作网页,中山新生登记系统登记流程?  Bootstrap CSS布局之列表  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  如何快速查询域名建站关键信息?  WEB开发之注册页面验证码倒计时代码的实现  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  高端网站建设与定制开发一站式解决方案 中企动力  黑客如何利用漏洞与弱口令入侵网站服务器?  如何用PHP工具快速搭建高效网站?  Laravel如何创建自定义Artisan命令?(代码示例)  Android 常见的图片加载框架详细介绍  香港网站服务器数量如何影响SEO优化效果?  高端云建站费用究竟需要多少预算?  Laravel如何实现一对一模型关联?(Eloquent示例)  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  javascript日期怎么处理_如何格式化输出  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Python图片处理进阶教程_Pillow滤镜与图像增强  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  jQuery中的100个技巧汇总  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)