Android开发基础个人日记本开发.doc

上传人:滴答 文档编号:1272182 上传时间:2019-01-25 格式:DOC 页数:12 大小:325KB
下载 相关 举报
Android开发基础个人日记本开发.doc_第1页
第1页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 滨州学院 Android 开发基础 题目 : 个人日记本开发 系 院 计算机科学技术系 专 业 软件技术 班 级 学 号 姓 名 2013 年 6 月 30 日 滨州学院成绩评定表 题目 个人日记本开发 ? 关键技术 开发过程中使用到的 技术: 1. 利用 SQLite 存储数据 主要体现类: DbHelper 类继承自 SQLiteOpenHelper 类,重写其构造方法、onCreate()和 onUpdate()方法 ;Diary 类相关联数据库中的数据属性及方法,以及构造方法 ;DiaryDao 类中写出了查询数据的一些方法,如查找,总计,更新,保存等 . 2. Android UI

2、 布局技术 主要运用 控件 : RadioGroup、 ListView、 EditText、 Button、 TextView、 ProgressBar、 gallery、 ImageButton 3. 利用 Application 帮助实现完全退出 主 要体现类: MyHelpExit 继承自 Application,实现创建, 往列表中 添加 Activity以及 完全退出逐个将列表中的 Activity s 实现 finish()功能 。 4. Intent 页面跳转技术 Intent intent = new Intent(startActivity.this, endActivit

3、y.class);利用 Intent 进行页面的跳转,需要传参数时则增添 Bundle。 5.项目闪屏效果 运用 AlphaAnimation 类, 设置闪屏的透明图渐变程度 ,设定播放的时间 ,以及通过注册事件监听控制当动画播放完毕自动跳转到 列表 主界 ,达到闪屏效果。 6.利用 AlertDialog、 gallery 和 ImageButton 以画廊的形式进行心情图片选择。 设计思路 项目背景: 基于手机通讯的普及以及人们对日记的需求,利用 Android 设计一款简单实用的日记薄方便人们的实用 。 设计思路: 首先通过闪屏界面进入日记的列表界面,如果之前存在日记则以列表的显示 ,否

4、则以 TextView 提示。利用 Menu 提供四个功能:写新日记、查找日记、日记总计、退出。点击相应的列表内容则进行更新 ,常按某项列表内容则提示删除功能。 核心代码如下: 1)闪屏效果的实现。在 WelcomActivity.java 中利用 AlphaAnimation 实现,设置渐变透明度、播放时间以及 通过注册事件监听控制当动画播放完毕自动跳转到列表主界 。 AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); alphaAnimation.setDuration(5000); imageView.start

5、Animation(alphaAnimation); alphaAnimation.setAnimationListener(); 装 订 线 设计思路 2)以列表的形式展示日记内容 。通过数据库查找日记,利用适配器对列表进行绑定,并对单击列表内容项进行监听。 当一篇日记也没有写的时候,进行提示。 TextView textEmpty_show=(TextView)this.findViewById (R.id.myAndroidEmpty); listView.setEmptyView(textEmpty_show); 通过数据库查找数据,存入 data 中 : diaryDao=new D

6、iaryDao(this); List diaries=diaryDao.getAllDiaries(); data=new ArrayList(); for(Diary diary:diaries) Map map=new HashMap(); map.put(“title“, diary.getTitle(); map.put(“createtime“, diary.getDatetime(); data.add(map); 利用适配器对 ListView 迚行绑定: SimpleAdapter adapter=new SimpleAdapter(this,data,R.layout.it

7、em, new String“title“,“createtime“,new intR.id.title,R.id.createtime); listView.setAdapter(adapter); 对列表内容单击注册监听事件,根据列表的 postiton 和 data 下标值相同 ,从而查找出相应列表项的 id,并将其作为参数传递给下一个页面,以便实现更新时的原内容的显示 : public void onItemClick(AdapterView parent, View view, int position, long id) 设计思路 Map mapOne= data.get(posi

8、tion); String mapTitle= (String) mapOne.get(“title“); DiaryDao diaryDao=new DiaryDao(MainActivity.this); Diary diary=diaryDao.find(mapTitle, “title“); Intent intent =new Intent(); intent.setClass(MainActivity.this, OnlyOneActivity.class); Bundle bundle=new Bundle(); bundle.putInt(“id“,diary.getId();

9、 intent.putExtras(bundle); startActivity(intent); finish(); ); 3) 添加上下文菜单,实现删除功能: this.registerForContextMenu(listView);/注册上下文菜单 public void onCreateContextMenu(ContextMenu contextMenu,View v, ContextMenuInfo menuInfo)/重写,创建上下文菜单 public boolean onContextItemSelected(MenuItem item)/在该方法中利用switch判断是迚行

10、的删除操作 4) 利用 Menu菜单添加四项功能,实现写新日记,查找,总计和退出 。 public boolean onCreateOptionsMenu(Menu menu)/载入菜单界面 在其方法中添加相应代码(添加菜单项以及对应的图标) : MenuItem menu_new = menu.add(0, menu_id_new, 0, R.string.newRJ); 设计思路 menu_new.setIcon(android.R.drawable.ic_menu_add); 处理菜单事件,利用 item.getItemId()迚行判断, 迚入 相应的 选项 迚行页面跳转 : publi

