Android物联网应用编程高职全套教学课件_第1页
Android物联网应用编程高职全套教学课件_第2页
Android物联网应用编程高职全套教学课件_第3页
Android物联网应用编程高职全套教学课件_第4页
Android物联网应用编程高职全套教学课件_第5页
已阅读5页,还剩248页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一

HelloWorld项目1:HelloWorld.pptx项目2:用户登录界面设计.pptx项目3:简易相册设计.pptx项目4:安卓考试.pptx项目5:两屏消息传递.pptx项目6:家电列表.pptx项目7:电器清单.pptx项目8:日期预约.pptx项目9:定时提醒.pptx项目10:GPS定位.pptx项目11:发送邮件.pptx项目12:发送短信.pptx项目13:拨打电话.pptx项目14:访问网页.pptx项目15:倒计时.pptx项目16:学生数据库.pptx项目17:网络通信.pptx全套可编辑PPT课件1项目一:HelloWorld1.1项目介绍“HelloWorld”,世界上的第一个程序,最早出现在1972年的贝尔实验室。延续至今,“HelloWorld”演变成了学习任何一种编程语言的第一个入门程序。本项目将带领学习者在AndroidStudio集成开发环境中编写出第一个应用――“HelloWorld”,如图1-1所示。图1-1第一个Android应用--“HelloWorld”21.2相关知识1.2.1AndroidStudio集成开发环境AndroidStudio是一款由google公司于2013年5月推出的Android集成开发工具。它包含用于构建Android应用所需的所有工具,书中项目均使用AndroidStudio2.1.2版进行开发。

下载并安装Java开发工具包安装AndroidStudio开发环境(主要针对Windows操作系统)需要先安装一个重要的前置组件—Java开发工具包(JavaDevelopmentKit,JDK),可至ORACLE官网:/technetwork/java/javase/downloads/index.html下载,下载时请注意选择相应的系统及处理器型号,例如:64位操作系统需要下载Windowsx64程序文件,32位操作系统需要下载Windowsx86程序文件。如图1-2所示。小贴士:点击下载链接前需要先选中“AcceptLicenseAgreement”,表示接受许可协议。Windows平台Java开发工具包图1-2JDK下载页面3JDK的安装较简单,双击下载的exe可执行文件,初学者建议选用默认安装目录C:\ProgramFiles\Java\jdk1.8.0_101\,然后点击“Next”按钮,即可完成安装。请学习者自行实践。

配置Windows环境变量为使AndroidStudio能够找到JDK,需要对Windows进行环境配置。右击“我的电脑”“属性”菜单(也可使用“控制面板”“系统和安全”“系统”)。在打开的“系统”窗口右侧目录中选择“高级系统设置”项,打开“系统属性”对话框,点击底部的“环境变量”按钮,打开“环境变量”对话框。点击“新建”按钮,输入变量名:JAVA_HOME,变量值:C:\ProgramFiles\Java\jdk1.8.0_101。如图1-3所示。图1-3新建JAVA_HOME环境变量在“系统变量”组中找到“PATH”项,点击“编辑”按钮,在变量值项中添加:;%JAVA_HOME%\bin。如图1-4所示。图1-4编辑PATH环境变量4

下载并安装AndroidStudioAndroidStudio的安装文件可至AndroidStudio中文社区(官网)下载:/,如图1-5所示。单击绿色“下载ANDROIDSTUDIO”按钮即可下载。图1-5AndroidStudio下载页面AndroidStudio的安装也请初学者使用默认安装目录及配置,自行实践。1.2.2XML语言XML(eXtensibleMarkupLanguage)指可扩展标记语言。它是一种被设计用来存储和传输数据的语言,是W3C的推荐标准。下面是张三写给李四的便签,以XML表示为:5<?xmlversion="1.0"encoding="utf-8"?><note> <to>李四</to> <from>张三</from> <heading>生日快乐祝福</heading> <body>李四你好,你的生日到了,祝你生日快乐!张三</body></note>其结构与HTML很类似,也是一种标记语言。Android应用程序中主要使用XML语言进行应用的配置、数据存储和传输。例如:AndroidManifest.xml(每个APP必须的配置文件)、activity_main.xml(界面布局文件)colors.xml(颜色配置文件)等。如图1-6所示。图1-6APP中的若干xml文件61.2.3Activity

