本文实例讲述了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
相关文章:
佛山企业网站制作公司有哪些,沟通100网上服务官网?
C++如何使用std::optional?(处理可选值)
视频网站制作教程,怎么样制作优酷网的小视频?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
高端企业智能建站程序:SEO优化与响应式模板定制开发
微信小程序制作网站有哪些,微信小程序需要做网站吗?
内网网站制作软件,内网的网站如何发布到外网?
建站之星如何快速更换网站模板?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
如何使用Golang安装API文档生成工具_快速生成接口文档
广平建站公司哪家专业可靠?如何选择?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
高性价比服务器租赁——企业级配置与24小时运维服务
如何通过虚拟主机空间快速建站?
小型网站制作HTML,*游戏网站怎么搭建?
建站之星如何助力企业快速打造五合一网站?
建站主机服务器选型指南与性能优化方案解析
为什么Go需要go mod文件_Go go mod文件作用说明
如何破解联通资金短缺导致的基站建设难题?
如何在西部数码注册域名并快速搭建网站?
制作门户网站的参考文献在哪,小说网站怎么建立?
简历在线制作网站免费版,如何创建个人简历?
如何在IIS管理器中快速创建并配置网站?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
安徽网站建设与外贸建站服务专业定制方案
如何在IIS7中新建站点?详细步骤解析
,想在网上投简历,哪几个网站比较好?
中山网站制作网页,中山新生登记系统登记流程?
如何在阿里云通过域名搭建网站?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何选择PHP开源工具快速搭建网站?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何零基础在云服务器搭建WordPress站点?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
,网站推广常用方法?
如何在服务器上配置二级域名建站?
如何获取PHP WAP自助建站系统源码?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
Java解压缩zip - 解压缩多个文件或文件夹实例
如何制作网站标识牌,动态网站如何制作(教程)?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何在香港免费服务器上快速搭建网站?
制作网站的软件免费下载,免费制作app哪个平台好?
C++时间戳转换成日期时间的步骤和示例代码
网站制作需要会哪些技术,建立一个网站要花费多少?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
电脑免费海报制作网站推荐,招聘海报哪个网站多?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
*请认真填写需求信息,我们会在24小时内与您取得联系。