浅析WPhone、Android的Back与Home键
浅析WPhone、Android的Back与Home键
背景
本人一直在用诺基亚手机(目前是Nokia 925,Windows Phonre 8.1),在界面设计、应用多样性等方面没少受身边Android机主的鄙视。
的确,不过分地说,一款Android平台上发布的应用,WPhone平台上接下来可能会出现,也可能不会,当然也不排除相反的情况(用过的朋友就会知道这种情况比较少一点点^-^)。
就拿支付宝来吧,WPhone安装的支付宝钱包去年才可以查余额宝信息,到现在也不能够抢红包,微信不支持钱包功能(不支持红包、支付宝绑定),就会造成很多不便,如用滴滴打车时无法直接付钱。我就有几次,用软件打车,用现金付钱,司机都摸不清头脑。
今天主要是对WPhone、Android手机Back与Home键的相似与区别之处进行分析。
Back
在导航页面的制作方面,WPhone比Android在开发过程中体现地更加人性化,微软的API中有一个Go Back方法,能够使你回到之前的界面,即Back堆栈中的最新条目。如果Back堆栈中没有任何条目,则此方法将引发异常,所以在调用此方法前,始终都要检查 Can Go Forward。而Android中Activity本身也有一个栈对象对相应的Activity进行管理。
但Android程序员必须在onKey事件中对相应的事件进行监听,判断按下的键是不是Back键来决定是否执行回退操作。
Android中运行的程序无需刻意地去退出,当按下手机的Back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity。当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了。如果说程序中存在Service之类的,则可以在恰当的位置监听处理下也就可以了。
相信看这篇文章的人中现在还在用诺基亚的很少了吧,所以接下来通过我的诺基亚手机的各种操作截图来说明两者之间的区别。
首先来看百度和微信首次点击Back键的效果图:
WPhone并不会像Android那样:只是将目标Activity从堆栈中销毁,但是当你按最右边的菜单键键(Home键右边,手机下方总共三个键)时,还是可以看到这个Activity的。如果你点击它,又会重新回到Activity的最前面成为当前的活动。
来看看Android手机上对应用点击了Back或Home键后再点击菜单键的效果图:
这里需要注意,这个过程中Activity是重新生成的,关键体现在其启动类的在onCreate()方法中的SavedInstanceState的值此时是null(而Home键情况不同,在后面会进行讲解)。
而从图中可以发现,WPhone采取的策略是要么取消回退,要么直接退出应用程序。
其实,这也体现在了手机最下方的按键设计上,WPhone三个键分别为Back,Home及Search,并没有菜单键。没错,是搜索按键,当我安装了Beta(语音辅助软件)后,点击Search按键就会弹出Beta的服务界面。
Home
至于Home键,WPhone和Android倒是没有多大的区别,功能上几乎一致:点击后直接回到主界面,将当前应用压入Activity堆栈中,此时的WPhone也不会强制将应用关闭了。
Android点击菜单键出现的效果,WPhone中自然也会有,不然怎么关闭点击Home键后依然存在的Activity呢。在WPhone中,若想要看到到底有哪些应用界面依然存在,方法是长按Back键。效果图如下:
此时,若想将某个应用重新打开,那么只要在其界面区域单击即可;若想关闭,就点击对应界面右上角的圆形叉叉。
代码
上面提到过,Android在点击Back和Home键之后,让应用重新回到活动状态的过程是不一样的。
这里给出在onCreate()方法中进行判断的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
Toast.makeText(this, "savedInstanceState is null", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this, "savedInstanceState is not null", Toast.LENGTH_SHORT).show();
}
11 }
若之前是点击Back,那么在界面上会显示"savedInstanceState is null",否则会显示"savedInstanceState is not null"。
总结
最后再来说说WPhone和Android的图标布局方式吧。先上图:
可以看到,WPhone是采用上下的竖排方式,不像Android是左右的翻页样式。也就是说,添加得越多,这一页就会越长,在寻找应用图标时就只能上下滚动。
这里有必要再说一下,在应用图标的排布方面Android和IOS是相似的,采用页面左右滑动的设计;而在重新唤醒或彻底关闭Acticity堆栈中的应用时,WPhone和IOS是相似的,将应用界面左右排布,不过两者的区别在于:
1、WPhone是长安Back键跳出所有应用界面,IOS是连续、快速地点击两次Home键;
2、WPhone是点击关闭按钮或者向下滑动应用界面,IOS是将应用界面向上滑动;
但是,也有其有意思的方面,注意上图中的图标大小。WPhone是允许用户自定义图标大小的,而且可以将图标在页面上任意拖动以完成自己想要的布局。
每每想到诺基亚(确切地说是微软诺基亚)的未来,都会在思考,要是当时它能坚定地转向Android平台,现在世界上的手机格局又会是怎样一副情景!
浅析WPhone、Android的Back与Home键的更多相关文章
- 正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法 例如:一个android程序包含两个Activity,分别为MainActivity和Other ...
- Android 如何监听返回键,弹出一个退出对话框
android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. public class BackKeyTest ...
- android webview点击返回键返回上一级activity
android webview点击返回键返回上一个activity @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
- android webview点击返回键回到上一个html
android webview点击返回键返回上一个html @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ( ...
- Android监听键盘右下角确定键
代码改变世界 Android监听键盘右下角确定键 kotlin写法 <EditText android:id="@+id/seachFriend" android:layou ...
- [转]Android 如何监听返回键,弹出一个退出对话框
本文转自:http://blog.csdn.net/sunnyfans/article/details/8094349 Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用 ...
- Android 禁用以及捕捉home键
最近要做个小项目,其中有需要禁止home键的需求,一开始以为不可以,感觉得root一下才行,后来查了一下,发现还是不少朋友都实现了这个功能,现在也引用一下,供大家参考一下: 1. 在activity中 ...
- Android下监听Home键
网上看到demo,亲测了以下机器和设备,均测试通过: 测试通过的手机: 1.华为荣耀3(Android 4.2.2) 2.小米2s(Android 4.1.1) 3.联想的手机 (Android2.3 ...
- Android WindowManager 监听返回键及home键
一.监听home键盘,Android Home键系统负责监听,捕获后系统自动处理.有时候,我们需要监听home键处理自己的逻辑,监听方法如下: /** * 监听home键广播 */ private f ...
随机推荐
- Navicat常用快捷键
[ctrl+q] 打开查询窗口 [ctrl+/] 注释sql语句 [ctrl+shift +/] 解除注释 [ctrl+r] ...
- 烂泥:nginx同时支持asp.net与php
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 经过两天的实验,终于让nginx同时支持asp.net与php了.下面就把具体的配置过程记录如下. 注意:本次实验OS:centos6 64bit. 尽 ...
- Toritoisegit记住用户名密码
TortoiseGit每次连接git都得输入密码了,如果我们用到的比较频繁这样是很麻烦的,那么下面我们来看一篇关于window设置TortoiseGit连接git不用每次输入用户名和密码的配置,具体的 ...
- java enum(枚举)的使用
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集” ...
- Redhat Linux 修改主机名(HOSTNAME)
hostname #查看当前主机的主机名hostname NEWHOSTNAME #临时修改当前主机名 修改主机名vi /etc/sysconfig/network #通过配置文件修改主机名NETWO ...
- actionlib的身世之谜
不知道为什么会把这么严肃认真的一篇技术整理贴起这么一个故事会风格类似的名字,就这样吧:^)shenmegui 园子里有人整理了actionlib的初学者教程,我来整理下actionlib的细节描述吧. ...
- MySQL版本介绍
MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...
- js获取鼠标位置的各种方法
在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊 ...
- POJ3260The Fewest Coins[背包]
The Fewest Coins Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6299 Accepted: 1922 ...
- HOLOLENS如何调节屏幕亮度和音量?
圆环左边的两个是亮度按键,右边的是两个音量按键,值得注意的是,无论是两个音量键还是亮度键,它们都被设置成了一凸一凹,凸的按键为音量/亮度+键,凹为-键,其工业设计可见一斑.