首页 文章 精选 留言 我的

精选列表

搜索[HarmonyOS SDK],共10000篇文章
优秀的个人博客,低调大师

[SDK2.2]Windows Azure Virtual Network (1) 概念

《Windows Azure Platform 系列文章目录》 Windows Azure Virtual Network是非常重要的概念,其主要作用有以下两点: 1.将多台Azure VM整合在统一网段或者子网里 Windows Azure Virtual Machine具有两个IP地址,Public IP (VIP)和Private IP。Public IP是公网IP,而Private IP是内网IP。Azure数据中心的基础架构是非常强大的,通过Private IP我们可以实现数据中心内的快速通信。 在没有Azure Virtual Network的情况下,多台Azure VM想通过Private IP进行通信是不可能的,因为Azure从安全性考虑,VM与VM之间的VLAN是做了隔离的。(当然也可以通过将多台Azure VM加入同一个Availability Set里来实现互相通信。) 一般企业级的应用,都会有多台服务器来实现复杂的业务逻辑。比如一般B/S应用需要Web Server,SQL Server等。通过Windows Azure VM实现Web Server与SQL Server,并且放在统一个Virtual Network里,就可以实现多台Azure VM通过Private IP来互相通信。 2.固定Private IP 我们知道,如果在没有Azure Virtual Network的情况下,想固定Private IP(内网IP)是不可能实现的。 具体请参考: [New Portal]Windows Azure Virtual Machine (19) 关闭Azure Virtual Machine与VIP Address,Internal IP Address的关系(1) [New Portal]Windows Azure Virtual Machine (20) 关闭Azure Virtual Machine与VIP Address,Internal IP Address的关系(2) 在某些场景下,我们需要固定。比如在Windos Azure中创建Active Directory Server,实现SQL Server 2012 Always-On等等。这些情况下,使用Virtual Network就可以让我们固定Private IP。 2.实现混合云 混合云,就是公有云和私有云两种服务方式的结合。通过Windows Azure Virtual Network,可以打通本地局域网和Windows Azure公有云的连接,实现本地局域网和公有云的互通互联。 混合云是企业在今后一段时间内比较推崇的云计算解决方案。原因主要有以下三点: a)企业内部的IT系统往往都比较复杂,想把现有IT系统完全迁移到公有云平台需要花费很大的代价。从成本、敏捷的角度考虑,混合云是比较好的解决方案。既保留了大部分的企业内部IT系统,又能充分利用云计算弹性、可扩展的好处。 b)更好的安全性。即使微软承诺Windows Azure云平台具有极高的安全性和可靠性,但是对于某些对于数据非常敏感的公司来说,比如银行、电信等等,他们更加愿意把数据保存在企业内网。(这点我也表示非常理解...)。通过实现混合云的解决方案,可以把数据文件(数据库等)保存在企业内网,又充分利用了公有云平台的弹性计算、 横向扩展的优势。 c)企业都希望能专注于业务而不是IT。IT只是一种手段,应该交给更专业的公司来做。不断地扩张和投资本地IT不是企业的有效目标。公有云提供了低沉本和可扩展的平台,接管了企业在IT基础架构的管理投入,是企业一个更好的选择。 本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/3487777.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android SDK上手指南:用户界面设计

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996889 内容简介 我们将为应用程序项目添加布局方案,在这方面XML与Eclipse ADT接口将成为工作中的得力助手——不过在后面两节中还会用到一部分Java开发知识。XML与Java在Android平台的开发工作当中可谓无处不在,如果大家对二者还缺乏基本的了解,请尽快想办法补补课。对于刚刚入门的读者朋友来说,本文所介绍的要点将成为各位日后开发工作的重要基础。 1. XML基础知识 在我们开始讨论布局之前,先来梳理作为标记语言的XML的基础知识。如果大家对于XML已经很熟悉,可以直接跳过本节。XML是一种用于保存数据值的语言。XML文件在多个领域发挥作用。它们在某些项目中的功能与数据库非常相近,而且通常被作为网页的输出机制。如果大家之前曾经使用过HTML,应该会对XML的基本功能感到熟悉。 在XML中,数据值被保存在元素当中。单一元素通常包含一个开始标记与一个结束标记,如下所示: <product>Onion</product> 如大家所见,开始标记与结束标记几乎完全一样,惟一的区别在于结束标记中多了一个“/”符号。在上面的例子中,数据值也就是元素内容,即文本字符串“Onion”。开始标记也可以容纳与数据项目相信的其它属性信息,如下所示: <producttype="vegetable">Onion</product> 每项属性都有一个名称与一个值,其中值就是引号内的部分。元素中还可以包含其它元素: <sectionname="food"><font></font> <producttype="vegetable">Onion</product><font></font> <producttype="fruit">Banana</product><font></font> </section><font></font> 在这种结构中,我们将section元素称为主元素、products元素则被称为子元素。两个子元素之间属于“兄弟关系”。在XML文档当中,必须存在一个root元素作为主元素,或者被称为“嵌套”。这就构成了一种tree结构,其中子元素作为自主元素延伸出去的分支。如果某个子元素之下还包含其它子元素,那么它本身同时也具有主元素属性。 大家还会遇到另一种自结束元素,其中开始与结束标记并非独立存在: <ordernumber="12345"customerID="a4d45s"/> 其中元素末尾的“/”符号代表结束。 我们在Android平台上所使用的全部资源文件都要用到XML标记,其中包括布局文件、可绘制元素、数据值以及Manifest。 2. Android布局 第一步 当大家在安装了ADT的Eclipse IDE当中使用XML时,输入过程中显示的相关背景提示能让编码过程变得更轻松一些。在编辑器中打开新应用中的主布局文件,确保XML编辑标签已经被选中,这样我们就能直接对代码进行编辑了。我们首先要处理的是用于主屏幕的布局方案,用户在启动应用之后最先看到的就是它。Eclipse会提供一套基础布局,供我们进行个性化修改: <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"<font></font> xmlns:tools="http://schemas.android.com/tools"<font></font> android:layout_width="match_parent"<font></font> android:layout_height="match_parent"<font></font> android:paddingBottom="@dimen/activity_vertical_margin"<font></font> android:paddingLeft="@dimen/activity_horizontal_margin"<font></font> android:paddingRight="@dimen/activity_horizontal_margin"<font></font> android:paddingTop="@dimen/activity_vertical_margin"<font></font> tools:context=".MainActivity"><font></font> <TextView<font></font> android:layout_width="wrap_content"<font></font> android:layout_height="wrap_content"<font></font> android:text="@string/hello_world"/><font></font> </RelativeLayout><font></font> 如大家所见,root元素是一项布局元素,在上面的示例中为RelativeLayout。Android当中还提供其它几种布局类型,我们可以将一种布局嵌套到另一种当中。这里的root布局元素拥有几项额外属性且与布局效果密切相关,例如宽度、高度以及边距等等。布局元素当中的TextView允许开发人员显示一条文本字符串。TextView是View的一种,View属于可见及交互性元素,用以构成我们的应用程序UI。因此,应用程序中的每套分屏方案都要选择一种View,并在其中包含一种或者多种布局机制。在Android系统中,这些布局被称为ViewGroup对象,每个ViewGroup内包含一套或者多套View。 第二步 为了专注于一套布局的基础创建工作,我们要把主布局文件中的现有内容全部删掉,这样才能从零开始着手设计。正如我们之前所提到,大家可以利用Java代码创建自己的布局或者View,不过Android上的多种工具允许开发者利用XML设计自己的应用UI——这样各位就可以在创建元素的同时直接观察设计效果了。在某些实例中,大家可能见过单纯通过Java代码创建一些或者全部UI的做法,但现实情况下大部分创建工作还是要由XML完成的。这种做法还能保证应用程序逻辑与显示元素彼此独立。 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"<font></font> android:layout_width="fill_parent"<font></font> android:layout_height="fill_parent"<font></font> android:orientation="vertical"><font></font> <!--viewsgohere--><font></font> </LinearLayout><font></font> LinearLayout会沿横向或者纵向显示我们打算使用的View。在以上示例中显示方向为垂直,因此每个View都会沿屏幕下方依次排列。如果采取横向布局,那么各个View将由左至右依次排列。如果使用“layout width”与“layout height”两种属性(在Android当中,它们往往被称为布局参数),那么布局会被拉伸至横向与纵向的最大长度。 在“layout height”声明行之后再添加一条新行,通过键入“android:”准备开始输入属性。当大家输入对应内容,Eclipse就会提供一套与该属性相关的列表。大家可以继续输入内容以缩小属性列表,也可以直接在列表中用鼠标进行点选。现在我们选择“android:gravity”属性。 键入“center_horizontal”作为gravity值,这样其中包含的元素就会以X轴为中心加以显示: android:gravity="center_horizontal" 这种方式适用于布局中的一切元素。我们可以添加其它几种额外显示属性,例如填充、边距以及背景等。不过在今天的文章中,我们先从最简单的项目入手。 3. 添加View 第一步 正面我们开始向布局中添加View。所谓View,是指UI当中的可见元素。让我们首先添加一些文本内容和一个按钮。进入LinearLayout元素(在开始忹结束标记之间),输入“<”之后Eclipse就会提示大家与属性相关的可用元素列表。 在列表中选择TextView。请注意,与大部分View一样,这是一种自结束元素。为TextView设置两种属性,分别为layout width与layout height(键入‘android:’并选择对应提示): <TextView<font></font> android:layout_width="wrap_content"<font></font> android:layout_height="wrap_content"/><font></font> 通过“wrap_content”,我们可以保证View的宽度足以容纳其显示内容——这就避免了像布局那样以填充方式显示元素。现在再为TextView添加另一项属性,这一次通过列举文本字符串实现显示功能: android:text="Hellothere" 在保存文件之后,大家会看到Eclipse显示出一条警告消息。如果将鼠标悬停在消息之上,编辑器的边框处将显示该文本——这部分内容也会同时显示在Problem视图当中。警告内容为“Hardcoded string……should use @string resource(硬编码字符串……应使用@string资源)。”系统推荐的做法是将每一个文本字符串值保存为一项值资源,而不应将其直接包含在布局XML当中。尽管从起步阶段来看这样的处理方式既麻烦又毫无意义,但一旦养成良好习惯、大家会在今后的工作中逐渐发现其在大型项目中的价值。通过Package Explorer找出“res/values/strings.xml”文件并打开,切换到“strings.xml”标签并对代码进行编辑。 可以看到,Eclipse已经添加了几条字符串。要另行添加,只需为其设定名称与值: <stringname="hello">Hellothere</string> 这意味着如果大家需要在应用程序UI当中不止一次使用同一条字符串,而且稍后又需要对其进行修改,则只需在一处做出变更即可。保存字符串文件并切换到布局文件。将TextView的“text”属性引用到值文件的对应字符串中: android:text="@string/hello" 我们通过在字符串名称前加上“@string”的方式告知Android工具需要在哪里寻找字符串资源。这样一来,警告信息就不会再出现了。Eclipse通常会在我们编码的过程中发出这些提醒,从而通知我们当前存在的错误或者警示问题。大家可以选择遵循或者忽略警告信息的内容,但对于错误则必须加以调整,否则应用程序将无法正常工作。 第二步 在TextView之后添加一个Button: <Button<font></font> android:layout_width="wrap_content"<font></font> android:layout_height="wrap_content"<font></font> android:text="@string/click"/><font></font> 在我们的示例中,Button使用的属性与TextView相同。不过在其它情况下,它可能会使用更多属性,而且一般来说不同视图需要配合不同属性。按钮上显示的是“text”属性值。将这条字符串同之前一样添加到我们的“res/values/strings.xml”文件当中: <stringname="click">ClickMe!</string> 在接下来的教程中,我们将处理按钮的点击效果。切换到布局文件,查看编辑器右侧的Outline视图——它显示的是另一套指向文件元素的界面。双击列出的项目以跳转到对应代码位置。大家也可以展开或者折叠主元素。当布局变得更加复杂时,这种处理方式就变得非常实用。 提示:要整理Eclipse编辑中所打开的全部文件,我们只需按下“Ctrl+A”对其进行全选,然后按下“Ctrl+I”即可。 4. Graphical Layout 第一步 确保我们的布局文件已经正确保存,然后切换到Graphical Layout标签。 大家可以看到自己所设计的布局已经能够直接查看。界面左侧的Palette区域允许我们选择UI项目并将其拖动到布局当中。不过我们应该首先使用XML,直至对基本框架拥有初步概念。XML能帮助我们控制细节设计,所以即使在使用图形化工具的时候,我们也可能需要对XML结果进行编辑。 在Graphical Layout视图上方是一套下拉清单,我们可以从中选择用于查看布局效果的设备类型,其中也提供切换显示方向及缩放效果的工具。大家需要在设计布局的过程中不断利用Graphical Layout对效果加以控制。另外,这里也提供其它一些值得尝试的布局元素与设置。 第二步 大家可能已经注意到,在这一次的布局设计当中可见元素的显示位置与屏幕上边缘靠得比较近。下面就来解决这个问题。切换到XML编辑标签并向LinearLayout当中添加边距属性: android:layout_margin="10dp" 我们使用“dp”来设置像素的独立密度,这样设计就会让像素密度自动与用户设备相匹配。保存文件并切换到Graphical Layout以查看实际效果。 在我们进行布局设计时,Graphical Layout是一款非常实用的参考工具,但只能起到引导的效果。要了解我们的布局在应用程序运行时以怎样的方式显示、又能实现怎样的功能,大家需要将其载入虚拟或者物理设备进行实际难。我们会在后续文章中进一步讨论这个话题。 5. 选项 大家可以在应用程序屏幕中包含各类布局类型以及View,但其基本处理方式都是一致的。我们前面所使用的是LinearLayout,但还有其它多种方案可供选择,其中比较常见的有RelativeLayout、FrameLayout、AbsoluteLayout以及GridLayout。大家可以在LinearLayout Palette当中找到这些类型,建议各位放松心态、在自己的View中任意选择并观察其显示效果。当添加来自Graphical Layout工具的元素时,请务必切换到XML以观察新元素的加入会产生什么样的标记代码。 Android平台针对多种常见需求提供View方案,例如单选按钮、复选框以及文本输入区等。这些方案能够大大节约我们需要手动执行的功能数量;但如果各位需要使用非自带UI元素,则需要创建一个自定义View类。一般来说,最好是在没有其它选择时再这样处理,毕竟标准化UI元素在用户设备上的表现更为可靠,同时也能节约开发及测试的时间。 结论 在今天的教程中,我们讨论了Android平台上用户界面布局的基本设计流程,但并未做深层次挖掘。在本系列文章的下一部分,我们将尝试在应用程序添加用户交互元素、检测并响应按钮点击。接下来,我们将着眼于同Android开发关系最密切的Java相关概念,并进一步探讨应用程序开发过程中所涉及的要素及实践方式。