Activity是Android组件中最重要的四大组件之一(Activity,Service服务,ContentProvider内容提供,BroadcastReceiver广播接收器)。Activity的主要作用是提供一个屏幕,负责与用户交互。在Android中,Activity拥有四种基本状态:Active/Running(激活/运行)、Paused(暂停)、Stopped(停止)、Killed(从内存中删除),其生命周期如图1-7所示。图1-7Activity的生命周期7当第一次调用一个Activity就会执行onCreate方法,后面总是接着执行onStart方法。当Activity处于可见状态的时候就会调用onStart方法,接着如果调用onResume我们就会看到这个界面,调用onStop方法的话就会被隐藏。当Activity可以得到用户焦点的时候就会调用onResume方法,后面总是调用onPause方法。当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法,后面总是接着执行onStart方法。当系统将要开始加载另外一个Activity的时候调用onPause方法,这个方法通常用于提交固定的数据、停止动画和其他可能消耗CPU的事情。onPause必须运行的很快,因为将要加载的Activity在它返回的时候才会"恢复"。如果重新返回这个Activity执行onResume方法,如果这个Activity不可见的时候就调用onStop方法。当Activity处于不可见状态的时候就会调用onStop方法,在Activity将要被销毁的时候或者一个新的Activity出现在界面的时候调用,接下来条用onRestart或者onDestory方法。当Activity被销毁时会调用onDestory方法。1.2.4TextViewTextView(文本视图),类似Label控件,在Android中主要用来显示一行或多行文本。TextView有丰富的属性,下面仅列出若干常用属性,见表1-1。表1-1TextView常用属性8属性描述android:text设置显示文本android:textColor设置文本颜色android:textSize设置文字大小,推荐度量单位"sp",如:12sp。android:textStyle设置字形值选项:bold:粗体italic:斜体bolditalic:加粗加斜可以设置一个或多个,用"|"隔开。android:textScaleX设置文字之间间隔,默认为1.0f。android:maxLength限制显示的文本长度,超出部分不显示android:singleLine设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用"…"来表示。android:lines设置文本的行数,设置两行就显示两行,即使第二行没有数据。android:editable设置是否可编辑android:layout_width设置LinearLayout的宽度。值选项:match_parent:与fill_parent作用相同,强制性地使当前元素的宽度充满它的父元素wrap_content:仅以元素中的内容完整显示作为当前元素的宽度自定义,例如:300dpandroid:layout_height设置LinearLayout的高度。值选项与layout_width相同,其结果作用于高度。91.3项目开发1.3.1任务分析这是我们学习Android的第一个入门应用。界面简洁,只有一个TextView(文本视图)控件,显示“HelloWorld!”,在屏幕中水平居中、垂直居中。此外,整个界面以全屏形式显示,顶部不显示标题栏(默认有标题栏)。TextView水平和垂直均居中无标题图1-8第一个APP应用--HelloWorld1.3.2任务实施

