基于Android日历及记事功能完整实现

合集下载

基于Android的超级记事本APP设计

基于Android的超级记事本APP设计

基于Android的超级记事本APP设计
李水佳;吴文高;刘瑞严
【期刊名称】《电脑知识与技术》
【年(卷),期】2016(012)010
【摘要】该文遵循软件工程规范,设计并实现了一个基于Android手机的记事本APP,拥有日历、账单、记事、资料、密码本及提醒等功能于一体,实现了文本信息的集成与统一、规范化与便携化管理,使其成为Android手机用户日常生活信息的好管家,具有一定的应用前景。

【总页数】3页(P79-80,87)
【作者】李水佳;吴文高;刘瑞严
【作者单位】湖北文理学院数学与计算机科学学院,湖北襄阳441053;湖北文理学院数学与计算机科学学院,湖北襄阳441053;湖北文理学院数学与计算机科学学院,湖北襄阳441053
【正文语种】中文
【中图分类】TP393
【相关文献】
1.基于Android的多功能记事本软件的设计与实现 [J], 任亚捷
2.基于Android的超级记事本APP的设计与实现 [J], 申晋祥;鲍美英
3.基于Android平台的记事本APP设计 [J], 江志华
4.基于Android的快捷记事本的设计与实现 [J], 叶从玲
5.基于Android平台的记事本App的开发与实现 [J], 江志华;陈翱天
因版权原因,仅展示原文概要,查看原文内容请购买。

Android日历完整实现

Android日历完整实现

实用第一智慧密集2011. 05实现基于Android 的日历系统摘要: Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。

在美国乃至世界的很多地方的出货量已经超越Iphone,成为世界上最大智能手机操作系统。

因此,世界各地的程序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。

在此给出一个基于Android 的日历系统的完整实现过程。

关键词: Android;日历;绘画;农历;记录;提醒1 引言要实现的日历除了常规的日历功能外,还可以显示与当前日期相关的信息,如当前日期的农历日期、天干地支、节日等信息。

下面先看看日历的绚丽界面,如图1、图2 所示。

主要功能2 绘画基础由于实现的日历系统要涉及到大量的Android 绘图技术,因此,要简单介绍Android 的绘图技术。

绘制图形通常在Android.view.View 或其子类的onDraw 方法中进行。

该方法的定义如下:protected void onDraw(Canvas canvas);其中Canvas 对象提供了大量用于绘图的方法,这些方法主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成复杂图形的基本元素。

如果要画更复杂的图形,可以采用组合这些图形基本元素的方式来完成。

例如,可以采用画3 条直线的方式来画三角形。

下面来看一下绘制图形基本元素的方法。

2.1 绘制像素点public native void drawPoint(float x, float y, Paint paint);// 画一个像素点public native void drawPoints(float[] pts, int offset, int count, Paint paint); // 画多个像素点public void drawPoints(float[] pts, Paint paint);// 画多个像素点参数的含义如下:(1) x:像素点的横坐标。

基于Android日历及记事功能完整实现

基于Android日历及记事功能完整实现

《移动通信程序设计》课程设计题目基于andriod的记事功能的日历院系专业学生姓名学号二O一四年六月九日目录1概述 (1)2 总体设计 (2)3详细设计 (3)3.1、绘画基础 (5)3.2框架绘画 (6)3.3 核心技术 (11)3.4 触摸事件 (14)3.5 键盘操作 (17)4进行编码: (19)4.1登录 (19)4.2事情记录 (20)4.3 对闹铃的设置 (21)4.4记事列表 (23)4.5 闹铃 (25)4.6 对记事的编辑 (26)5 结束语 (27)6参考文献 (27)实现基于Android 的日历及记事功能系统摘要: Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。

在美国乃至世界的很多地方的出货量已经超越Iphone,成为世界上最大智能手机操作系统。

因此,世界各地的程序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。

在此给出一个基于Android 的日历系统的完整实现过程。

关键词: Android;日历;记录;提醒1概述在日常工作中,特别强调时间的重要性,需要完成的事情也越来越多,因此对日历的需求也是巨大的,由于在日常生活中我们不可能将随身携带,我们可以将软件做到移动终端,在此情形下,基于andriod的技术带有记事功能的日历就诞生。

要实现的日历除了常规的日历功能外,还可以显示与当前日期相关的信息,如今天是今年的第几周等等。

效果如图1、图2 所示。

图1 在手机上所显示的日历图标图2 日历的主界面2 总体设计对于andriod的开发的日历的应该一开始显示日历,然后登陆,进行记事,主要流程图如下:3详细设计3.1、绘画基础由于实现的日历系统要涉及文本技术,因此,要简单介绍Android 的文本技术。

