



已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
滨州学院Android开发基础 题目: 个人日记本开发 系 院计算机科学技术系专 业软件技术班 级 学 号 姓 名 2013年 6月 30 日装订线滨州学院成绩评定表 题目个人日记本开发?关键技术开发过程中使用到的技术:1. 利用SQLite存储数据 主要体现类:DbHelper类继承自SQLiteOpenHelper类,重写其构造方法、onCreate()和onUpdate()方法;Diary类相关联数据库中的数据属性及方法,以及构造方法;DiaryDao类中写出了查询数据的一些方法,如查找,总计,更新,保存等.2. Android UI布局技术 主要运用控件:RadioGroup、 ListView、EditText、Button、TextView、ProgressBar、gallery、ImageButton3. 利用Application帮助实现完全退出 主要体现类:MyHelpExit继承自Application,实现创建,往列表中添加Activity以及完全退出逐个将列表中的Activity s实现finish()功能。4. Intent页面跳转技术 Intent intent = new Intent(startActivity.this, endActivity.class);利用Intent进行页面的跳转,需要传参数时则增添Bundle。5.项目闪屏效果 运用AlphaAnimation类,设置闪屏的透明图渐变程度,设定播放的时间,以及通过注册事件监听控制当动画播放完毕自动跳转到列表主界,达到闪屏效果。6.利用AlertDialog、gallery和ImageButton以画廊的形式进行心情图片选择。设计思路项目背景: 基于手机通讯的普及以及人们对日记的需求,利用Android设计一款简单实用的日记薄方便人们的实用。设计思路: 首先通过闪屏界面进入日记的列表界面,如果之前存在日记则以列表的显示,否则以TextView提示。利用Menu提供四个功能:写新日记、查找日记、日记总计、退出。点击相应的列表内容则进行更新,常按某项列表内容则提示删除功能。核心代码如下:1)闪屏效果的实现。在WelcomActivity.java中利用AlphaAnimation实现,设置渐变透明度、播放时间以及通过注册事件监听控制当动画播放完毕自动跳转到列表主界。 AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);alphaAnimation.setDuration(5000);imageView.startAnimation(alphaAnimation);alphaAnimation.setAnimationListener(); 设计思路 2)以列表的形式展示日记内容。通过数据库查找日记,利用适配器对列表进行绑定,并对单击列表内容项进行监听。 当一篇日记也没有写的时候,进行提示。TextView textEmpty_show=(TextView)this.findViewById(R.id.myAndroidEmpty);listView.setEmptyView(textEmpty_show); 通过数据库查找数据,存入data中:diaryDao=new DiaryDao(this);List diaries=diaryDao.getAllDiaries();data=new ArrayListMap();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.item, new Stringtitle,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) 对该文件解析之后,将数据封装在存储有RSSItem实体类中的List中,以供前台的调用。实体类RSSItem如下所示:public class RSSItem private String title;private String link;private String description;private String pubDate;前台获取数据的时候,并没有占用主UI线程,而是采用重新启动一条数据线程的方式来获取数据的。例如方法:private void requestRSSFeed()就是采用重新启动一条线程的方式获取数据,并通过自定义适配器,将数据和控件绑定的。自定义适配器,需要新建一个类,让他继承并实现BaseAdapter以及BaseAdapter的一系列方法:public int getCount()public Object getItem(int position)public long getItemId(int position)public View getView(int position, View convertView, ViewGroup parent) 前台UI设计的时候,考虑到TabHost的不灵活性,定义了一组RadioGroup来代替TabHost的TabWidget,这样可以灵活布局。在设置RadioGroup的选择监听器事件的时候,进行相应的处理,会使UI的设计更为灵活。 TabWidget需要隐藏掉,对应的一个属性: android:visibility=gone 在为RadioGroup添加点击效果的时候,运用到了控件的移动效果,运用到了TranslateAnimation类。这样点击的时候,对有该半透明图片的控件移动,使页面达到一些比较好看的效果。自定义的移动方法: public static void moveFrontBg(View v, int startX, int toX, int startY, int toY) 设计思路 Map mapOne= data.get(position); 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();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判断是进行的删除操作4)利用Menu菜单添加四项功能,实现写新日记,查找,总计和退出。public boolean onCreateOptionsMenu(Menu menu)/载入菜单界面在其方法中添加相应代码(添加菜单项以及对应的图标):MenuItem menu_new = menu.add(0, menu_id_new, 0, R.string.newRJ); 对该文件解析之后,将数据封装在存储有RSSItem实体类中的List中,以供前台的调用。实体类RSSItem如下所示:public class RSSItem private String title;private String link;private String description;private String pubDate;前台获取数据的时候,并没有占用主UI线程,而是采用重新启动一条数据线程的方式来获取数据的。例如方法:private void requestRSSFeed()就是采用重新启动一条线程的方式获取数据,并通过自定义适配器,将数据和控件绑定的。自定义适配器,需要新建一个类,让他继承并实现BaseAdapter以及BaseAdapter的一系列方法:public int getCount()public Object getItem(int position)public long getItemId(int position)public View getView(int position, View convertView, ViewGroup parent) 前台UI设计的时候,考虑到TabHost的不灵活性,定义了一组RadioGroup来代替TabHost的TabWidget,这样可以灵活布局。在设置RadioGroup的选择监听器事件的时候,进行相应的处理,会使UI的设计更为灵活。 TabWidget需要隐藏掉,对应的一个属性: android:visibility=gone 在为RadioGroup添加点击效果的时候,运用到了控件的移动效果,运用到了TranslateAnimation类。这样点击的时候,对有该半透明图片的控件移动,使页面达到一些比较好看的效果。自定义的移动方法: public static void moveFrontBg(View v, int startX, int toX, int startY, int toY) 设计思路menu_new.setIcon(android.R.drawable.ic_menu_add);处理菜单事件,利用item.getItemId()进行判断,进入相应的选项进行页面跳转:public boolean onOptionsItemSelected(MenuItem item) 5)写新的日记newRJActivity.java与更新日记OnlyOneActivity.java用到同一个activity_only_one.xml布局文件,更新文件增添了根据id查找出标题与内容并利用setText()显示。而日记统计CountRJActivity.java中利用TextView显示即可。 6)查找日记利用RadioGroup进行按标题还是时间的区分。对RadioGrou注册监听事件,从而标记是时间还是标题:radioGroup.setOnCheckedChangeListener(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提示,否则进行查找,传递EditText的内容以及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);7)MyhelpExit.java继承自Appliacation,帮助程序完全退出。synchronized 方法控制对类成员变量的访问,这种机制确保了同一时刻对于每一个类实例,从而有效避免了类成员变量的访问冲突:public synchronized static MyHelpExit getInstance() if(instance=null) instance=new MyHelpExit(); return instance;将Activity添加到List列表中,在之后的需要添加的Activity中都会引用该方法:public void addActivity(Activity a) mList.add(a); 该方法是实现退出的方法,将列表中存有的Activity都finish(),刚方法只在菜单退出项引用:public void exit()tryfor(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();System.gc();在newRJActivity.Java中添加该语句MyHelpExit.getInstance().addActivity(this);是将本Activity添加至列表中,方便完全退出。8)利用SQlLite存储数据。DbHelper类继承自SQLiteOpenHelper类,重写其构造方法、onCreate()和onUpdate()方法。Diary类相关联数据库中的数据属性及方法,以及构造方法DiaryDao类中写出了查询数据的一些方法,如查找,总计,更新,保存等。其中的重要语句:得到的是同一个数据库实例sqLiteDatabase = 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(cursor.getColumnIndex(createtime);diary = new Diary(title, content, created);diary.setId(id);设计思路9)利用AlertDialog、gallery和ImageButton 进行心情图片的选择。ImageButton相关联的方法,在该方法中填写显示Dialog的具体实现 android:onClick=chooseTXChooseTX方法中的一些重要语句:在AlertDialog中设置标题以及添加gallery的layoutAlertDialog.Builder 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); 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的图片来源。在以上代码中用到了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(mGalleryItemBackground);imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);imageView.setAdjustViewBounds(true);return imageView;存在的主要问题及解决办法存在的问题以及解决方法:1. 首先是思路的问题。要明白自己做什么,需要怎样的一个页面,实现什么功能,之后再根据功能跳转到哪个页面。这些在脑海要非常的清楚,否则只能越做越乱,无法衔接起来。2. 命名的规范性应当日后更加注意,有时命名不够规范会引起很多不必要的麻烦,还要到原文件去查找。3. 对于事件的处理,点击事件发生后,页面并没有跳转到相应的页面或者也没有做相对应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉字“牛”的讲解课件
- 水银血压计使用课件
- 混凝土养护与加速养护方案
- 学生宿舍照明节能与智能控制方案
- 混凝土混合物的性能检测与控制方案
- 标准厂房安全出口与疏散方案
- 水电镀基础知识培训课件
- 胰岛素赵娜娜51课件
- 二零二五版服务业劳动保障监察及员工权益保障合同
- 二零二五年度公务车借用协议书模板
- 初中数学-综合与实践 哪一款“套餐”更合适教学课件设计
- 采油采气井控题库
- “三重一大”决策 标准化流程图 20131017
- Cpk 计算标准模板
- 精选浙江省普通高中生物学科教学指导意见(2023版)
- “魅力之光”核电知识竞赛试题答案(二)(110道)
- 外科学课件:食管癌
- 汽机专业设备运行日常点检
- GB/T 2820.12-2002往复式内燃机驱动的交流发电机组第12部分:对安全装置的应急供电
- 设备基础知识-动设备课件
- GB/T 12599-2002金属覆盖层锡电镀层技术规范和试验方法
评论
0/150
提交评论