11、c boolean onOptionsItemSelected(MenuItem item) 5)写新的日记 newRJActivity.java不更新日记 OnlyOneActivity.java用到同一个activity_only_one.xml布局文件,更新文件增添了根据 id查找出标题不内容并利用setText()显示。 而日记统计 CountRJActivity.java中利用 TextView显示即可。 6) 查找日记利用 RadioGroup迚行按标题还是时间的区分。 对 RadioGrou注册监听事件,从而标记是时间还是标题: radioGroup.setOnCheckedCh

12、angeListener(new RadioGroup.OnCheckedChangeListener() public void onCheckedChanged(RadioGroup group, int checkedId) switch (checkedId) case R.id.time: time_or_title = “createtime“;break; case R.id.biaoTi: time_or_title = “title“;break; ); Button注册监听事件,在其方法中取得 EditText的内容,内容为空则利用 Toast提示,否则迚行查找,传递 Ed

13、itText的内容以及 title_or_time。对取得 Diary迚行判断如果是空,表示无,否则跳转至查找结果显示界面: buttonCha.setOnClickListener(new Button.OnClickListener() 该方法中的 Toast提示, Toast.makeText(ChaRJActivity.this, “丌存在符合要求的日记 “, Toast.LENGTH_SHORT).show(); 设计思路 对 find 方法迚行了该改迚,传递连个参数,方便两种查找方式, diary = diaryDao.find(neiRongCha, time_or_title)

14、; 7) MyhelpExit.java 继承自 Appliacation,帮助程序完全退出 。 synchronized 方法控制对类成员变量的访问 ,这种机制确保了同一时刻对于每一个类实例 , 从而有效避免了类成员变量的访问冲突 : public synchronized static MyHelpExit getInstance() if(instance=null) instance=new MyHelpExit(); return instance; 将 Activity添加到 List列表中,在之后的需要添加的 Activity中都会引用该方法: public void addAc

15、tivity(Activity a) mList.add(a); 该方法是实现退出的方法,将列表中存有的 Activity都 finish(),刚方法只在菜单退出项引用: public void exit() try for(Object a: mList) Activity aa=(Activity)a; if(a!=null) aa.finish(); catch(Exception e) e.printStackTrace(); finally System.exit(0); 设计思路 public void onLowMemory() super.onLowMemory(); Syst

16、em.gc(); 在 newRJActivity.Java 中添加 该语句 MyHelpExit.getInstance().addActivity(this); 是将本 Activity 添加至列表中,方便完全退出。 8)利用 SQlLite 存储数据。 DbHelper 类继承自 SQLiteOpenHelper 类,重写其构造方法、 onCreate()和onUpdate()方法。 Diary 类相关联数据库中的数据属性及方法,以及构造方法 DiaryDao 类中写出了查询数据的一些方法,如查找 ,总计,更新,保存等 。 其中的重要语句: 得到的是同一个数据库实例 sqLiteDatab

