ActionBar 的 Navigation UP 功能

来源:互联网 发布:js xmlhttprequest 编辑:程序博客网 时间:2024/05/16 05:36

     ActionBar 支持 Navigation Up的功能,Navigation UP 是指返回 逻辑上的上一页。它和Back键的返回的含义是不一样的。Back键是根据用户浏览页面的顺序进行返回的,返回的是上一个浏览的页面的。而Navigation Up 所说的逻辑上的上一页,是根据软件的页面层次来决定的,是逻辑上的上一页。比如页面1显示 列表,页面2 显示 列表项的详情,页面3 显示的是列表项详情里的某一项的具体详情。我们可以利用Navigation UP 让页面3 返回页面1,因为页面3 返回 页面 1 ,这在页面的逻辑功能上是需要的。为什么这么说呢,如果我们的页面的层次太多,用户要返回第一页,只能通过Back键从第N 页逐页返回。从应用的逻辑功能的角度来讲,我们需要 让页面从第N页直接返回第一页,这样可以提高应用的用户体验。实际应用中,Navigation UP 返回的页面有可能是上一个浏览的页面,也有可能不是,我们需要根据软件的逻辑功能来进行设计。
ActionBar 的Navigation UP 功能 是通过让 Activity 指定 ParentActivity 来实现的,主要有以下几个关键的地方
1. 在Activity 中添加设置
getActionBar().setDisplayHomeAsUpEnabled(true); 
    2.在配置文件中设置 activity 的ParentActivity,例如
       <activity      android:name="name.lushuai.android.application.study.ui.actionbar.NavigationUpActivity"
            android:label="@string/title_activity_navigation_up"     android:parentActivityName="name.lushuai.android.application.study.ui.actionbar.StandardActionBarActivity" >
        </activity>

ActionBar 的Navigation Up 的具体UI 效果 如下




一般情况下,就是一个返回箭头+ICON,当然可以通过设置ActionBar 来控制ICON 和 标题。
 当点击 返回箭头部分,activity 通过getParentActivityIntent()miSDK>=11)这个方法获取返回的Intent,然后 startActivity(intent)返回 parent Activity.
 正如上面所说,如果页面的逻辑上的parent Activity 不止一个,那么就必须通过重写 Activity 的 getParentActivityIntent() 或者  onCreateSupportNavigateUpTaskStack()来实现。
   本质上讲,ActionBar 的 Navigation UP 的功能是通过 改变 Activity 所在栈的Activity 的顺序以及Activity 所在 Task 来实现的。这些与Activity 的启动模式以及 Activity Task ,Intent 的 Flag 属性相关。


     
0 0
原创粉丝点击