通常在Android.view.View 或其子类的onDraw 方法中进行。

该方法的定义如下:protected void onDraw(Canvas canvas);其中Canvas 对象提供了大量用于绘图的方法,这些方法主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成复杂图形的基本元素。

基于Android的日记本的设计与实现的研究报告

基于Android的日记本的设计与实现的研究报告

基于Android的日记本的设计与实现的研究报告随着智能手机的普及和移动互联网的进一步发展,移动应用越来越受到人们的重视。

而日记本作为一种记录生活、记录思考的方式,也有着越来越广泛的应用。

本文旨在探讨基于Android平台的日记本的设计与实现。

一、需求分析在设计与实现日记本应用之前,需要先对其功能进行需求分析。

一般来说,日记本应用需要满足以下要求:1. 编辑日记:可以编辑、保存、修改和删除日记。

2. 时间记录:可以记录日记的时间,用户可以查看当天、周、月的日记。

3. 标签管理:可以为每一篇日记添加标签,便于用户查找。

4. 备份与恢复:可以进行数据备份和恢复,防止数据丢失。

5. 登录与注册:为了保证用户隐私的安全,需要提供登录和注册功能。

二、设计与实现基于以上需求,设计了一个基于Android平台的日记本应用。

1. UI设计UI设计采用了Material Design的风格,整体设计简洁、美观、易用。

主界面采用了ViewPager和TabLayout相结合的方式,可以进行快速切换不同的界面。

2. 日记编辑用户可以在主界面中点击加号添加新的日记。

日记编辑页面提供了标题、内容和标签的编辑,同时具备保存、修改和删除日记的功能。

3. 时间记录在主界面的Toolbar中加入了一个时间选择器,用户可以选择不同的时间范围查看当天、周或月的日记。

4. 标签管理在主界面中通过点击“标签”按钮弹出一个标签管理页面,用户可以添加、修改和删除标签。

用户可以给每一篇日记添加标签,便于查找和分类。

5. 备份与恢复在主界面中通过点击“备份”和“恢复”按钮进行数据的备份和恢复。

6. 登录与注册用户需要登录或注册才能使用日记本应用,为了保护用户隐私,采用了密码加密和保护机制。

三、总结经过以上的设计与实现,这个日记本应用提供了完整的日记管理功能,具备了美观、简约的UI设计。

应用还可以进一步优化,例如加入云同步功能、图片上传等,以满足更多用户需求。

毕业论文基于安卓手机日程管理系统

毕业论文基于安卓手机日程管理系统

毕业论文基于安卓手机日程管理系统安卓手机日程管理系统的设计与实现摘要:本文介绍了基于安卓平台的日程管理系统的设计与实现。

该系统主要面向移动用户,在日常生活与工作中提供便捷的日程安排功能。

在需求分析的基础上,系统采用了先进的安卓开发技术,实现了用户注册、登录、日程添加、查看、修改、删除等一系列功能。

最后进行了系统测试,确保系统的稳定性和用户友好性。

关键词:安卓平台;日程管理;移动用户;系统设计一、引言随着移动智能设备的普及和人们生活的快节奏,日程管理成为了必不可少的一项功能。

传统的手写备忘录已经无法满足大众需求,于是日程管理软件应运而生。

日程管理软件不仅能够帮助用户高效地管理自己的时间,还可以提醒用户即将到来的事件,从而帮助用户减少遗漏事件的概率。

基于此,本文设计并实现了一款基于安卓平台的日程管理系统。

该系统主要面向移动用户,提供了丰富的日程安排功能,并采用了现代化的安卓开发技术来实现这些功能。

下文将详细介绍该系统的设计与实现。

二、需求分析在设计系统之前,需要对系统的需求进行分析。

本文针对移动用户的日程管理需求,列出了以下需求:1. 用户管理:系统需要提供用户注册、登录、注销等功能,以保证用户数据的安全性和隐私性。

2. 日程添加:用户需要能够方便地添加日程信息,包括标题、时间、地点、重要性等。

3. 日程查看:用户需要能够查看自己的日程信息,包括已完成的和未完成的。

4. 日程修改:用户需要能够方便地修改自己的日程信息,包括标题、时间、地点、重要性等。

5. 日程删除:用户需要能够方便地删除自己的日程信息。

6. 提醒功能:系统需要提供提醒功能,以帮助用户避免事件的遗漏。

基于以上需求,我们采用了安卓平台来实现这一系统。