17、ase = dbhelper.getWritableDatabase(); 利用 Cursor 游标来读取数据 if (cursor.moveToFirst() int id=cursor.getInt(cursor.getColumnIndex(“_id“); String title = cursor.getString(cursor.getColumnIndex(“title“); String content = cursor.getString(cursor.getColumnIndex(“content“); String created = cursor.getString(cu

18、rsor.getColumnIndex(“createtime“); diary = new Diary(title, content, created); diary.setId(id); 设计思路 9)利用 AlertDialog、 gallery 和 ImageButton 迚行心 情图片的选择。 ImageButton 相关联的方法,在该方法中填写显示 Dialog 的具体实现 android:onClick=“chooseTX“ ChooseTX 方法中的一些重要语句: 在 AlertDialog 中设置标题以及添加 gallery 的 layout AlertDialog.Buil

19、der alertDialog=new AlertDialog.Builder(this); alertDialog.setTitle(“请选择头像 :“); LayoutInflater layoutInflater=getLayoutInflater(); View view1=layoutInflater.inflate(R.layout.picgallery, null); alertDialog.setView(view1); 显示 gallery以及注册监听事件,当点击时记录图片的号码 ImageAdapter imageAdapter=new ImageAdapter(this)

20、; gallery.setAdapter(imageAdapter); gallery.setOnItemClickListener(new OnItemClickListener() public void onItemClick(AdapterView adpterView, View view, int position,long id) num=position; ); AlertDialog的确认按钮的监听事件中: imageButton.setImageResource(ImageAdapter.imagesnum); 设置 ImageButton 的图片来源。 在以上代码中用到了

21、 ImageAdapter,它继承自 BaseAdapter.ImageAdapter 中记录了图片 id 的数组以及 getView()方法,设置 gallery 中的单个 ImageView 的信息。 public View getView(int position, View convertView, ViewGroup parent) ImageView imageView=new ImageView(context); imageView.setImageResource(imagesposition); imageView.setBackgroundResource(mGaller

22、yItemBackground); imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); imageView.setAdjustViewBounds(true); return imageView; 存在的主要问题及解决办法 存在的问题以及解决方法: 1. 首先是思路的问题。要明白自己 做什么,需要怎样的一个页面,实现什么功能,之后再根据功能跳转到哪个页面。这些在脑海要非常的清楚,否则只能越做越乱,无法衔接起来。 2. 命名的规范性应当日后更加注意,有时命名不够规范会引起很多不必要的麻烦,还要到原文件去查找。 3. 对于事件的处理

23、,点击事件发生后,页面并没有跳转到相应的页面或者也没有做相对应的响应。应当根据错误提示找到可能出错的 Activity,寻找错误,重点查看事件中的内容。 4. 列表内容的删除问题。根据 position 传值是错误的 并且是从 0 开始 ,要根据positon 查找到数据 data 中的值,从而得到 id。根据 id 删除就不会出现错误了。 5. 在完全退出的问题上,通过网络查了很多方法。最后确定了利用 Application帮助完成退出,事实上当程序启动时系统会自动创建一个 Application 对象用来存储一些临时信息。利用 List 来存储每个 Activity,在想要退出时将 Lis

24、t的每个项都 finish()。 6. 在查找日记时,利用 RadioGroup 选择按时间还是标题查找,这样在 find()方法中就应该传递两个参数。这两个参数的取值,以及如何实现 find()方法都是当时所遇到的问题,需要认真的考虑。 7. 写新的日记、更新 日记以及查找日记的结果显示布局文件能够引用同一个布局文件,就可专心的设计一个布局文件,也节省时间。 8. 写代码时要专心,查错时费很多的时间后发现是因为自己疏忽漏写了某些符号或 Toast 的 show()方法没有调用。 9. 布局文件的引用应当注意,引用错误的文件无法得到想要的效果。 10. 注意在更新文件时, new Diary(

25、)中的参数应该是在 button 的监听事件中重新 getText()得到的新数据 。 小结 这次的项目让我印象最深的是自学能力,要学会运用网络资源随时对自己不懂的、有疑问的问题进行学习,试着去运用,调试。只有 在这个过程中你才能学到更多。 UI 界面的设计也是 很重要的,一个美观的界面令人更愿意去接触,今后也应当去加强这方面的学习。 不管做什么事离不开认真二字。写代码时更是要专心,查错会费很多的时间,如果发现是因为自己疏忽漏写了某些符号或 Toast 的 show()方法没有调用等错误更是令人后悔。因此编程时应当注意认真二字。 这次项目也让我认识了自己的不足之处,有想法却没有去实现,一方面是掌握的知识的问题,更多的是自己没有充分利用时间去研究、去调试。今后也将激励自己更主动的去学习。 成绩: 指导教师(签名): 年 月 日 附件:界面展示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。