优秀的个人博客,低调大师

Android SDK上手指南:应用程序资源

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996942 介绍 在系列教程中的最新一篇里,我们将研究大家最可能在第一个开发项目中涉及到的资源类型。项目资源当中包含布局、图片以及数据值,这些都是应用需要使用的元素。当我们创建一个新项目时,项目目录下会自动生成多个用于容纳通用资源类型的文件夹。如果需要,大家还可以添加更多文件夹以扩展资源类型数量。 大家可以通过Package Explorer浏览“res”文件夹当中的内容,这些就是我们之前在创建项目时所使用的资源。打开文件夹、看看里面都藏着哪些宝贝。大家还可以在资源目录下添加更多新文件夹,也可以在各文件夹中添加新文件,或者是直接使用现有文件(例如我们在前几篇系列文章中所使用的布局与字符值文件)。 1. 备用资源 在我们正式开始之前,首先指出一点注意事项——大家可以将自己的Android资源划分为两大类:一种是能够被跨设备使用的资源,另一种则是针对设备特定子集的资源。大家可以在现有项目结构中发现二者的实例。在Eclipse Package Explorer当中,查看“res”目录。请记住,不同的可绘制文件夹对应着特定设备屏幕像素密度。在今天的文章中,我们打算使用非特定可绘制文件(即能够跨设备使用的资源)。 大家可以通过类别限定的方式为每种资源类型添加备用目录。在Eclipse当中,这代表着“drawable-hdpi”、“drawable-xhdpi”等不同类型。Android平台支持多种用户设备分类方式,其中包括屏幕尺寸、像素密度、API级别、语言以及区域等等。任何在名称中不包含类型限定的资源类型文件夹都能够实现跨设备使用。大家并不一定需要为所有资源类型都设置类别限定文件夹,但当我们针对不同设备进行应用测试时,可能需要在不同配置之间做出一些细微调整。 2. 可绘制资源 第一步 我们都知道,Eclipse会创建多个可绘制文件夹,每一个都针对一种特定的密度桶。可绘制文件夹当中包含我们在应用程序中所使用的任何图片。大家可以在Eclipse之外准备一些数字格式的图片,例如JPEG、PNG以及GIF。大家还可以利用XML代码定义可绘制资源。下面我们就着手尝试,并将其添加到主布局当中。 尽管大家应该尝试针对各种特定像素密度创建可绘制资源,但由于本教程的篇幅所限,今天我们姑且使用适应所有设备的单一可绘制方案。在Eclipse Package Explorer当中选择“res”文件夹,选择“File”或者右键点击该文件夹->选择“New”->“Folder”来创建一个新文件夹。将该文件夹命名为“drawable”然后点击“Finish”完成创建。 无论何时,只要我们需要在项目当中创建新文件夹,都可以遵循以上流程。 第二步 现在我们新建的可绘制文件夹应该已经与其它原有可绘制文件夹一道,显示在Package Explorer当中了。正如我们之前所提到,如果某个文件夹并不针对特定设备子集(即由像素密度分类或者API级别加以定义),那么大家完全可以随意置换其中的资源并将其用于任何用户设备。因此,无论我们向新的可绘制文件夹当中添加什么内容,其都会显示在所有用户设备之上。对于大部分可绘制资源来说,我们最需要注意的就是其不同像素密度版本;不过为了简单起见,我们将在今天的文章中使用这个新文件夹。 在Package Explorer当中选中我们的新建可绘制文件夹、右键点击或者选择“File”、而后选择“New”以及“Android XML File”,从而在文件夹中创建一个新文件。这时Eclipse会弹出新文件的创建导航。Android支持多种不同的可绘制文件类型。今天我们要创建的是一个图形可绘制文件,并利用其中所包含的不同图形及外观实现标记的目的。大家可以点击此处,通过开发者指南了解其它可绘制类型。 在顶部的下拉列表中,我们可以选择资源的具体类型——由于我们是在可绘制文件夹中创建新文件的,所以Eclipse会自动选中“drawable”。接下来是项目下拉列表,同时应该自动填入我们所选择的项目。然后是在文本输入框内为文件命名——输入“nice_shape.xml”。输入框下方是我们可以选择的根元素列表。下滚并选择“shape”,因为我们打算定义的是图形可绘制资源。最后点击“Finish”,Eclipse会创建新文件并在编辑器中打开。 第三步 在图形可绘制对象中,大家可以选择一系列通用图形类别,其中包括矩形、椭圆、线条和圆环。选择了图形类别之后,我们就可以对其具体属性加以定义,例如实心或者渐变颜色、边角、填充、尺寸以及笔触等。我们通过以下代码编辑根shape元素,从而获得一个矩形: <shapexmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> </shape> 大家接下来可以通过在根shape元素中添加其它元素来定义图形属性。首先定义一个梯度: <shapexmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:centerColor="#FFFFFF00" android:endColor="#FF0000FF" android:startColor="#FFFF0000" android:type="linear"/> </shape> 我们需要定义梯度的类型、角度外加起点、终点以及中央的颜色。在gradient元素完成后,我们再添加一些圆角: <cornersandroid:radius="10dp"/> 下面添加笔触: <stroke android:width="2dp" android:color="#FF339966"/> 当我们在编辑器中输入内容时,会看到Eclipse提示的可用元素与属性类型。在完成本教程之后,大家可以用一段时间来尝试它们对效果的影响。我们将在下一步骤中将创建好的图形用在UI当中。现在保存可绘制文件。 提示:要在应用程序内使用Eclipse之外所准备的数字图片文件,大家只需直接将其复制到工作区目录下对应的可绘制文件夹当中即可。在文件向资源文件夹的复制过程结束后,大家可能需要刷新Eclipse视图——即在Package Explorer中选择对应项目,右皱起击或者选择“File”,然后选择“Refresh”。这样我们就能在应用程序代码中引用这些图片文件了。 3. 布局资源 第一步 我们先回顾一下之前文章在设计应用程序用户界面时,其中所涉及的布局知识。先来看布局文件与可绘制交互。我们可以在布局当中将可绘制资源作为View或者特定View的背景加以显示。首先列出我们已经创建完成的图形可绘制资源,并将其作为现有View的背景。打开应用程序的主布局文件,将图形可绘制资源作为我们之前添加的按钮的背景图案。为Button元素添加以下属性: android:background="@drawable/nice_shape" 我们利用资源类型与名称(即我们为可绘制资源设定的文件名)将其引用到布局当中。请注意,这与我们之前用于引用字符串值的语法形式是一样的。保存并切换到Graphical Layout标签,查看图形是否已经成为按钮背景。大家可能会注意到,按钮还需要一点填充调整。现在切换回XML编辑模式并为Button元素添加填充属性: android:padding="5dp" 重新切换回Graphical Layout标签并查看实际效果。 第二步 现在让我们在专用View中使用图形可绘制资源。将以下代码添加到布局中的Button元素内: <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:src="@drawable/nice_shape"/> 我们设置ImageView来填满除了边界之外的空间。大家也可以选择为其设置固定长度与宽度来达到同样的效果。请注意,Eclipse会显示警告,因为我们还没有为其添加内容描述属性。现在开始着手进行,打开我们的“res/values”字符串XML文件并添加以下内容: <stringname="pic">Picture</string> 现在大家可以将该字符串添加到布局文件下的ImageView当中: android:contentDescription="@string/pic" 如大家所见,资源的使用需要在项目中的不同文件之间来回切换,同时使用标准语法模式实现对不同资源条目的引用。现在再次切换以查看图形预览效果。 大家可以使用图中所示的控件进行放大与缩小。 4. 其它资源类型 到目前为止,我们已经在应用程序当中使用了三种资源类型:布局、可绘制与值。其实可以在应用中使用的资源类型还有很多,只需通过前面介绍的方法加以引用即可。正如我们在本系列之前的文章中所提到,大家还可以利用以下语法引用Java文件中的资源: //R.type.name .string.pic//example 让我们简要总结一下将来可能会用在应用程序当中的其它资源类型。在之前的文章和本文的前面几个章节,我们已经使用了可绘制与布局资源。字符串值也出现在布局文件当中。现在在Package Explorer当中打开“values”文件夹,除了字符串文件之外,Eclipse通常还会添加一个尺寸文件和一个样式文件。在样式文件内,大家可以定义外观属性从而与应用程序的UI风格保持一致。而在“dimens”文件中,大家可以定义应用程序所使用的尺寸值。 如我们之前所提到,大家可以通过限定机制为特定设备属性创建备用资源类型文件夹。如大家所见,Eclipse会针对特定API级别创建值文件夹,但我们也可以利用其它一些限定手段实现对特定设备的支持。举例来说,大家可能希望在我们所添加的ImageView当中使用固定宽高尺寸,从而使显示大小与设备屏幕尺寸完美契合。为了实现这一点,大家可以添加值文件夹及其中的尺寸文件来匹配各种尺寸或者像素密度桶(例如‘-small’、‘-large’、‘-hdpi’、‘-mdpi’等等)。通过在每个文件当中包含尺寸值,并在相同的值名称之下使用不同数字,Android系统将自动选择最适合用户设备的方案。 大家可能需要用到的其它资源类型还包括数字、菜单、动画以及颜色值。Eclipse通常会在我们创建一个应用程序之后为其创建一个菜单文件夹,现在请大家打开该文件夹看看其中的内容。要定义XML动画,大家可以向“res”目录中添加一个“anim”或者“animator”文件夹,也可以直接将动画文件添加到可绘制文件夹当中——具体方式取决于我们所使用的实际动画类型。 如果大家希望在应用程序UI中使用一组颜色,则可以在保存于值目录下的文件中对color元素进行定义。每个color元素都可以包含一个HEX值与一个名称属性,这样我们就可以在其它文件当中引用这些颜色了。至于那些无法被归于任何一种Android定义类别的XML资源,大家可以将其保存在“res”目录下的“xml”文件夹当中。 要对Android当中的全部资源类型拥有透彻了解,大家可以查看开发者指南当中的“资源类型”与“更多资源类型”两个章节。虽然在学习的起步阶段最好只接触比较浅显的内容,但这些资料仍然值得大家认真阅读,从而为今后的开发工作奠定良好的知识基础。 提示:当大家参阅Android项目实例或者开发者指南时,经常会在其中发现一些经常被资源使用的标准文件名。不过文件名本身其实可以随意选择——只要大家使用正确的文件夹名称与元素,这样应用程序代码就可以通过识别系统访问所有资源。除此之外,坚持使用传统文件名可以让我们的应用程序更加清晰且便于理解,特别是对于值文件夹来说。 总结 在今天的文章中,我们了解了Android系统当中关于应用程序资源的基础知识。不过正如之前所提到,还有很多未知领域等等着我们去探索。对于大家的第一款应用,各位只需要使用相对简单的方案帮助自己习惯资源的使用方法即可。但随着我们在应用开发方面的不断成长,大家应该尝试思考各类用户设备在运行我们应用时可能面临的情况,并为其提供必要的额外资源。在本系列教程的下一部分中,我们将一同了解项目的Manifest(清单)文件。