新建“HelloWorld”项目启动“AndroidStudio”开发环境,打开“WelcometoAndroidStudio”对话框。如图1-9所示。10图1-9AndroidStudio欢迎窗口选择窗口右侧的“StartanewAndroidStudioproject”项,新建一个android项目。在打开的“CreateNewProject”对话框中,输入Applicationname为“HelloWorld”;CompanyDomain为androidbook;在Porjectlocation项的右端浏览选择存放项目的文件夹(注意路径中不可有中文)。如图1-10所示。11图1-10新建“HelloWorld”项目点击“Next”按钮,进入“目标Android设备”选择页面。该页面提供了当前应用面向的Android设备(可以是:手机、平板、可穿戴设备、android电视、谷歌眼镜等)和适用版本。如图1-11所示。12图1-11选择APP可适用的Android设备(版本)自AndroidStudio2.0版本后,开发手机和平板的应用时,开发环境会推荐适用API版本,可以通过Helpmechoose链接来查看android各版本的市场占有率,如图1-12所示。13图1-12Android各版本市场占有率选择好API版本后,单击“Next”按钮,打开Android的Activity模板页。选择“EmptyActivity”项(推荐初学者),添加一个Activity页面。如图1-13所示。14图1-13Activity模板选择页点击“Next”按钮,进入设置Activity文件属性页面。可以设置ActivityName和LayoutName名称,并可设置当前文件为APP的启动页。如图1-14所示。我们接受该页的默认设置。15图1-14Activity文件属性设置点击“Finish”按钮后,即正式进入了AndroidStudio的开发环境。如图1-15所示。16图1-15“HelloWorld”项目开发环境AndroidStudio窗口基本框架由上中下三部分构成。 上部有:菜单、常用工具栏、文件路径等3行组成; 中部是项目开发的主要工作区,又分为左右两个部分,左边是项目资源管理窗口,右边是编码设计窗口; 下部显示项目的状态信息及调试面板等。“MainActivity.java”文件1 packageandroidbook.helloworld;2 3 importandroid.support.v7.app.AppCompatActivity;174 importandroid.os.Bundle;5 6 publicclassMainActivityextendsAppCompatActivity{7 /**Calledwhentheactivityisfirstcreated.*/8 @Override9 publicvoidonCreate(BundlesavedInstanceState){10 super.onCreate(savedInstanceState);11 setContentView(R.layout.activity_main);12 }13 }关键代码解析:1) 第1行代码:当前文件所在项目的包名,由项目CompanyDomain和Applicationname构成,详见图1-10中新建文件图示。2) 第3-4行代码:导入开发项目时默认需要的支持库。3) 第6行代码:表示新建名为“MainActivity”的类,继承自“AppCompatActivity”类。4) 第8行代码:表示第9行中的onCreate方法需要根据当前应用进行重写(关于类的封装、继承、多态,构造函数、方法重写等需要请学习者自学面向对象程序设计相关资料)。5) 第9行代码,定义重写onCreate方法。6) 第10行代码,调用父类构造函数。7) 第11行代码,绑定界面布局文件:activity_main。(界面布局文件主要负责与用户交互对象的布局与外观设置,其文件位置位于res>layout中,如图1-16所示。)每一个Activity文件都必须要绑定一个对应的layout文件。18图1-16Activity文件与layout文件19项目二

用户登录界面设计20项目二:用户登录界面设计2.1项目介绍但凡需要记录用户使用状态的APP,都会要求使用者输入帐号和密码登入系统。用户登录虽然重在程序功能的实现,但更需要美观的界面带来愉悦的操作体验。本项目要求学习者模仿图2-1,完成IoT系统的用户登录界面设计。图2-1用户登录界面212.2相关知识Apple的成功,源自他优秀的产品设计和人性化的UI(UserInterface)体验。UI的设计,关系到APP界面是否美观,应用是否让人易于接受,更甚者将直接关乎应用是否易于推广,因此,UI设计是android开发的必备技能之一。受Android设备屏幕大小的限制,其UI界面不需要像网页UI那么复杂。简明的布局,一目了然的操作,是androidUI设计的关键。一个Android应用的界面由View和ViewGroup两类对象构建而成。View是Android中所有可视化控件的基类,主要提供了控件绘制和事件处理的方法,创建用户界面所使用的控件都继承自View类,如TextView、Button等。(控制的具体使用将在本书后面的项目中展开介绍)。ViewGroup也是View的一个子类,但它主要用来充当View的容器,进行界面的布局管理。Android的布局管理器都是以ViewGroup为基类派生出来的,包括有:线性布局(LinearLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)、表格布局(TableLayout)、网格视图(GridView)、框架布局(FrameLayout)等。布局管理器之间的继承关系如图2-2所示。图2-2布局管理器之间的继承关系在上述布局管理器中,最常用的是LinearLayout和RelativeLayout布局。下面分别介绍。222.2.1LinearLayoutLinearLayout(线性布局)从外框上可以理解为一个div。LinearLayout有垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal")两种。当使用垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;使用水平布局时,只有一行,每一个元素依次从左向右排列。如图2-3a和2-3b所示。图2-3aLinearLayout水平布局图2-3bLinearLayout垂直布局从左到右排列从上到下排列线性布局的属性很多,下表2-1列出了线性布局的常用属性。23表2-1线性布局常用属性属性描述android:orientation设置LinearLayout中的元素的排列方向。值选项:horizontal:水平vertical:垂直android:layout_gravity设置LinearLayout相对于父元素的摆放位置值选项:center:居中center_horizontal:水平居中center_vertical:垂直居中left:靠左right:靠右top:靠上bottom:靠下android:gravity设置LinearLayout中所有子元素的摆放位置值选项与layout_gravity相同android:layout_weight设置LinearLayout所在行的行距。水平设置时候代表列宽,垂直设置时代表行宽,weight数值越大间距就越大。android:layout_width设置LinearLayout的宽度。值选项:match_parent:android2.2版本后与fill_parent作用相同,强制性地使当前元素的宽度充满它的父元素wrap_content:仅以元素中的内容完整显示作为当前元素的宽度自定义,例如:300dpandroid:layout_height设置LinearLayout的高度。值选项与layout_width相同,其结果作用于高度。242.2.2RelativeLayoutRelativeLayout(相对布局),顾名思义,在布局元素时,需要指定元素相对于其父元素或兄弟元素的位置,这在实际布局中是最常用的布局方式之一。相对布局属性多,灵活性大,当然操作难度也大,属性之间产生冲突的的可能性大,使用相对布局时要多做测试。表2-2所列为相对布局中元素的重要属性。表2-2相对布局中元素的重要属性属性描述android:layout_below当前元素在某指定元素的下方android:layout_above当前元素在某指定元素的上方android:layout_toLeftOf当前元素在某指定元素的左边android:layout_toRightOf当前元素在某指定元素的右边android:layout_alignTop当前元素的上边缘和某指定元素的上边缘对齐android:layout_alignBottom当前元素的上边缘和某指定元素的下边缘对齐android:layout_alignLeft当前元素的上边缘和某指定元素的左边缘对齐android:layout_alignRight当前元素的上边缘和某指定元素的右边缘对齐上述属性的值必须为指定元素的id引用名,如“@id/id-name”。继承自ViewGroup类的布局管理器有许多属性都是公共的。例如:android:layout_width、android:layout_height等,线性布局和相对布局都需要对布局容器进行宽和高的设置。学习者可利用VisualStudio开发环境的代码提示功能来实践体会,此处不做赘述。252.3项目开发2.3.1任务分析界面的布局方式没有标准答案。作为布局设计入门,我们将兼顾学习和工程要求,综合使用相对布局和线性布局两种方式。用户登录界面布局结构分解如图2-4所示。外层容器RelativeLayout内层容器LinearLayout图2-4登录界面布局分解图262.3.2任务实施

新建LoginActivity.java文件在“app>java”文件夹的程序包目录(新建项目时由CompanyDomain和Applicationname构成,详见项目一)上右击鼠标,选择NewActivityEmptyActivity。如图2-5所示。图2-5新建EmptyActivity菜单27在“NewAndroidActivity”窗口中输入ActivityName:LoginActivity,LayoutName会自动生成为activity_login(也可修改,建议使用默认),勾选LauncherActivity(设置当前Activity为启动文件),Packagename默认继承新建项目时的名称。如图2-6所示。图2-6新建LoginActivity窗口28点击“Finish”按钮,开发环境会自动生成LoginActivity.java类文件和activity_login.xml布局文件。LoginActivity.java类文件自动生成代码如下:1 importandroid.support.v7.app.AppCompatActivity;2 importandroid.os.Bundle;3 4 publicclassLoginActivityextendsAppCompatActivity{5 6 @Override7 publicvoidonCreate(BundlesavedInstanceState){8 super.onCreate(savedInstanceState);9 setContentView(R.layout.activity_login);10 }}关键代码解析:第9行代码:setContentView(R.layout.activity_login);其作用是为当前文档绑定layout资源中的界面布局文件“activity_login.xml”,如图2-7所示。程序启动后将显示“activity_login.xml”文件中所有的view对象。图2-7界面布局文件位置29

在activity_login.xml中布局界面1 <?xmlversion="1.0"encoding="utf-8"?>2 <RelativeLayoutxmlns:android="/apk/res/android"3 xmlns:tools="/tools"4 android:layout_width="match_parent"5 android:layout_height="match_parent"6 android:paddingBottom="@dimen/activity_vertical_margin"7 android:paddingLeft="@dimen/activity_horizontal_margin"8 android:paddingRight="@dimen/activity_horizontal_margin"9 android:paddingTop="@dimen/activity_vertical_margin"10 tools:context=".LoginActivity"11 android:background="@drawable/background_login">12 13 <ImageView14 android:id="@+id/headImg"15 android:layout_width="180sp”16 android:layout_height="180sp”17 android:src="@drawable/headimg"18 android:layout_marginTop="50sp”19 android:layout_centerHorizontal="true"/>20 21 <LinearLayout22 android:id="@+id/loginPanel"23 android:layout_below="@id/headImg"24 android:layout_width="400sp”3025 android:layout_height="300sp”26 android:layout_centerHorizontal="true"27 android:orientation="vertical"28 android:layout_marginTop="50sp”29 android:background="@drawable/background_login_div">30 31 <TextView32 android:id="@+id/textView1"33 android:layout_width="wrap_content"34 android:layout_height="wrap_content"35 android:layout_gravity="center_horizontal"36 android:text="WelcomeToIoTSystem"37 android:layout_marginTop="15sp”38 android:textSize="25sp”/>39 40 <TextView41 android:id="@+id/textView2"42 android:layout_width="wrap_content"43 android:layout_height="wrap_content"44 android:layout_gravity="center_horizontal"45 android:layout_marginTop="10sp”46 android:text="Pleaseloginfirst"/>47 3148 <EditText49 android:id="@+id/accountEt"50 android:layout_width="match_parent"51 android:layout_height="50sp”52 android:layout_marginLeft="50sp”53 android:layout_marginRight="50sp”54 android:layout_marginTop="15sp”55 android:singleLine="true"56 android:background="@drawable/edit_login"57 android:hint="请输入您的用户名"58 android:ems="10">59 60 <requestFocus/>61 </EditText>62 63 <EditText64 android:id="@+id/pwdEt"65 android:layout_width="match_parent"66 android:layout_height="50sp”67 android:layout_marginLeft="50sp”68 android:layout_marginRight="50sp”69 android:layout_marginTop="15sp”70 android:singleLine="true"71 android:password="true"72 android:background="@drawable/edit_login"3273 android:hint="请输入您的密码"74 android:ems="10"/>75 76 <Button77 android:id="@+id/subBtn"78 android:layout_width="150sp”79 android:layout_height="wrap_content"80 android:layout_gravity="center_horizontal"81 android:layout_marginTop="18sp”82 android:text="登陆"83 android:background="@drawable/background_button_div"/>84 </LinearLayout>85 86 </RelativeLayout>关键代码解析:1) 第2-86行代码,为外层RelativeLayout容器。2) 第2-11行、86行代码,对RelativeLayout布局的基本设置。其中包括容器的宽、高、四周内边距(与其子元素的间距)、背景等。3) 第13-19行代码,使用ImageView布局用户头像。4) 第21-84行代码,为内层LinearLayout容器。5) 第21-29行、84行代码,对LinearLayout布局的基本设置。其中包括容器的宽、高、内部元素垂直排列、水平居中、背景等。6) 第23行代码,android:layout_below="@id/headImg"非常关键。外层的相对布局要求其内部元素(包括嵌套的布局容器)必须给出当前元素相对其他元素的位置。去除该行代码将会出现元素重叠的现象,如图2-8所示。33图2-8相对布局未定位时的元素重叠现象7) 第31-83行代码,包括了两段提示文字,一个用户名可编辑文本框,一个密码可编辑文本框和一个登陆按钮。

修改manifests.xml文件配置1 <?xmlversion="1.0"encoding="utf-8"?>2 <manifestxmlns:android="/apk/res/android"3 package="android.book">4 5 <application6 android:allowBackup="true"7 android:icon="@mipmap/ic_launcher"8 android:label="@string/app_name"9 android:supportsRtl="true"3410 android:theme="@style/AppTheme">11 12 <activityandroid:name=".MainActivity">13 </activity>14 15 <activityandroid:name=".LoginActivity"16 android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">17 <intent-filter>18 <actionandroid:name="ent.action.MAIN"/>19 20 <categoryandroid:name="ent.category.LAUNCHER"/>21 </intent-filter>22 </activity>23 </application>24 25 </manifest>关键代码解析:10) 第16行代码,为“LoginActivity”文件设置样式,选用了黑色系、无标题栏的默认样式(AndroidStudio2.0以上提供)。11) 第17-21行代码,过滤配置出“LoginActivity”为APP启动首页文件。35

其它元素局部样式文件在本项目中,考虑到界面的美观度,对界面中的背景、文本框、按钮等元素进行了样式设置,相关文件均存放在drawable文件夹中,如图2-9所示。图2-9界面元素样式文件列表1. 界面背景样式:background_login.xml1 <?xmlversion="1.0"encoding="utf-8"?><shapexmlns:android="/apk/res/android">2 3 <gradient4 android:angle="45"5 android:startColor="#FFACDAE5"6 android:endColor="#FF72CAE1"/>7 8 </shape>36关键代码解析:第3-6行代码,设置整个界面背景为从左下到右上(45度),线性渐变。2. 登录信息输入区域样式:background_login_div.xml1 <?xmlversion="1.0"encoding="UTF-8"?>2 <shapexmlns:android="/apk/res/android">3 4 <solidandroid:color="#55FFFFFF"/>5 <!--设置圆角6 注意:bottomRightRadius是左下角而不是右下角bottomLeftRadius右下角7 -->8 <corners9 android:bottomLeftRadius="10sp”10 android:bottomRightRadius="10sp”11 android:topLeftRadius="10sp”12 android:topRightRadius="10sp”/>13 14 </shape>关键代码解析:第4-12行代码,设置矩形区域的背景色,以及四个圆角的边框半径值。3. 文本框样式:edit_login.xml1 <?xmlversion="1.0"encoding="UTF-8"?>2 <selectorxmlns:android="/apk/res/android">3 <itemandroid:state_enabled="false"android:drawable="@drawable/login_input"/>4 <itemandroid:state_pressed="true"android:drawable="@drawable/login_input"/>5 <itemandroid:state_focused="true"android:drawable="@drawable/input_over"/>376 </selector>关键代码解析:第3-5行代码,文本框背景、前景形状。图像映射成9.png可拉伸效果,具体制作方法请查阅相关资料。4. 登录按钮样式:background_button_div.xml1 <?xmlversion="1.0"encoding="UTF-8"?>2 <shapexmlns:android="/apk/res/android">3 4 <solidandroid:color="#FF72CAE1"/>5 <!--设置圆角6 注意:bottomRightRadius是左下角而不是右下角bottomLeftRadius右下角7 -->8 <corners9 android:bottomLeftRadius="10sp”10 android:bottomRightRadius="10sp”11 android:topLeftRadius="10sp”12 android:topRightRadius="10sp”/>13 14 </shape>关键代码解析:第4-12行代码,设置按钮区域的背景色,以及四个圆角的半径值。38项目三