三、系统设计1. 界面设计系统主要包括登录、注册、日程添加、日程查看、日程修改、日程删除等界面。

如图所示:(图 1 系统主界面)2. 数据库设计系统采用了MySQL数据库来存储用户数据。

主要包括用户表和日程表两个部分。

基于Android平台的日程记事器设计与实现

基于Android平台的日程记事器设计与实现

基于Android平台的日程记事器设计与实现【摘要】本文研究了在Android开发平台下日程记事器的设计与实现过程,实现对日程记事进行增删改查、自定义闹铃振动定时提醒功能、拍照记事和录像记事等功能,并且使用google的语音搜索功能添加记事,为用户提供方便快捷的操作。

【关键词】Android平台;日程记事器;手机软件1.引言随着智能手机技术的不断发展,它将成为人们日常生活记录日程必不可少的设备。

因此,Android平台记事器将会有很大的发展空间,WNotes日程手机应用软件就是其中之一。

它的设计开发是为了最大便捷的方便人们记录日常生活中一些重要的事情。

WNotes日程除了具备最基本的增删改查功能外,还拥有别具特色的闹铃实时提醒功能和多媒体拍照记事功能。

当然用户也可以根据自己的需要对日程记录进自定义排序,便于阅读。

本文将基于Android平台详述如何设计并实现一款功能完备的日程记事器。

2.系统总体设计2.1 功能设计通过对智能手机用户的问卷调查以及参照现有智能机中记事器的功能,本文将整个记事器功能设计如图1所示:2.2 数据库访问设计数据库选用SQLite,通过使用这些API便可实现数据库操作。

记事器要经常进行数据库操作,所以编写了DBAccess和DBUtil两个类进行专门的数据库操作,设计一个SQLiteOpenHelper类来对数据库进行基本操作,以实现数据库的访问等。

3.记事器的具体实现3.1 主界面模块实现主界面采用Android自带的ListView控件显示,并且继承ListActivity父类,这样可以很方便地显示日程记事,在记事为空的时候显示No data没有数据,在记事不为空的时候显示记事的ListView列表界面。

在整个主界面的最上方添加两个ImageView的按钮,一个是添加记事,另一个是查询记事,可以方便用户操作。

通过重写父类的onCreateOptionsMenu(Menu menu)方法创建menu菜单,点击menu菜单,弹出“设置”、“新建”、“排序”、“搜索”菜单选项。

android日历提醒软件计算机毕业设计论文[管理资料]

基于android的日历提醒软件的设计与实现摘要本软件是一种基于安卓平台开发的一款日历提醒软件。

本文主要通过现阶段流行开来的智能手机的软件的设计方法,来设计出一款能够提醒一些事件的应用软件,其真实的目的是通过利用这次的开发过程来学习到安卓开发的一些方法和经验,从而深入地了解安卓开发。

本文介绍了移动应用的开发背景,首先需要学习安卓的开发环境的搭建和使用,其次对日历提醒软件做出需求分析,并且通过概要设计来确定其主要功能,然后对其中的功能进行详细设计并书写代码,最后进行功能方面的一些测试来完成设计。

通过上面的设计过程,最终实现了软件的两个功能:日程管理功能和课程管理功能。

日程管理主要是针对某一天的一些事件进行记录和提醒,而课程管理主要针对大学生人群制定,可以记录一些课程的上课时间从而给忙碌的学习生活带来一定的便利。

关键词:日历提醒;安卓开发;智能手机。

Design And Implementation Of Calendar Reminder SoftwareBuilt On Android PlatformAbstractThis software application is a calendar reminder built on Android platform. This paper is to design an application that can remind some events based on designing methods of the current popular smartphone software. The real purpose is to learn some methods and obtain experience of Android development through the use of the development process; therefore we can get a better understanding of Android development.This paper introduces the background of mobile application development. First of all, we need to learn how to build and use the android development environment. Second, we’re supposed to work on the requirements analysis for our application. Then we’re able to determine the main functions. After this, we can start designing and coding for the detailed functions. Finally, it is necessary to write test cases to verify all functionality of this application.Through the above design process, this application implements two functions. They are schedule management function and course management function. Schedule management focuses on recording and reminding of some events on one day, and course management is designed for university students to record the time of courses, which can make the busy learning life more convenient.Keywords:Calendar reminder;Google Android SDK;SmartPhone.目录摘要 (i)Abstract (ii)1 绪论 (1)课题背景及设计意义 (1)国内外移动应用开发的背景 (1)本论文的主要内容 (2)2 Android及开发环境介绍 (3)android系统自身的特点 (3)android系统自身的功能特征 (3)android的构成及其工作机制 (3) (5)JDK的安装 (5)Eclipse的安装 (5)Android SDK的安装 (6)ADT的安装 (6)3 日历提醒软件的需求分析 (8) (8) (8) (8) (9)4 日历提醒软件的概要设计 (10) (10) (10)日历提醒软件的功能模块说明 (10)日历提醒软件的功能结构图 (10)5 日历提醒软件的详细设计 (13) (13)本软件任务界面的设计 (15)任务界面的数据库准备 (15) (17)总日程的界面 (19)对现有日程及日期的标记 (22) (22)6 日历提醒软件的系统测试 (28)日程管理方面的测试 (28)课程管理方面的测试 (30)结论 (33)参考文献 (34)致谢 (35)外文原文及翻译 (36)1 绪论近年来,除了互联网的迅猛发展,另一个急速发展起来的前沿技术就不得不说智能手机以及其应用软件的高速发展。

基于安卓平台的事件日历系统的设计与实现的开题报告

基于安卓平台的事件日历系统的设计与实现的开题报告一、选题背景随着智能手机的普及,移动应用也越来越受人们欢迎。

事件日历作为一种重要的移动应用,它可以帮助人们有效地规划自己的时间。

随着人们在日常生活中的工作、学习和娱乐活动不断增加,需求也不断增多,因此事件日历应用也需要不断更新、优化,更好地满足人们的需求。

本课题旨在基于安卓平台进行事件日历系统的设计与实现,为用户提供一种高效、方便的日程管理工具。

二、选题意义事件日历系统是一种非常实用的应用,它可以帮助人们更好地管理自己的时间。

通过系统的分类、排序、提醒等功能,可以让人们更好地安排工作和生活。

而移动应用的使用也在不断增加,用户对事件日历的需求也越来越多,因此本系统的研究及开发对于满足用户需求有着重要的意义。

三、研究内容与目标本课题旨在基于安卓平台设计和实现一款事件日历系统,具体研究内容和目标如下:1. 了解安卓平台的开发环境和技术。

2. 系统设计:对事件日历系统进行整体设计,明确系统的功能模块和流程。

3. 数据库设计:设计系统的数据结构,建立数据库,为系统提供数据支持。

4. 界面设计:针对系统的功能和用户需求进行界面设计。

5. 系统开发:编写系统代码,实现系统的各项功能。

6. 测试和优化:对系统进行测试和优化,确保系统的稳定性和高效性。

四、研究方法1. 文献调研法:通过查询已有的相关文献和资料,了解安卓平台开发和事件日历系统的相关知识。

2. 系统设计方法:采用模块化、分层次的系统设计方法,对系统进行整体设计。

3. 实验研究方法:通过实验研究的方法,编写系统代码并进行调试,测试系统的各项功能及性能。

五、预期成果通过本课题的研究和实践,预期可以获得以下成果:1. 一份完整的安卓事件日历系统设计与开发方案,包括系统模块设计、数据库设计、界面设计、代码实现和测试等。

2. 一款实用的事件日历移动应用,该应用可以支持多项功能,如日程添加、分类、提醒、查询等,满足用户对事件日历的基本需求。

基于Android的日历应用的设计与实现

分类号学号M********* 学校代码10487 密级硕士学位论文基于Android的日历应用的设计与实现学位申请人:黄厚宏学科专业:软件工程指导教师:区士颀答辩日期:2018.12.20A Thesis Submitted in Partial Fulfillment of the Requirementsfor the Degree for the Master of EngineeringDesign and Implementation of Calendar Application Based on androidCandidate:Huang HouhongMajor :Software EngineeringSupervisor :Ou ShiqiHuazhong University of Science & TechnologyWuhan 430074, P.R.ChinaDecember, 2018摘要当前互联网的快速发展已经成为了人们生活中的不可分割的部分,移动互联网更是成为了当前发展的重点。

移动互联网的最重要终端就是智能手机的发展,当前市场上主要有android与ios两大移动端操作系统。

对于当前众多的国内手机厂商来说,所用的系统均是定制版的android系统。

本文日历应用就是某厂商手机内置软件之一,针对用户需求与商业化需求,对日历的功能划分为三大部分。

基础部分包括日期功能、备忘录功能以及设置功能;运营部分包含各种卡片,每个卡片对应一个功能。

其它部分包括小工具、适配、mock测试框架等。

这些功能让日历应用更加的全面,同时日历应用也不再是传统的工具类应用,更接近互联网类应用。

为满足上述需求,对日历的首页设计分为了三大部分。

ActionBar部分用来控制视图切换、日期跳转与推算、设置功能。

视图部分分别为月视图、周视图、日视图、日程视图,每次只能展示一个,他们的功能都是满足基础需求。

Android实现记事本功能(26)

Android实现记事本功能(26)本⽂实例为⼤家分享了Android实现记事本功能的具体代码,供⼤家参考,具体内容如下MainActivity.java代码:package siso.smartnotef.activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import siso.smartnotef.R;import siso.smartnotef.adapter.NotepadeAdapter;import siso.smartnotef.db.DataHelper;import siso.smartnotef.global.GlobalParams;import siso.smartnotef.model.NotepadBean;import siso.smartnotef.model.NotepadWithDataBean;import siso.smartnotef.service.MainService;public class MainActivity extends AppCompatActivity implements View.OnClickListener, NotepadeAdapter.ClickFunction {private TextView tv_add;private ListView lv_contents;private List<NotepadWithDataBean> notepadWithDataBeanList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);Intent intent1 = new Intent(MainActivity.this, MainService.class);startService(intent1);findViews();setListeners();initView();}private void findViews() {tv_add = (TextView) findViewById(_add);lv_contents = (ListView) findViewById(R.id.lv_content);}private void setListeners() {tv_add.setOnClickListener(this);}private void initView() {DataHelper helper = new DataHelper(MainActivity.this);notepadWithDataBeanList = new ArrayList<NotepadWithDataBean>();List<NotepadBean> notepadBeanList = helper.getNotepadList();for (int i = 0; i < notepadBeanList.size(); i++) {if (0 == notepadWithDataBeanList.size()) {NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();notepadWithDataBean.setData(notepadBeanList.get(0).getDate());notepadWithDataBeanList.add(notepadWithDataBean);}boolean flag = true;for (int j = 0; j < notepadWithDataBeanList.size(); j++) {int date = notepadWithDataBeanList.get(j).getData();if (date == notepadBeanList.get(i).getDate()) {notepadWithDataBeanList.get(j).getNotepadBeenList().add(notepadBeanList.get(i));flag = false;break;}}if (flag) {NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();notepadWithDataBean.setData(notepadBeanList.get(i).getDate());notepadWithDataBeanList.add(notepadWithDataBean);notepadWithDataBeanList.get(notepadWithDataBeanList.size() - 1).getNotepadBeenList().add(notepadBeanList.get(i));}}NotepadeAdapter adapter = new NotepadeAdapter(MainActivity.this, notepadWithDataBeanList, this);lv_contents.setAdapter(adapter);// setListViewHeightBasedOnChildren(lv_contents);}public void setListViewHeightBasedOnChildren(ListView listView) {if (listView == null) return;ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {// pre-conditionreturn;}int totalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}youtParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));listView.setLayoutParams(params);}@Overridepublic void onClick(View v) {switch (v.getId()) {case _add:Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_ADD);intent.putExtras(bundle);intent.setClass(MainActivity.this, AddContentActivity.class);startActivityForResult(intent, GlobalParams.ADD_REQUEST);break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case GlobalParams.ADD_REQUEST:if (GlobalParams.ADD_RESULT_OK == resultCode) {initView();}break;}}@Overridepublic void clickItem(int position, int itemPosition) {Bundle bundle = new Bundle();bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_EDIT);bundle.putSerializable(GlobalParams.BEAN_KEY, notepadWithDataBeanList.get(position));bundle.putInt(GlobalParams.ITEM_POSITION_KEY, itemPosition);Intent intent = new Intent(this, AddContentActivity.class);intent.putExtras(bundle);startActivityForResult(intent, GlobalParams.ADD_REQUEST);}@Overridepublic void longClickItem(final int position, final int itemPostion) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setMessage("确认删除吗?");builder.setTitle("提⽰");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {DataHelper helper = new DataHelper(MainActivity.this);helper.deleteNotepad(notepadWithDataBeanList.get(position).getNotepadBeenList().get(itemPostion).getId()); initView();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}}AddContentActivity.java代码:package siso.smartnotef.activity;import android.app.DatePickerDialog;import android.app.TimePickerDialog;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.DatePicker;import android.widget.EditText;import android.widget.TextView;import android.widget.TimePicker;import android.widget.Toast;import java.util.Calendar;import siso.smartnotef.R;import siso.smartnotef.db.DataHelper;import siso.smartnotef.global.GlobalParams;import siso.smartnotef.model.NotepadBean;import siso.smartnotef.model.NotepadWithDataBean;public class AddContentActivity extends AppCompatActivity implements View.OnClickListener {private TextView tv_save;private TextView tv_date;private TextView tv_time;private TextView tv_cancel;private EditText et_content;private String time = "";private String date = "";private Bundle bundle;private int type;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_add_content);bundle=getIntent().getExtras();type=bundle.getInt(GlobalParams.TYPE_KEY);findViews();setListeners();initDate();}private void findViews() {et_content=(EditText)findViewById(R.id.et_content);tv_save = (TextView) findViewById(_save);tv_date = (TextView) findViewById(_date);tv_time = (TextView) findViewById(_time);tv_cancel=(TextView)findViewById(_cancel);}private void setListeners() {tv_save.setOnClickListener(this);tv_date.setOnClickListener(this);tv_time.setOnClickListener(this);tv_cancel.setOnClickListener(this);}private void initDate() {Calendar c = Calendar.getInstance();int year=c.get(Calendar.YEAR);int month=c.get(Calendar.MONTH);int day=c.get(Calendar.DAY_OF_MONTH);date=getDate(year,month,day);if(type==GlobalParams.TYPE_EDIT){NotepadWithDataBean notepadWithDataBean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY));et_content.setText(notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getContent()); date=notepadWithDataBean.getData()+"";tv_date.setText(date);time=notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getTime();tv_time.setText(time);}}private String getDate(int year,int month,int day){String date="";date+=year;if(month<9){date=date+"0"+(month+1);}else{date+=(month+1);}if(day<10){date=date+"0"+day;}else {date+=day;}return date;}@Overridepublic void onClick(View v) {switch (v.getId()) {case _save:if(type==GlobalParams.TYPE_EDIT){update();}else {save();}break;case _date:selectDateDialog();break;case _time:selectTimeDialog();break;case _cancel:finish();break;}}private void selectDateDialog(){Calendar c = Calendar.getInstance();int year=c.get(Calendar.YEAR);final int month=c.get(Calendar.MONTH)+1;int day=c.get(Calendar.DAY_OF_MONTH);new DatePickerDialog(AddContentActivity.this, new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {date=getDate(year,monthOfYear,dayOfMonth);tv_date.setText(date);}},year,month,day).show();}private void selectTimeDialog() {Calendar c = Calendar.getInstance();int mHour = c.get(Calendar.HOUR_OF_DAY);int mMinute = c.get(Calendar.MINUTE);new TimePickerDialog(AddContentActivity.this,new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view,int hourOfDay, int minute) {time=formatTime(hourOfDay,minute);tv_time.setText(time);}}, mHour, mMinute, true).show();}private String formatTime(int hour,int minute){String time=hour+":";if(minute<10){time=time+"0"+minute;}else{time+=minute;}return time;}private void save() {String content = et_content.getText().toString();if ("".equals(content)) {Toast.makeText(AddContentActivity.this, "请输⼊内容", Toast.LENGTH_SHORT).show();return;}if ("".equals(time)) {Toast.makeText(AddContentActivity.this, "请选择时间", Toast.LENGTH_SHORT).show();return;}NotepadBean notepadBean = new NotepadBean();notepadBean.setContent(content);notepadBean.setDate(Integer.parseInt(date));notepadBean.setTime(time);DataHelper helper = new DataHelper(AddContentActivity.this);helper.insertData(notepadBean);setResult(GlobalParams.ADD_RESULT_OK);finish();}private void update(){DataHelper helper=new DataHelper(AddContentActivity.this);NotepadWithDataBean bean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY)); int itemPosition=bundle.getInt(GlobalParams.ITEM_POSITION_KEY);helper.update(bean.getNotepadBeenList().get(itemPosition).getId(),date,time,et_content.getText().toString()); setResult(GlobalParams.ADD_RESULT_OK);finish();}}RemindActivity.java代码:package siso.smartnotef.activity;import android.media.MediaPlayer;import android.media.RingtoneManager;import .Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.IOException;import siso.smartnotef.R;import siso.smartnotef.global.GlobalParams;public class RemindActivity extends AppCompatActivity {private TextView tv_content;private Button bt_confirm;private MediaPlayer mMediaPlayer;;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_remind);findViews();setListeners();Bundle bundle=getIntent().getExtras();String content=bundle.getString(GlobalParams.CONTENT_KEY);tv_content.setText(content);playSound();}private void findViews(){tv_content=(TextView)findViewById(_content);bt_confirm=(Button) findViewById(R.id.bt_confirm);}private void setListeners(){bt_confirm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(null!=mMediaPlayer){mMediaPlayer.stop();finish();}}});}public void playSound() {new Thread(new Runnable() {@Overridepublic void run() {mMediaPlayer = MediaPlayer.create(RemindActivity.this, getSystemDefultRingtoneUri()); mMediaPlayer.setLooping(true);//设置循环try {mMediaPlayer.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}mMediaPlayer.start();}}).start();}//获取系统默认铃声的Uriprivate Uri getSystemDefultRingtoneUri() {return RingtoneManager.getActualDefaultRingtoneUri(RemindActivity.this,RingtoneManager.TYPE_RINGTONE);}}activity_main.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="siso.smartnotef.activity.MainActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/title_color"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:textSize="18sp"android:layout_centerInParent="true"android:text="智能记事本"/><TextViewandroid:id="@+id/tv_add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:text="新增"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:textSize="13sp"/></RelativeLayout><ListViewandroid:id="@+id/lv_content"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView></LinearLayout>activity_add_content.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:id="@+id/activity_add_content"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="siso.smartnotef.activity.AddContentActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/title_color"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:id="@+id/tv_cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:text="取消"android:textColor="@color/white"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:textSize="18sp"android:layout_centerInParent="true"android:text="智能记事本"/><TextViewandroid:id="@+id/tv_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:text="保存"android:layout_centerVertical="true"android:layout_alignParentRight="true"/></RelativeLayout><LinearLayoutandroid:layout_marginTop="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_gravity="center_horizontal"><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="今天"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text=" -- "/><TextViewandroid:id="@+id/tv_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="请选择时间"/></LinearLayout><EditTextandroid:id="@+id/et_content"android:layout_marginTop="10dp"android:layout_width="match_parent"android:layout_height="match_parent"android:inputType="textMultiLine"android:gravity="left|top"android:layout_margin="20dp"android:padding="10dp"android:hint="请输⼊内容"android:background="@drawable/edit_back"/></LinearLayout>activity_remind.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"android:orientation="vertical"tools:context="siso.smartnotef.activity.RemindActivity"><TextViewandroid:id="@+id/tv_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" /><Buttonandroid:id="@+id/bt_confirm"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="取消" /></LinearLayout>AndroidManifest.xml内容:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="siso.smartnotef"><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.AppCompat.Light.NoActionBar"><activityandroid:name=".activity.MainActivity"android:theme="@style/Theme.AppCompat.Light.NoActionBar"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity><receiver android:name=".receiver.MainReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver><activity android:name=".activity.AddContentActivity" /><serviceandroid:name=".service.MainService"android:enabled="true"android:exported="true" /><activity android:name=".activity.RemindActivity"></activity></application></manifest>项⽬结构如图:项⽬运⾏结果如图:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《移动通信程序设计》课程设计题目基于andriod的记事功能的日历院系专业学生姓名学号二O一四年六月九日目录1概述 (1)2 总体设计 (2)3详细设计 (3)3.1、绘画基础 (5)3.2框架绘画 (6)3.3 核心技术 (11)3.4 触摸事件 (14)3.5 键盘操作 (17)4进行编码: (19)4.1登录 (19)4.2事情记录 (20)4.3 对闹铃的设置 (21)4.4记事列表 (23)4.5 闹铃 (25)4.6 对记事的编辑 (26)5 结束语 (27)6参考文献 (27)实现基于Android 的日历及记事功能系统摘要: Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。

在美国乃至世界的很多地方的出货量已经超越Iphone,成为世界上最大智能手机操作系统。

因此,世界各地的程序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。

在此给出一个基于Android 的日历系统的完整实现过程。

关键词: Android;日历;记录;提醒1概述在日常工作中,特别强调时间的重要性,需要完成的事情也越来越多,因此对日历的需求也是巨大的,由于在日常生活中我们不可能将随身携带,我们可以将软件做到移动终端,在此情形下,基于andriod的技术带有记事功能的日历就诞生。

要实现的日历除了常规的日历功能外,还可以显示与当前日期相关的信息,如今天是今年的第几周等等。

效果如图1、图2 所示。

图1 在手机上所显示的日历图标图2 日历的主界面2 总体设计对于andriod的开发的日历的应该一开始显示日历,然后登陆,进行记事,主要流程图如下:3详细设计3.1、绘画基础由于实现的日历系统要涉及文本技术,因此,要简单介绍Android 的文本技术。

通常在Android.view.View 或其子类的onDraw 方法中进行。

该方法的定义如下:protected void onDraw(Canvas canvas);其中Canvas 对象提供了大量用于绘图的方法,这些方法主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成复杂图形的基本元素。

如果要画更复杂的图形,可以采用组合这些图形基本元素的方式来完成,下面来看一下文本基本方法。

绘制text 指定的文本方法是:public native void drawText (String text, float x, float y, Paintpaint);绘制text 指定的文本。

文本中的每一个字符的起始坐标由pos 数组中的值决定方法是:public void drawPosText(String text, float[] pos, Paint paint);绘制text 指定的文本。

text 中的每一个字符的起始坐标由pos 数组中的值决定。

并且可以选择text 中的某一段连续的字符绘制的方法是:public void drawPosText(char[] text, int index, int count, float[] pos,Paint paint);参数的含义如下:(1) text: drawText 方法中的text 参数表示要绘制的文本。

drawPostText 方法中的text 虽然也表示要绘制的文本,但每一个字符的坐标需要单独指定。

如果未指定某个字符的坐标,系统会抛出异常。

(2) x:绘制文本的起始点的横坐标。

(3) y:绘制文本的起始点的纵坐标。

(4) index:选定的字符集合在text 数组中的索引。

(5) count:选定的字符集中字符个数。

3.2框架绘画从图2 可以看出,日历的上部是3 行文字,显示了当前日期的相关信息。

下面来看看如何布局显示这些文字的组件。

在日历主界面的上半部需要放置4 个组件, 1 个ImageView组件和3 个TextView 组件。

其中ImageView 组件用于显示左上角的图像。

3 个TextView 组件用于显示当前日期的信息。

由于目前还没有当前日期的信息。

因此,这3 个TextView组件暂时设置了固定的信息。

下面开始在main.xml 文件中设置这4 个组件。

在修改main.xml 文件的内容之前,先复制一个calendar.png 文件,作为日历的logo (修改AndroidManifest.xml 文件中的应用程序图标)。

建立一个Calendar 工程,并编写main.xml 文件。

<?xml version="1.0" encoding="utf-8"?><LinearLay out xmlns:android = "http://schemas.android.com/apk/res/android"android:orientation = "vertical" android:layout_width = "fill_parent"android:layout_height="fill_parent" android:background="@color/calendar_background" >< ! -- android:background = "@drawable/background" --><RelativeLayout android:id = "@ +id/calHeader" android:layout_width="fill_parent"android:layout_height="70dp"><ImageView android:id = "@ +id/ivLogo" android:src="@drawable/calendar_bak"android:layout_width="@dimen/logo_size" android:layout_height="@dimen/logo_size"android:layout_margin="@dimen/margin" /><LinearLayout android:layout_width="fill_parent"android:layout_height = "wrap_content" android:layout_toRightOf="@id/ivLogo"android:layout_marginTop = "@dimen/margin"android:orientation="vertical" ><TextView android:id = "@ +id/tvMsg1" android:layout_width="fill_parent"android:layout_height = "wrap_content"android:textColor="@color/text_color" /><TextView android:id = "@ +id/tvMsg2"android:layout_width="fill_parent"android:layout_height = "wrap_content"android:textColor="@color/text_color" /><TextView android:id = "@ +id/tvMsg3" android:layout_width="fill_parent"android:layout_height = "wrap_content"android:textColor="@color/text_color" /></LinearLayout></RelativeLayout></LinearLayout>下面在Main 类的Oncreate 方法中编写代码装载main.xml:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);LinearLayout mainLayout = (LinearLayout) getLayoutInflater().inflate(yout.main, null);setContentView(mainLayout);// 需要向mainLayout 中加入日历网络}在绘制日历之前,要先介绍一下日历绘制的方法。

虽然从底层技术来看,绘制日历是在onDraw 方法中完成的。

但在本系统中将要绘制的部分分成了很多块。

而这些要绘制的块都需要放在一个叫CalendarView 的类中,代码如下:public class CalendarView extends View{private Activity activity;@Overrideprotected void onDraw(Canvas canvas){}public CalendarView(Activity activity){super(activity);this.activity = activity;}}在编写完CalendarView 类后,需要在Main 类中定义该类的变量,并在onCreate 方法中创建类的对象实例,代码如下:private CalendarView calendarView;calendarView = new CalendarView(this);mainLayout.addView(calendarView);在前面已经介绍过,在本系统中会将要绘制的日历分成若干块,而每一块都需要有同样的接口,以便统一绘制它们。

因此,这些块都要实现一个CalendarElement 接口。

这些要绘制的块包括日历边框、网络、日历头等,而在CalendarElement 接口中有一个draw 方法。

相关文档
最新文档