优秀的个人博客,低调大师

Android SDK上手指南:虚拟与物理设备

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52997021 在本系列教程当中,我们共同学习如何开发Android应用程序。在之前的文章里,大家已经了解了Android项目当中的基本元素、接触了用户界面的设计以及数据存储方案。接下来,我们将一同探索如何在物理及虚拟设备上运行自己的应用程序并与之互动。在系列文章的下一篇中,我们将分步讲解如何让应用程序运行在物理设备及模拟器当中。而在今天的教程里,我将带大家先来学习如何在Eclipse中设置物理与虚拟设备。 介绍 当大家开发将要公开发布的Android应用程序时,必须提前在物理实机与模拟器中对自己的产品进行测试。在模拟器方面,我们可以通过配置让虚拟设备拥有各种硬件及软件功能。虽然这样处理的效果不可能像真正在各种物理设备上那么可靠,但也足以帮助我们了解手头设备与外部可能接触的Android设备之间的差异。某些特定硬件与软件功能在模拟器中无法实现,但大家仍然可以在其中测试自己第一款应用程序中的大部分功能。 1.硬件设备 第一步 当大家开发Android应用程序时,应该首先关注成果在物理硬件设备上的运行情况。除了能够切实为我们带来应用程序外观、使用感受以及用户功能之外,硬件设备也是我们测试特定功能的惟一途径,例如通话。如果大家在开发过程中手边正好有一台硬件设备,也可以通过配置让模拟器拥有与其完全一致的硬件及软件功能,从而做到边开发边运行测试。 让我们首先将硬件设备与Eclipse相连。连接Android设备与计算机的就是大家都很熟悉的USB接口啦。我们可能需要在设备上启用USB调试,具体步骤为打开设备的设置屏幕、选择“开发者选项”、“等级设置”或者“应用程序”,然后选择“开发”。接着勾选USB调试项目。如果大家使用的设备上运行着Android 4.2或者更高版本,则可能需要通过设置让开发者选项正常显示。打开“关于手机”,然后在列表中重复多次(七次)点击“内部版本号”,最后返回之前的屏幕。 提示:大家可能还需要让自己的系统在Android设备接入时对其进行自动检测;没错,大多数情况下这一检测会默认进行,但我们还要需要防范万一。如果大家的Windows系统检测不到对应设备,请下载并安装USB驱动程序。如果大家使用的是Linux并在检测设备时遇到了麻烦,则可能需要使用udev文件并查看其中列出的设备制造商。如果仍然搞不定,请点击此处查看Android官方开发者指南中的对应说明。 第二步 一旦系统检测到了我们接入的Android设备,大家就可以在Eclipse中与其进行交互了。在下一篇教程中,我们将详细讲解如何处理这些工作,请大家安心期待。现在,我们只需要切换至DDMS视图。在Eclipse当中,选择“窗口”、“打开视图”然后选择“DDMS”。大家应该会在屏幕左侧的设备视图中看到自己接入的设备。另外,大家还会看到LogCat视图开始弹出消息,提示对该设备的处理正在进行。 接下来请大家花点时间,在设备视图中选定自己的设备后、认真通过文件浏览视图查看其中的内容。我们将看到设备上保存的各文件及文件夹。如大家所见,这些视图允许我们任意使用接入的设备,包括在上面运行、测试以及调试自己的应用程序。大家还可以使用设备视图中的各个按钮,其中包括截屏按钮——当万事就绪之后,各位可能希望截取几个精彩瞬间作为应用的介绍素材。 2.虚拟设备 第一步 现在让我们看看如何创建虚拟设备。在Eclipse中,选择“窗口”并点击“Android虚拟设备管理器(简称AVD管理器)”以将其开启。AVD管理器当中将显示两个选项卡,一个用于显示我们创建并启动的虚拟设备、另一个则用于管理可重新使用的设备定义。在未来的开发过程中,大家可能需要通过配置创建自己的AVD,从而有针对性地对应用的某种功能加以测试;但作为初期学习,我们会发现直接使用现有设备定义显然更快也更方便。现在切换到“设备定义”选项卡当中。 大家会在AVD管理器当中看到一份设备定义清单,通过这种方式,我们可以保存设备配置、以备今后重复使用。大家也可以通过点击“新设备”按钮创建自己的设备定义。点击之后,我们会看到如下图所示的界面。 在这里,大家可以对虚拟设备的硬件和软件等进行全方位配置,其中包括屏幕尺寸、分辨率、传感器、摄像头、输入方式、像素密度以及按钮等。在创建了新设备之后,配置会显示在现有定义列表当中。大家应该尝试为自己配置的定义起个有意义的名称,这样我们才能更容易地在列表中将其找到。不过现在我们姑且使用已有定义来测试手中的应用,点击“取消”退出当前界面。 第二步 大家可以通过两种方式使用现有设备定义:直接复制当前设备定义并对属性进行修改,或者直接根据现有定义创建一个虚拟设备实例。在列表中选择一种设备并点击“克隆”。 克隆设备窗口中的各输入框将被自动填充为与所选定义匹配的内容。现有设备的配置与我们的要求基本一致,因此所有设备属性都可以保留下来,直接点击“克隆设备”即可。这样列表中就会出现一套设备定义副本。 如大家所见,我们可以一目了然地通过Android设备定义与用户设备定义的颜色区别来判断哪些是默认方案、哪些是定制方案。大家只能对用户定义进行编辑,因此在列表中选择刚刚创建好的克隆设备并点击“编辑”。 现在我们可以对设备的各项属性进行编辑了,完成后点击“编辑设备”以应用配置方案。现在大家可以根据列表中的设备定义创建AVD实例了。 第三步 只要根据现在设备定义创建AVD并将其运行在模拟器当中,大家就可以看到设备定义之一开始起效。从列表中选择一项设备定义并点击“创建AVD”。在窗口中,我们可以对实例进行配置,或者直接保留定义中的所有设定。关于AVD选项列表的具体情况,大家可以点击此处查看Android开发者指南中的相关说明。现在点击“OK”以创建AVD。 Eclipse会切换回Android虚拟设备选项卡,这时我们的新设备就会显示在其中。在选定了新AVD之后,点击“开始”即可将其投入运行。 点击弹窗中的“启动”,Eclipse将开始运行搭载着我们自定义AVD的模拟器。该设备可能需要几分钟才能完成启动,在设备已经开始运行后,大家就可以关闭AVD管理器了。 第四步 在适当条件下,模拟器会显示设备硬件所控制的虚拟版本。大家可以通过鼠标点击与其进行交互。除此之外,模拟器还支持多种键盘快捷键组合,习惯之后能大大简化我们的日常操作——例如设备上的“Home”键对应键盘上的“Home”键。大家可以点击此处查看Android开发者指南中所罗列的模拟器快捷键清单。 根据大家所创建的AVD,我们可能需要按下F2或者点击“OK”来解除锁屏状态。如大家所见,模拟器会显示出如物理设备一样的效果。现在请大家花点时间探索一下虚拟设备,查看一下应用程序菜单、再启动几个应用试试。 正面启动虚拟设备中的浏览器应用。点击导航栏并输入要访问的网址。大家可以使用计算机键盘作为输入设备。模拟器会自动使用任何计算机上可用的互联网连接,这样我们就可以在测试应用程序时评估其Web连接功能。 第五步 现在请保持AVD的运行状态,切换回Eclipse并再次打开DDMS视图。大家将在设备视图当中看到自己的虚拟设备已经出现在列表内,它旁边还会显示已经接入的物理设备。Eclipse将显示一份当前设备上运行着的所有进程的清单。选中某个进程后,我们就可以利用设备视图中的多个功能按钮对其进行处理。现在请大家花点时间认真观察这一界面,它们将在未来成为我们调试应用的好帮手。 总结 现在我们已经熟悉了在Eclipse中使用硬件或者模拟设备的整个流程。在下一篇教程中,我们将正式开始让应用程序运行在来自Eclipse的设备当中。在后续文章中,我们还会探讨Android通用组件与Activity周期,帮助大家明确未来学习的方向。在大家开发了几款应用程序之后,也可能会愿意回头再交温习本系列教程。希望这几篇文章能成为朋友们在应用程序创建及设备交互过程中的指引与参考。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册