博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对Menu Button 说再见(翻译)
阅读量:5345 次
发布时间:2019-06-15

本文共 3060 字,大约阅读时间需要 10 分钟。

[This post is by Scott Main, lead tech writer for . — Tim Bray] 
在Android 3.0(蜂窝)之前,所有安卓手机都有一个专门的菜单按键。作为开发者可以利用菜单按键向用户展示一些相关的内容。Android 3.0(蜂窝)去掉了与菜单按键,而引进了ActionBar这个类,利用这个类用户可以快速的调用菜单。在以后我们设计的程序中,我们要尽量避免使用菜单按钮,最好使用ActionBar这个类。使用ActionBar并不是一个新的概念,早在Android 3.0(蜂窝)就已经有了。
 你可能会担心如果应用支持ActionBar将会改动很大,因为你的应用必须支持Android 3.0(蜂窝)之前的版本。但实际上对于大多数的的应用程序来说支持ActionBar是很简单的,仅仅调用几行代码就行。
 
 如果让我把所有的更改总结成一句话,那就是:“设置targetSdkVersion=14 并且 如果你使用了 optionsMenu”
 
 
ActionBar不是一个menu
 
 你的应用程序停止支持菜单按钮,你构建应用程序的时候也不要去想支持菜单按钮。你构建Activity时应该在ActionBar上提供一些buttons来响应一些重要的用户操作。如果不是重要的功能应该放在ActionBar的overflow的弹出中。
 在下面的截图中ActionBar中有一个搜索和一个overflow,点击这个overflow就会弹出一个下拉菜单。
 即使你的应用专门构建运行在android3.0以前的版本上(不支持actionbar,必须使用菜单按钮来显示一些用户选项的版本),当这个应用运行在不支持菜单按钮的android3.0或者以后版本上,点击菜单按钮时菜单的功能选项将会出现在overflow中。
 这看起来很麻烦很啰嗦,但是点击overflow确实是一个不同的思维方式。你应该好好思考哪些重要的用户操作应该显示在actionbar中去方便用户操作,哪些应该显示在overflow中,而不是简简单单的显示一些菜单选项的罗列。
 
在老版本的app中的overflow按钮
 
 如果你已经开发了一个应用程序来支持Android 2.3和更低,那么您可能已经注意到,当它运行在没有硬件的设备菜单按钮(如蜂窝版本的平板电脑或者Galaxy Nexus),系统会增加按钮系统导航。
 增加按钮系统导航旨在能够确保兼容构建在android3.0之前版本的应用程序,但是这个导航并不是一个好的用户体验,实际上在应用程序中是不怎么使用菜单按钮的,所以在overflow中的菜单功能也不怎么直观,同样也会让用户很困惑的去找程序的功能按钮,所以你尽量少的去在显示overflow中显示功能选项,这样做的话能够更好的兼容Android3.0以后的版本。
 如果你应用程序运行在没有菜单按钮的设备上,系统导航栏中显示不显示overflow取决于你的选用的API级别(在manifest中使用<uses-sdk>元素声明的Api),如下:
1.如果你设置setSdkVersion或者targetSdkVersion为11或11以上,系统将不会显示overflow按钮。
2.运行在android3.0或者以上版本的系统中,将会显示overflow按钮。
3.例外的是,如果你设置minSdkVersion为10或者更低,设置targetSdkVersion为11、12、13,并且没用使用ActionBar,当你的程序中运行在android4.0或者更高的版本中添加一个overflow按钮。
 
 这个例外可能比较难以理解,但是如果你想支持一个android3.0之前的版本的系统并且有一个菜单按钮。
 如果你你不想让overflow按钮出现在你的设备上,你应该设置targetSdkVersion为14.(你必须不要设置minSdkVersion去支持任何一个版本)
 
功能选项按钮放在actionBar中
 
 如果你的activity中在onCreateOptionsMenu()定义了一些菜单选项,并且在导航栏中并没有显示overflow按钮(因为你设置了taigetSdkVersion为14),你必须在ActionBar中定义让用户操作的功能选项。
 如果ActionBar中有足够的空间让我们放置重要的功能按钮,我们可以在<item>标签中使用showAsAction="ifRoom"来显示这些重要的功能选项。如果想只能更加全面的在ActionBar中添加重要的动作相应,参见 。
 为了更好的提升ActionBar的用户体验。我们建议你在设计actionBar时使用一些用户图标,例如分享,删除,收藏等。
 如果这些图标都不是你想要的你可以设计你自己的,参见 。
 
移除actionBar
 
 如果你并不需要actionBar,你可以在你整个应用中或者在某一个activity中移除。这样适用于某些应用根本没有必要使用功能选项(例如:游戏)。你可以使用 Theme.Holo.NoActionBar或者Theme.DeviceDefault.NoActionBar的主题来移除actionBar。
 为了能使用这一theme并且保持良好的向后兼容性,你可以使用android系统自带的theme来应对不同版本的平台,就像亚当·鲍威尔的文章中所说的那样。你需要保证的是你自定义的主题根据当前平台版本来兼容不同的平台。
 例如,这里你可以为你的应用声明一个自定义主题。
或者你可以在<activity>元素中声明主题。
 
在支持蜂窝之前版本的版本上在res/values-v11/themes.xml 中包含以下继承自标准平台的主题
 For pre-Honeycomb devices, include the following theme in
res/values/themes.xml that inherits the standard platform theme:
在蜂窝或者以上版本中,在res/values-v11/themes.xml 中包含以下继承自NoActionBar theme的主题。
在运行时将基于系统的api版本来应用适当的NoActionBar主题。
 
总结:
 1.android将不再支持菜单按钮,一些设备也没有菜单按钮,你应该尽量避免使用菜单按钮。
 2.设置targetSdkVersion为14在android4.0系统中来测试你应用程序。
 3.添加showAsAction="ifRoom"在actionbar中显示重要的菜单功能
 4.如果你的应用程序不需要菜单功能,你可以使用Theme.Holo.NoActionBar或者Theme.DeviceDefault.NoActionBar去掉actionbar
 
英文原文地址:http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html
 
第一次翻译,没什么经验,有错误敬请谅解。
做个广告链接:
1、我新做的一个网站
2、赶紧来优站链接:
 
 
 
 

转载于:https://www.cnblogs.com/lztx/p/3713929.html

你可能感兴趣的文章
触发器课程SQL Server 知识梳理九 触发器的使用
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
客户端连接linux虚拟机集群报错
查看>>
linux下部署一个JavaEE项目的简单步骤
查看>>
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
6)添加一个窗口的图标
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
Road Map
查看>>
正则替换中的一个Bug
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>