简易相册设计39项目三:简易相册设计3.1项目介绍一个APP中,除了文字之外,使用最多的媒体资源就是图片了。图片可以用作按钮上的图标,来增加界面设计的美观度。也可以以相册的形式供人们翻阅浏览。前者对象的本质是按钮,后者则是图像视图本身。本项目要求学习者模仿图3-1,制作一个使用“上一页”和“下一页”按钮翻阅图像的简易相册。图3-1简易相册403.2相关知识Android中设计相册的应用,最基本的界面元素需要用到图像视图(ViewImage)和按钮(Button),此外,为了让浏览者知道当前是第几张图像,还使用了信息提示块――“吐司”(Toast)方法。3.2.1ImageViewImageView(图像视图),直接继承自View类,它的主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示。ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作。ImageView的常用属性如表3-1所示。表3-1ImageView常用属性属性描述android:src设置ImageView所显示的Drawable对象的IDandroid:adjustViewBounds设置ImageView是否调整自己的边界来保持所显示图片的长宽比android:maxHeight设置ImageView的最大高度android:maxWidth设置ImageView的最大宽度android:scaleType设置所显示的图片如何缩放或移动以适应ImageView的大小值选项:matrix:使用matrix方式进行缩放。fitXY:横向、纵向独立缩放,以适应该ImageView。fitStart:保持纵横比缩放图片,并且将图片放在ImageView的左上角。fitCenter:保持纵横比缩放图片,缩放完成后将图片放在ImageView的中央。fitEnd:保持纵横比缩放图片,缩放完成后将图片放在ImageView的右下角。center:把图片放在ImageView的中央,但是不进行任何缩放。centerCrop:保持纵横比缩放图片,以使图片能完全覆盖ImageView。centerInside:保持纵横比缩放图片,以使得ImageView能完全显示该图片。413.2.2ButtonButton(按钮)是任何一种面向对象程序设计中最常用的控件之一。Button的主要作用就是提供用户进行点击、触摸等操作,并同时触发相应的事件。事件的使用方式大同小异,只是触发的时机不同而已。处理上述两个按钮事件,需要分别实现View.OnClickListener、View.OnTouchListener接口的方法,如表3-2所示。表3-2Button主要事件事件接口描述View.OnClickListener需要实现onClick(Viewv)方法,其中v为当前触发事件的控件。View.OnTouchListener需要实现onTouch(Viewv,MotionEventevent),其中v为当前触发事件的控件,event包括了触摸时的具体内容,如移动、按下等。Android中的Button继承自TextView,其属性与TextView类似,常用属性如表3-3所示。事件接口描述android:id设置Button的ID值android:layout_width设置Button的宽度值选项:match_parent:与fill_parent作用相同,强制性地使当前元素的宽度充满它的父元素wrap_content:仅以元素中的内容完整显示作为当前元素的宽度自定义,例如:40dpandroid:layout_height设置Button的高度。值选项与layout_width相同,其结果作用于高度。android:text设置用来显示在Button上的文字信息android:background设置Button的背景图:用图像替换Button的默认样式。423.2.3ToastToast(简单信息提示块--“吐司”),可以在当前视图显示一个浮动的信息提示块,它永远不会获得焦点,仅仅用于提示信息,并且不影响任何其他操作,在一段时间后会自动消失,不需要用户对它做任何操作。如果只是提示简单的信息,使用Android为Toast提供的两个静态的方法最为方便,它们会返回一个Toast对象,如果需要显示,只需要调用show()方法显示即可,下面是这两个方法的签名:staticToastmakeText(Contextcontext,intresId,intduration);staticToastmakeText(Contextcontext,CharSequencetext,intduration);上面两个方法,参数大致相同,一个上下文对象Context,一个显示的消息来源,一个设置持续时间。消息来源可以指定String资源,使用<string.../>标签在XML资源文件中定义,还可以指定一个字符串用于消息展示。最后的duration参数设置了Toast的持续时间,一般使用Toast自带的两个整形的常量:LENGTH_LONG(1,时间稍长)、LENGTH_SHORT(0,时间稍短),针对不同的使用场景,选择不用的持续时间。3.3项目开发3.3.1任务分析为直观的实现多个图像的浏览,本项目共使用了3种界面元素:图像视图、按钮和信息提示块。其中图像视图主要用来显示相册中的图像;按钮有2个,分别控制浏览上一张和下一张图像,考虑到美观度,按钮使用了图片做背景,替代了单一的文字提示。信息提示块用来告知用户当前浏览到第几张图片。简易相册界面元素结构分解如图3-2所示。43按钮图像视图信息提示块(吐司)图3-2简易相册界面元素分解图3.3.2任务实施准备图像资源首先需要将制作成相册的图像文件拷贝至资源目录中的drawable文件夹里,如图3-3所示。其中dog1.jpg~dog5.jpg是相册图像,next.jpg和previous.jpg是按钮背景图。44图3-3图片资源文件位置创建AlbumActivity.java文件1 importandroid.support.v7.app.AppCompatActivity;2 importandroid.os.Bundle;3 importandroid.view.View;4 importandroid.widget.Button;5 importandroid.widget.ImageView;6 importandroid.widget.Toast;7 8 publicclassAlbumActivityextendsAppCompatActivity{9 privateButtonbtnNext;4510 privateButtonbtnPrevious;11 privateImageViewivPhoto;12 inti=0;13 int[]PhotoIDs=newint[]{14 R.drawable.dog1,R.drawable.dog2,R.drawable.dog3,R.drawable.dog4,R.drawable.dog515 };16 17 @Override18 protectedvoidonCreate(BundlesavedInstanceState){19 super.onCreate(savedInstanceState);20 setContentView(R.layout.activity_album);21 initComponent();22 }23 24 privatevoidinitComponent(){25 ivPhoto=(ImageView)findViewById(R.id.ivPhoto);26 btnPrevious=(Button)findViewById(R.id.btnPrevious);27 //绑定侦听“上一页”单击事件28 btnPrevious.setOnClickListener(newView.OnClickListener(){29 @Override//“上一页”单击事件的实现31 publicvoidonClick(Viewarg0){32 i--;33 if(i<0){34 i=PhotoIDs.length-1;4635 }36 Toasttoast=Toast.makeText(AlbumActivity.this,"第"+(i+1)+"张",Toast.LENGTH_SHORT);37 toast.show();38 ivPhoto.setImageResource(PhotoIDs[i]);39 }40 });41 42 btnNext=(Button)findViewById(R.id.btnNext);43 //绑定侦听“下一页”单击事件44 btnNext.setOnClickListener(newView.OnClickListener(){45 @Override46 //“下一页”单击事件的实现47 publicvoidonClick(Viewarg0){48 i++;49 if(i>=PhotoIDs.length){50 i=0;51 }52 Toasttoast=Toast.makeText(AlbumActivity.this,"第"+(i+1)+张",Toast.LENGTH_SHORT);53 toast.show();54 ivPhoto.setImageResource(PhotoIDs[i]);55 }56 });57 }58 }47关键代码解析:1) 第9-15行代码,声明2个按钮变量,1个图像视图变量,1个全局计数变量和1个存放图像资源的数组变量。2) 第20行代码,为当前AlbumActivity.java文档绑定layout资源中的界面布局文件“activity_album.xml”。3) 第21行代码,调用初始化界面元素的函数。4) 第24-55行代码,定义初始化界面元素函数。5) 第25,26,42行代码,分别为查找布局文件中定义的1个ImageView和2个Button对象,与9-11行定义的变量关联并实例化。6) 第27-40行代码,绑定并实现“上一页”的单击侦听事件。事件处理的逻辑流程如图3-4所示。7) 第43-56行代码,绑定并实现“下一页”的单击侦听事件。事件处理的逻辑流程如图3-5所示。图3-4“上一页”程序流程图图3-5“下一页”程序流程图48

在activity_album.xml中布局界面1 <?xmlversion="1.0"encoding="utf-8"?>2 <RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"3 android:layout_width="match_parent"4 android:layout_height="match_parent"5 android:paddingBottom="@dimen/activity_vertical_margin"6 android:paddingLeft="@dimen/activity_horizontal_margin"7 android:paddingRight="@dimen/activity_horizontal_margin"8 android:paddingTop="@dimen/activity_vertical_margin"9 tools:context="ject03.AlbumActivity">10 11 <Button12 android:id="@+id/btnPrevious"13 android:layout_width="wrap_content"14 android:layout_height="wrap_content"15 android:background="@drawable/previous"/>16 17 <Button18 android:id="@+id/btnNext"19 android:layout_width="wrap_content"20 android:layout_height="wrap_content"21 android:layout_alignParentRight="true"22 android:background="@drawable/next"/>23 4924 <ImageView25 android:id="@+id/ivPhoto"26 android:layout_width="wrap_content"27 android:layout_height="450sp"28 android:layout_below="@id/btnPrevious"29 android:layout_centerHorizontal="true"30 android:src="@drawable/dog1"/>31 32 </RelativeLayout>关键代码解析:1) 第2-9行代码,相对布局及其属性设置。2) 第11-15行代码,“上一页”按钮及其属性设置。其中第15行的背景图像设置把按钮的默认样式替换成了图像内容。3) 第17-22行代码,“下一页”按钮及其属性设置。其中第22行代码作用与第15行相同。4) 第24-30行代码,相册中的图像视图。其中第29行设置图像视图为居中显示,第30行设置默认显示第1张图像。5) 第28行代码,相对布局时,设置图像元素位于“下一页”按钮的下面。

修改manifests.xml文件配置1 <?xmlversion="1.0"encoding="utf-8"?>2 <manifestxmlns:android="/apk/res/android"3 package="android.book">4 5 <application6 android:allowBackup="true"7 android:icon="@mipmap/ic_launcher"8 android:label="@string/app_name"509 android:supportsRtl="true"10 android:theme="@style/AppTheme">11 12 <activityandroid:name=".MainActivity">13 </activity>14 15 <activityandroid:name=".AlbumActivity"16 android:theme="@style/Theme.AppCompat.DayNight">17 <intent-filter>18 <actionandroid:name="ent.action.MAIN"/>19 20 <categoryandroid:name="ent.category.LAUNCHER"/>21 </intent-filter>22 </activity>23 </application>24 25 </manifest>关键代码解析:1) 第16行代码,为“AlbumActivity”文件设置样式,选用了黑色系默认样式。2) 第17-21行代码,过滤配置出“AlbumActivity”为APP启动首页文件。51项目四

安卓考试52项目四:安卓考试4.1项目介绍

用手机进行考试是比较方便的事情。本项目开发能在Android系统中进行考试的APP,包括填空题、单选题、多选题。4.2相关知识4.2.1RadioGroup(单选按钮组)和RadioButton(单选按钮)RadioGroup是RadioButton的容器。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。每个RadioGroup中的RadioButton同时只能有一个被选中。表4-1RadioButton属性属性描述android:checked控件是否选中android:button设置一张图片来作为显示android:buttonTint渲染颜色android:buttonTintMode渲染模式53表4-2RadioButton重要的方法表

4-3RadioGroup属性方法描述isChecked()控件是否选中voidsetChecked(booleanchecked)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论