| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 9 动作条:走捷径 -> 正文阅读 |
|
[游戏开发]9 动作条:走捷径 |
1.引入1.0 什么是动作条最常见的基本状态下,ActionBar显示当前Activity的标题并且在它的左侧显示应用程序的图标。即使在这种最简单的状态下,ActionBar对所有Activity也是非常有用的,它可以告知用户他们当前所处的页面位置以及帮助应用程序保持始终如一的一致性。 ? 1.1 应用结构--好的应用应有清晰的结构在第六章了解到,创建应用时会有3种不同类型的屏幕: 除此之外,他们还有很棒的快捷路径:使用导航。 1.2 不同导航类型披萨应用的顶级屏幕显示了一个选项列表,提供了运行用户访问的一些选项。 前3个选项链接到类别活动;第一个选项会为用户提供一个披萨列表,第二个选项提供一个意大利面列表,第三个会显示一个分店列表。可以认为类别活动都是被动的(passive)。它们只是显示信息,帮助你在应用中完成导航。 第4个选项链接到一个详细信息/编辑活动,允许用户创建一个订单。这个选项是主动的(active)。它允许用户完成一些创建工作。 通常会用不同的方式处理主动和被动导航选项。这一章中我们会介绍如何处理主动导航选项。 1.3 使用动作实现导航在Android应用中,主动导航选项往往会增加到动作条。通常可以在活动顶部看到动作条( action bar)。常用的动作都显示在这里,所以一般包含最适合用动词描述的按钮,如Create (创建)、Search(搜索)或Edit(编辑)。 在这个披萨应用中,我们可以在各个活动的顶部增加一个动作条,这样一来,不论用户当前在什么位置,都能很容易地下订单。这个动作条要包含一个Create Order(创建订单)按钮,不论用户在什么位置都能轻松访问。 <动作条的样子↑> 下面来详细分析如何为应用增加动作条。 先看动作条: 动作条有很多用法:
要增加动作条,需要使用一个包含动作条的主题。主题就是应运用到整个活动或应用的一个样式,使应用有一种一致的观感。它会控制很多方面,如活动背景和动作条的颜色,以及文本的样式等等。Android提供许多可以使用的内置主题。 Android支持库: Android一直以来都在不断地增加新的特性。不过,如果我们想在一个两、三年前的老设备上使用最新的Android部件会怎么样呢?Android支持库是一组可以包含工程中的代码库。它们的存在就是为了提供向后兼容性,因为通过利用这些支持库,你可以在较老的设备上使用Android的新特性。 Android的某些特性只在支持库中提供,所以如果需要在应用中使用这些特性,就要使用支持库。举例来说,利用DrawerLayout? API可以创建导航抽屉,这种部件可以从屏幕一边滑入,这些API目前只在v4支持库中提供。 Android支持库包包括多个支持库。每个支持库都针对一个基API级别,包含一组特定的特性。支持库名反映了与这个库兼容的最低Android版本号。例如,v4支持库可以用于API 4及更高级别。类似的,v7支持库可以用于API 7及更高级别。这些库都经过相应的修改来包含新的特性,并修正了原有的bug。 支持库中的类存储在名为android.support.v*的包中。例如,v4库的类就存放在android.support.v4包中。 下面是Android支持库包中的一些库: 默认地,Android Studio通常会为工程增加支持库。为了了解具体是怎么样的,下面为披萨应用建立一个原型,我们将为它创建一个新工程,看看其中有没有引用支持库。 2.支持库2.1 工程分析自行看书N404 关于AndroidManifest.xml文件的分析:
?android:icon属性来为应用指定一个图标。这个图标用作为应用的启动程序图标,如果使用的主体会在动作条上显示图标,他就会使用这个图标。 这个图标可以是一个drawable或mipmap资源。mipmap是可以作为应用图标的图像,这些图像资源放在app/src/main/res的mipmap*文件夹中。与drawables一样,可以把不同的图像增加到适当命名的mipmap文件夹中,针对不同的屏幕密度增加不同的图像。例如,有高密度屏幕的设备使用mipmap-hdpi文件夹中的图标。布局中使用@mipmap指示mipmap资源。 android:label属性为应用或活动指定一个用户友好的标签,具体作为应用还是活动标签,这取决于它用在<application>还是<activity>属性中。动作条会显示当前活动的标签。如果当前活动没有标签,他就会使用应用的标签。 android:theme属性用于指定主题。在<application>元素中使用这个属性将把主体应用到整个应用。如果在<activity>元素中使用这个属性,则会把它应用到一个活动。 我们的android:theme属性值为"@style/AppTheme".@style前缀表示这个主体在一个样式资源文件中定义。那么什么是样式资源文件呢? 在样式资源文件中定义样式: 样式资源文件包含你想要使用的所有主题的详细信息。 在Android ?Studio中创建一个工程时,IDE会为你创建一个默认的样式资源文件,名为styles.xml,位于app/src/main/res/values文件夹。这个文件如下所示:
样式资源文件包含一个或多个样式。每个样式使用<style>元素定义。 每个样式必须有一个名,这就是你用n a me属性定义的名字。样式必须有一个名字,这样AndroidManifest.xml中的android:theme属性才可以引用这个主题。在这里,样式名为"AppTheme",所以AndroidManifest.xml可以使用"@style/AppTheme"来引用这个主题。 parent属性指定这个样式从哪里继承属性。在上面的代码中,它要继承"Theme.AppCompat.Light.DarkActionBar"。 还可以修改一个现有主题的属性,使用样式资源文件定制应用的外观。为此,要为<style>增加一个<item>元素,描述你想做的修改。例如,下面的代码将主题修改为让所有活动都有一个红色背景: 要改变应用使用的主题,则需要: 在style.xml中设置默认主题。 需要注意的是,主题版本要和MainActivity主活动类所继承的类版本要匹配。 根据书上的操作,运行应用时,会发生什么? 2.2 为动作条增加动作项2.2.1 为动作条增加动作项的步骤大多数情况下都需要向动作条增加动作项。动作项就是动作条中的按钮或文本,可以单击这些动作项来完成某些工作。例如,我们要为动作条增加一个“Create Order”(创建订单)按钮。 ?要为动作条增加动作项,需要做3件事: 1.在一个菜单资源文件中定义动作项。 2.让活动充气( inflate)菜单资源。 可以通过实现onCreateoptionsMenu()方法来做到。 3.增加代码。指定单击各个动作项时要做什么。 可以实现onoptionsItemselected()方法来做到。 2.2.2? 菜单资源文件在项目的res文件夹下,创建menu文件夹,所有菜单资源文件全放在这个文件中。 下面的菜单资源文件,描述了动作条溢出区中显示的一个Setting动作项:
每个菜单资源文件都有一个根元素<menu>。菜单资源文件会定义一个菜单,或者要增加到动作条的一组菜单项。应用可以包含多个资源文件,如果希望动作条上有不同的动作项,这就很有用。 要使用<item>元素为菜单增加菜单项。每个动作项使用一个单独的<item>来描述。<item>元素有很多属性,下面列出其中最常用的一些属性: 关于菜单showAsAction属性:? showAsAction属性用于指示是否希望这一项出现在动作条中。 app:showAsAction 它有三个可选项 android:showAsAction 这个属性可接受的值有: 1.alaways:这个值会使菜单项一直显示在ActionBar上。 2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。 3.never:这个值菜单永远不会出现在ActionBar是。 4.withText:这个值使菜单和它的图标,菜单文本一起显示。 需要注意的是,android和app这两个域不同,其设置也不同,千万不能错!!!! 2.2.3 增加一个新动作项我们要为动作条增加一个新的动作项来创建订单。这个动作项的标题为“Create Order”,另外有一个图标。 在动作条中使用图标时,可以创建自己的图标,也可以使用Android动作条图标集(icon pack)中高端图标(这个需要下载)。 增加了这些图标之后,在strings.xml中增加一个新的action_create_order字符串:
为menu_main.xml增加菜单项:
如果没有足够的空间,新菜单项将在动作条上显示为一个图标。 2.2.4 用onCreateOptionMenu()方法在活动中充气菜单
这个方法将menu_main.xml菜单资源文件中的菜单项增加到动作条Menu对象。 2.2.5 用onOptionsltemSelected()方法响应动作项单击要在单击动作条中的动作项时让活动作出响应,需要实现onOptionsItemSelected()方法。只要单击了动作条中的动作项就会运行这个方法。 onOptionsItemselected ()方法有一个参数,这是一个MenuItem对象,表示动作条上单击的动作项。可以使用MenuItem的getItemId()方法得到动作条上所单击的动作项的ID,来完成一个适当的动作,如启动一个新的活动。 下面是代码:
我们要在单击创建订单动作项时,让它启动一个名为OrderActivity的新活动。 2.2.6 创建OrderActivity我们再创建一个名为OrderActivity的新活动,使创建订单动作项可以启动这个活动。 创建一个新的空活动“CreateActivity”,布局名为“activity_oreder”,标题名“Create Order”,菜单资源名为"menu_order"。 要让该活动的标题名为“Create? Order”,需要在AndroidManifest.xml中,对CreateActivity的相关标签做出修改:
下面给出代码,需要明确的是 OrderActivity扩展Activity类而不是其他类。
OrderActivity代码中没有包含onCreateOptionsMenu()和onOptionsItemselected()方法,因为我们不需要orderActivity在动作条中显示菜单资源文件中的菜单项。如果确实希望显示菜单项,就要增加这些方法。 2.2.7 用创建订单动作项启动OrderActivity单击MainActivity动作条中的创建订单动作时,我们希望它启动orderActivity。为此,需要更新MainActivity中的onOptionsItemSelected()方法。我们将用一个意图启动OrderActivity。 代码:
测试: 2.3 在动作条上共享内容2.3.1 动作提供者(action provider)下面要介绍如何对动作条使用一个动作提供者。动作提供者( action provider)是为动作条增加的一个动作项,可以处理它自己的外观和行为。 我们将重点介绍如何使用共享动作提供者。共享动作提供者允许用户与其他应用(如Gmail)共享应用中的内容。例如,你可以使用共享动作提供者让用户向他们的某个联系人发送一个特色披萨的详细信息。 共享动作提供者会定义自己的图标,所以你不需要自行增加。单击这个图标时,它会为你提供一个应用列表,可以使用其中所列的这些应用来共享内容。 ?2.3.2 用意图共享内容要让共享动作提供者共享内容,需要为它传递一个意图。所传入的意图定义了你想要共享的内容及其类型。 例如,如果定义了一个意图,要用一个ACTION_SEND动作传递文本,这个共享动作会在你的设备上提供一个应用列表,其中列出的应用都能够共享这种类型的数据。 1.你的活动创建了一个意图,并把它传递到共享动作提供者 这个意图描述了需要共享的内容,它的类型和一个动作。<这里面有三个信息,内容本身,类型和动作> 2.用户单击共享动作时,这个共享动作使用意图为用户提供一个应用列表,其中的应用都能处理这种数据。 用户选择一个应用,共享动作提供者将这个意图传递给可以处理它的应用活动。 ?2.3.3 为menu_main.xml增加一个共享动作提供者要为动作条增加一个共享动作,可以把它包含在菜单资源文件中。 需要使用<item>元素向菜单资源文件增加共享动作。不过,这次需要制定你在使用一个共享动作提供者。为此,要增加一个android:actionProviderClass属性,并设置andriod.widget.ShareActionProvider. 下面是增加共享动作的代码:
下面就指定要共享什么内容。 2.3.4 用意图指定内容单击共享动作时,要让它共享内容,需要在活动代码中告诉它要共享哪些内容。为了做到这一点,可以使用共享动作提供者的setShareIntent()方法,为它传递一个意图。 下面的代码可以在单击共享动作时让它共享一些默认文本:
只要想要共享的内容发生改变,就需要调用共享动作提供者的setShareIntent()方法。 举例来说,如果你查看一个照片应用中的照片,就要确保共享的是当前的照片。 运行这个应用时,会在动作条中显示共享动作。单击这个共享动作时,它会提供一个应用列表,可以从中选择一个应用接受我们想要共享的意图。选择应用时,它会共享默认文本。 2.4 支持向上导航2.4.1 活动体系结构? 如果应用中包含一个活动层次结构,可以在动作条上启用UP(向上)按钮,利用这个层次关系在应用中当行。 举例来说,在我们的应用中,MainActivity的动作条中包含一个动作项,它会启动第二个活动OrderActivity。如果启用了OrderActivity动作条中的向上按钮,用户通过单击这个按钮就能返回MainActivity。 ? 听上去向上导航可能与后退按钮是一样的,不过实际上他们完全不同。利用后退按钮,用户可以根据已完成的活动历史后退。向上按钮则有所不同,它存储基于应用的层次结构。? 使用向上按钮会沿着应用的层次结构向上导航,单击子活动的向上按钮会沿着层次结构进入这个活动的父活动。 2.4.2 设置活动的父活动利用向上按钮,用户可以在应用的活动层次结构中向上导航。可以在AndroidManifest.xml中指定各个活动的父活动来声明这个层次结构。例如,我们希望用户按下向上按钮时能从orderActivity导航到MainActivity,所以这说明MainActivity是orderActivity的父活动。 从API? 16开始,要使用android:parentActivityName属性指定父活动。 对于较老的Android版本,则需要包含一个<meta-data>元素,其中包括父活动的名字。下面在AndroidManifest.xml中同时展示了这两种方法: 最后,需要在OrderActivity中启用向上按钮。 2.4.3 增加向上按钮要在活动代码中启用向上按钮。首先使用活动的getActionBar()方法得到动作条的一个引用。然后调用动作条的setDisplayHomeAsUpEnabled()方法,并传入一个true值。
?注意: 如果启用一个活动的向上按钮,必须指定它的父活动。 如果没有指定父活动,调用setDisplayHomeAsUpEnabled()方法时会得到一个空指针异常。 想启动OrderActivity中的向上按钮,所以需要在OrderActivity.java的onCreate()方法中增加一些代码。
运行应用的结果: 现在可以知道什么是动作条: ? 3.总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 19:59:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |