




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
“我的日记”的设计与实现任务四重难点04030201Android的数据存储SharedPreferencesActivity的生命周期
Activity之间的跳转ProgressBar与线程知识目标掌握Android的ProgressBar组件的属性设定、使用方法;掌握Android的CheckBox组件的属性设定、使用方法;掌握Android中线程的使用方法;掌握Activity的生命周期、各状态的转化关系与对应的回调函数;掌握Intent的作用、重要属性、常见方法;理解SharedPreferences数据存储的使用场合、使用方法;能力目标能够利用Handler与ProgressBar组件相结合演示进度;能够利用Intent的属性与方法实现Activity的跳转;能够利用SharedPreferences实现简单的数据存储。项目流程任务简介任务分析支撑知识任务实施任务小结扩展训练任务简介任务分析支撑知识任务实施任务小结扩展训练本次任务“我的日记”中有两个界面:登录界面与“写入日记”界面。在登录界面中,需要用户输入正确的用户名与密码,同时用户可以选择“记住密码”复选框,在单击“登录”按钮之后,显示大约5s的进度条继而跳转至“写入日记”界面。在“写入日记”界面中,用户可以在之前所写日记的基础上,写入此次日记信息。日记文件将保存在手机的内部存储中,如果用户单击两次【返回】键,即可退出“我的日记”应用程序。任务简介任务分析支撑知识任务实施任务小结扩展训练任务简介任务分析支撑知识任务实施任务小结扩展训练进行程序演示,请同学们观察该应用实现了哪些功能?该应用含有哪些控件,需要哪些支撑知识?任务简介任务分析支撑知识任务实施任务小结扩展训练TextViewEditTextCheckBoxButtonProgressBarEditTextButton任务简介任务分析支撑知识任务实施任务小结扩展训练注意点:运用了ProgressBar、CheckBox等新控件;使用了线程、Activity跳转、SharedPreferences数据存储等知识点。项目流程任务简介任务分析支撑知识任务实施任务小结扩展训练任务简介任务分析支撑知识任务实施任务小结扩展训练ProgressBar控件11.1简介ProgressBar为进度条控件,通常是在用户等待耗时任务执行结果的情况下,作为一个反馈机制,来告知用户目前任务的执行进度,避免用户误以为程序没有响应,从而提高程序的用户体验。ProgressBar控件1.2重要属性属性style作用设置ProgressBar进度条的风格
说明style="?android:attr/progressBarStyleHorizontal"
:进度条为水平进度条style="?android:attr/progressBarStyleLarge"
:进度条为大环形进度条;style="?android:attr/progressBarStyleSmall":进度条为小环形进度条;属性android:progress作用设置进度条的进度值,取值必须为介于0和最大值之间的整数说明android:progress="0"属性android:max作用设置进度条进度值的最大值。说明android:progress=“100"1.2重要方法方法publicintgetProgress()作用获得当前进度条的进度值。示例intprogress=progressBar.getProgress();方法publicvoidsetProgress(intprogress)作用设定进度条的当前进度
示例progressBar.setProgress(0);方法publicvoidsetMax(intmax)作用设定进度条进度的最大值示例progressBar.setMax(200);1.3示例演示演示ProgressBar的使用,具体如下:演示如何创建ProgressBar控件;演示如何利用ProgressBar控件的属性与方法;放置一个水平的ProgressBar(max:10,progress:0)和一个Button;每次点击Button,ProgressBar的进度progress都增加1。任务简介任务分析支撑知识任务实施任务小结扩展训练线程Thread22.1简介所有界面组件相关的操作,实际上都由主UI线程(主用户界面线程)在负责运行。但有时候程序会执行一些耗时的操作,一般的解决方案是将耗时的操作交给另外一个子线程来执行,从而保证主UI线程的顺畅。线程2.1简介子线程Thread负责耗时的操作主UI线程负责与用户操作交互Handler发送消息Handler接收消息,更新UIMessageHandler发送消息MessageHandler接收消息,更新UIHandler发送消息MessageHandler接收消息,更新UI2.2重要方法方法Thread类:publicThread(Runnablerunnable)作用Thread类的构造方法,用于创建子线程对象。说明Threadt=newThread(newRunnable(){
publicvoidrun(){…}}方法Thread类:publicvoidstart()作用运行线程说明thread.start();方法Thread类:publicstaticvoidsleep(longtime)作用让线程休眠说明thread.sleep(1000);2.2重要方法方法Handler类:publicbooleansendMessage(Messagemsg)作用发送消息说明handler.sendMessage(newMessage());方法Handler类:publicbooleansendEmptyMessage(intwhat)作用发送一条仅包含消息编号的空消息。如果需要一条只有编号,不包含任何其它数据的空消息,可以调用此方法。说明handler.sendEmptyMessage(1);方法Handler类:publicvoidhandleMessage(Messagemsg)作用处理消息,该方法在Handler对象收到消息时被回调。说明msg为接收到的消息对象,通过判断msg.what可以区分不同的消息类型。2.3示例演示演示线程的使用,具体如下:布局中从上到下依次放置一个水平的进度条、一个环形的进度条和一个TextView控件。水平滚动条每1s前进一格,即让子线程每休眠1s后更新水平进度条的进度。当进度条的进度达到最大值100%时,TextView显示“页面加载完毕!”,两个进度条消失。任务简介任务分析支撑知识任务实施任务小结扩展训练Activity间的跳转33.1简介Intent是两个Activity之间进行跳转的媒介。Android中,当一个Activity需要跳转到另外一个Activity时,就需要用到Intent了。Intent中文为“意图”,意味着Android程序在进行页面跳转时,只需告知系统它的“意图”:需要启动哪一个Activity。Intent简介3.2重要属性-ActionAction常量对应的字符串含义说明ACTION_VIEWent.action.VIEW向用户显示数据ACTION_EDITent.action.EDIT向用户提供编辑某个数据的途径ACTION_DIALent.action.DIAL向用户显示一个电话拨号面板界面ACTION_MAINent.action.MAIN标志着该Activity是某个Application应用程序的入口点ACTION_ATTACH_DATAent.action.ATTACH_DATA指明附加信息给其他地方的一些数据ACTION_CALLent.action.CALL向用户直接显示打电话的界面3.2重要属性-CategoryCategory常量对应的字符串含义说明CATEGORY_DEFAULTent.category.DEFAULTAndroid系统中默认的分类CATEGORY_HOMEent.category.HOME设置该Activity为HomeActivityCATEGORY_PREFERENCEent.category.PREFERENCE设置该Activity为参数面板CATEGORY_LAUNCHERent.category.LAUNCHER设置该Activity为在当前应用程序启动器中优先级最高的Activity,通常与ACTION_MAIN配合使用CATEGORY_BROWSABLEent.category.BROWSABLE设置该Activity能被浏览器启动CATEGORY_DEFAULTent.category.DEFAULTAndroid系统中默认的分类CATEGORY_HOMEent.category.HOME设置该Activity为HomeActivity3.2重要属性-DataData属性是用来向Action属性提供可操作的数据的
采用Uri对象的格式,即scheme://host:port/path。content://contacts/people/1ACTION_VIEWcontent://contacts/people/1:显示id为1的联系人信息;ACTION_DIALcontent://contacts/people/1:将id为1的联系人电话号码显示在拨号界面中;ACITON_VIEWtel:123:显示电话为123的联系人信息;ACTION_VIEWhttp://:在浏览器中浏览谷歌网站。3.2重要属性-TypeType属性用于明确地指明Intent数据的具体类型(MIME类型)。尽管Intent的数据类型通常都能从数据本身进行推断,但是通过设置这个Type属性,可以强制采用显式指定的类型。3.2重要属性-Component指定了Component属性以后,Intent的其他所有属性都是可选的。这种方式的优点在于无需查找,直接调用目标组件,速度快捷。3.2重要属性-Extras
Extras属性的值是一个Bundle对象。Bundle类与Map类很相似,它可以放入多对key-value键值,这样在通过Intent对象进行Activity跳转时,就能够进行数据的传递了。3.3重要方法方法Intent类:publicIntentsetAction(Stringaction)作用设置Action属性说明Intentintent=newIntent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
方法Intent类:publicIntentsetData(Stringdata)作用设置Data属性说明intent.setData(Uri.parse(""));方法Intent类:publicIntentsetType(Stringtype)作用设置Type属性说明intent.setType(vnd.android.cursor.dir/contact);
3.3重要方法方法Intent类:publicIntentputExtras(Bundlebundle)作用设置Extra属性说明Bundlebundle=newBundle();bundle.putString(“KEY_HEIGHT”,”180”);bundle.putString(“KEY_WEIGHT”,”80”);intent.setExtra(bundle);
方法Intent类:publicIntentsetClass
(Context
packageContext,
Class<?>cls)作用明确intent跳转时的源Activity和目标Activity
说明Intentintent=newIntent();
intent.setClass(context,targetActivity.class);3.3重要方法方法Intent类:publicIntentsetClassName(ContextpackageContext,
StringclassName)作用明确intent跳转时的源Activity和目标Activity
说明intent.setClassName(MainActivity.this,"ent.SecondActivity");方法Context类:voidstartActivity(Intentintent)作用根据intent启动某个Activity
说明Intentintent=newIntent();
intent.setClass(context,targetActivity.class);startActivity(intent);3.4示例演示演示Activity的跳转,具体如下:列举一些常见的Activity跳转案例,比如返回桌面、浏览网址、发送短信、拨打电话等;演示Intent的使用方法;演示新建Activity的流程。任务简介任务分析支撑知识任务实施任务小结扩展训练Activity生命周期44.1简介活动状态:处于Activity栈的栈顶,用户启动应用程序或Activity之后,该Activity位于屏幕前台,用户可见,能获得焦点(即用户可以操作它)。同一时刻只会有一个Activity处于活动状态;暂停状态:该Activity位于前台,但是被另外一个处于“活动”状态的Activity(比如对话框风格的Activity)遮挡住一部分,没有焦点,用户不能直接对其进行输入操作,但界面依旧可见,该Activity的状态处于“暂停”状态。停止状态:该Activity被其他Activity完全挡住,不再可见,也失去了焦点;销毁状态:该Activity被终止。Activity生命周期状态4.2生命周期回调函数启动ActivityActivity停止状态Activity销毁状态Activity暂停状态Activity运行状态onCreate()onStart()onPause()onResume()onStop()onDestroy()onRestart()另一个Activity来到前台该Activity重返前台该Activity不可见该Activity重返前台4.3示例方法演示Activity生命周期回调方法的调用时机,具体如下:重写Activity的生命周期函数,利用log输出日志信息。观察输出的日志信息,准确理解生命周期回调方法的调用时机与先后顺序。任务简介任务分析支撑知识任务实施任务小结扩展训练CheckBox控件55.1简介
CheckBox控件用来实现复选功能,也就是一次可以选中多个选项,比如在选择爱好时我们可以使用CheckBox。这个类继承了Button类,因此可以直接使用Button类支持的各种属性和方法。CheckBox控件5.2重要属性属性android:checked作用用于指定CheckBox的初始选中状态说明android:checked=“true”属性android:text作用设置复选框的标题说明android:text=“打篮球”5.3重要方法方法publicbooleanisChecked()作用判断复选框的选中状态。。说明返回值:布尔类型,true表示状态为选中,false表示状态为未选中。5.4重要监听器方法publicvoidsetOnCheckedChangeListener(CompoundButton.OnCheckedChangeListenerl)作用为复选框设置状态改变监听器说明参数说明:监听器是一个实现了CompoundButton.OnCheckedChangeListener接口的类的对象。方法publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked)作用当复选框状态改变时触发说明参数说明:buttonView是状态发生改变的CheckBox,isChecked为true,表示状态变为选中状态,否则表示状态变为未选中5.5示例演示演示CheckBox控件的使用,具体如下:在界面上放置一个CheckBox控件和一个Button按钮;点击按钮能够Toast提示CheckBox当前的选中状态;当用户改变CheckBox的状态时,用Toast加以提示。任务简介任务分析支撑知识任务实施任务小结扩展训练SharedPreferences66.1简介
SharedPreferencesSharedPreferences为我们提供方便的、轻量级的数据存储;通常是用作应用程序中的参数配置或是一些属性的存储设置。例如我们可以通过它来保存用户上一次保存的信息或所做的修改,下一次应用程序启动后,就会为用户加载上一次保存的信息,可以减少用户重复设置、输入等麻烦,方便应用。SharedPreferences所存储的数据是以“键-值”的格式保存在xml文件中。该xml文件将存在于工程中的/data/data/包名/shared_prefs目录下。6.2重要方法方法Context类:publicabstractSharedPreferencesgetSharedPreferences(String
name,intmode)作用获得xml文件对象的引用说明name为xml文件名;mode为读写模式,取值如下:Context.MODE_PRIVATE:只能被本应用程序访问;Context.MODE_WORLD_READABLE:其他应用可读Context.MODE_WORLD_WRITEABLE:其他应用可写方法SharedPreferences类:publicXXXgetXXX(String
key,XXXdefValue)作用获得SharedPreferences中指定“键”所对应的“值”说明Key为键名,defValue为文件中没有这样的key时返回的默认值。6.2重要方法方法SharedPreferences类:publicEditoredit()作用获得SharedPreferences所对应的Editor编辑器对象。说明返回值为Editor编辑器对象方法Editor类:publicEditorputXXX(Stringkey,XXXvalue)作用向SharedPreferences中写入“键”所对应的“值”。说明key为键名,value为键对应的值。6.2重要方法方法Editor类:publicEditorremove(Stringkey)作用在SharedPreferences中删除“键”key所对应的“值”
。说明key为键名方法Editor类:publicEditorclear()作用向SharedPreferences中清空所有的“键-值”对。说明方法Editor类:publicbooleancommit()作用提交Editor编辑器中所修改的内容。说明6.3读和写
写信息打开文件getSharedPreferences()获取编辑器Editoredit()使用Editor存入各种信息putXXX结束提交commit读信息打开文件getSharedPreferences读取信息getXXX结束6.3示例演示演示如何利用SharedPreferences保存登录界面中的密码,图示如下:D登录6.3示例演示SharedPreferences中需要保存的数据如下:Key类型含义REMBERPWDBooleanTrue为记住密码,False为不需要记住密码USERNAMEString用户名PWDString密码6.3示例演示SharedPreferences中需要保存的数据如下:点击【登录】按钮,判断是否勾选了【记住密码】:勾选:设定REMBERPWD的值为True,并设定USERNAME和PWD的值未勾选:设定REMBERPWD的值为False,并清除USERNAME和PWDonCreate方法,读取REMBERPWD的值,判断该值:True:读取USERNAME和PWD,并显示到EditText中,勾选了【记住密码】False:啥都不干任务简介任务分析支撑知识任务实施任务小结扩展训练文件存储77.1简介
由于SharedPreferences可以快速的实现数据存储Android文件存储与Java文件存储类似,不进行详细介绍。项目流程任务简介任务分析支撑知识任务实施任务小结扩展训练任务简介任务分析支撑知识任务实施任务小结扩展训练总体分析1
1.1任务分析
该应用主要有两个界面,如下图所示:TextViewEditTextCheckBoxButtonProgressBarEditTextButton1.2处理流程
程序启动,载入“登录”界面输入用户名/密码单击“登录”按钮从手机内存中读取“MyDiary.txt”文件,将内容显示跳至“写入日记”界面从SharedPreferences读取密码密码保存至SharedPreferences修改内容,单击“保存”按钮程序退出记住密码?记住密码?N用户名/密码正确?单击【返回】两次?YYYYNNN任务简介任务分析支撑知识任务实施任务小结扩展训练界面布局2 2.1创建项目
演示创建项目:创建一个Android应用程序项目,取名为MyDiary;将默认的Activity名称MainActivity.java重命名为LoginActivity.java,其对应的XML布局文件为res\layout\activity_login.xml;新建一个Activity名称为DiaryActivity.java,其对应的XML布局文件为res\layout\activity_diary.xml2.2创建字符串资源
演示创建字符串资源,在res/values/strings.xml中添加字符串资源:
<stringname="hint_username">用户名</string>
<stringname="hint_pwd">密码</string>
<stringname="remember_pwd">记住密码</string>
<stringname="btn_login">登录</string>
<stringname="btn_save">保存</string>
<stringname="view_mydiary">我的日记</string>
<stringname="hint_mydiary">请在这儿写下你的心情日记</string>2.3创建组件样式
演示如何创建<shape>资源:<?xmlversion="1.0"encoding="utf-8"?><shapexmlns:android="/apk/res/android"><!--黑色边框,宽度为2dp--><strokeandroid:width="2dp"android:color="#000"/><!--背景色为黄金色--><solidandroid:color="#fbe6c9"/></shape>2.4登录界面布局
登录界面布局如右图所示,可以使用约束布局实现。放置组件后,按教材设置相关的属性。ConstraintLayout“我的日记”Textview用户名/密码EditText记住密码CheckBox登录Button进度条ProgressBar2.5“写入日记”界面布局
“写入日记”界面布局如右图所示,整体布局可以使用约束布局实现。放置控件,然后按教材设置相关的属性即可。利用<shape>资源设置“写日记”的EditText控件的边框与背景色。ConstraintLayout“写日记”的EditText“保存”按钮任务简介任务分析支撑知识任务实施任务小结扩展训练功能实施-登陆界面3
3.1登录界面功能实现-成员变量
在LoginActivity.java类中申明成员变量,包括控件相关的对象、处理消息的Handler对象。EditTextusernameEdit;//用户名输入框EditTextpwdEdit;//密码输入框CheckBoxrememberPwdCheck;//记住密码的复选框ButtonloginBtn;//登录按钮ProgressBarprogressBar;//进度条Handlerhandler;//线程的手柄staticfinalintSTOP=0x111;//进度完成的标志3.2登录界面功能实现-程序框架
在onCreate方法中依次调用了initViews()、initHandler()、setListeners()方法。protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); /*初始化控件变量*/ initViews(); /*设定组件的监听器*/
setListeners(); /*初始化线程的句柄*/ initHandler();}3.3onCreate初始化
开始initViews获取组件结束setListeners设定监听器initHandler初始化句柄各种findViewById从SharedPreferences中读取以下配置数据记住密码从SharedPreferences中读取用户名和密码配置数据:是否记住密码?NY结束开始输入框显示用户名和密码勾选CheckBox3.4点击登录按钮N开始判断用户名和密码是否均为”admin”Toast提示用户名和密码错误Y判断是否要记住密码存储SharedPreference记住密码:true用户名:输入框的内容密码:输入框的内容存储SharedPreference记住密码:false用户名:””密码:””Y结束N输入框和按钮禁用显示进度条开启子线程3.4点击登录按钮子线程Thread负责耗时的操作主UI线程负责与用户操作交互Sleep5000msHandler发送消息MessageHandler接收消息跳转到日记界面Finish登录界面任务简介任务分析支撑知识任务实施任务小结扩展训练功能实施-写入日记4 4.1“写入日记”界面与功能实现-成员变量
在DiaryActivit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45346-2025信息技术图数据库管理系统技术要求
- 幼儿园体育运动安全知识
- 华东师范大学《合唱与指挥Ⅳ》2023-2024学年第一学期期末试卷
- 天津医科大学临床医学院《ED照明基础理论与实践》2023-2024学年第二学期期末试卷
- 教师层面诊断
- 心脏介入治疗围手术期护理
- 2025《房地产制度法规政策》房地产估价师考前冲刺必会300题-含详解
- 电工电子技术 课件 21.铁心线圈电路-30.直流电动机的结构和工作原理
- 公司环保监管培训
- 幼儿园获奖公开课:小班安全《宝宝过家家》课件
- 周三多管理学精华重点
- GB/T 41097-2021非公路用旅游观光车辆使用管理
- 常见急救知识培训课件
- 分离工程试习题库-叶庆国
- 《了凡四训》课件
- Aspen-中文培训资料课件
- 全国环境监测站建设标准
- CAS2000V整合型变电站自动化系统市场推广
- 水稳基层振动成型法科研路段施工技术
- 陕西省社区社会组织负责人备案表
- 汇编语言模拟电梯实验报告书
评论
0/150
提交评论