基于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 方法中编写代码装载 : public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 LinearLayout mainLayout = (LinearLayout) getLayoutInflater(). inflate(, null)。 setContentView(mainLayout)。 // 需要向 mainLayout 中加入日历网络 } 在绘制日历之前 , 要先 说明 一下日 历绘制的方法。 虽然从底层技术来看 , 绘制日历是在 onDraw 方法中完成的。 但在本系统中将要绘制的部分分成了很多块。 而这些要绘制的块都需要放在一个叫 CalendarView 的类中 , 代码如下 : public class CalendarView extends View { private Activity activity。 @Override protected void onDraw(Canvas canvas) {} public CalendarView(Activity activity) { super(activity)。 = activity。 } } 在编写完 CalendarView 类后 , 需要在 Main 类中定义该类的变量 , 并 在 基于 Android 的日程管理的设计和实现 12 onCreate 方法中创建类的对象实例 , 代码如下 : private CalendarViewcalendarView。 calendarView = new CalendarView(this)。 (calendarView)。 在前面已经介绍过 , 在本系统中会将要绘制的日历分成若干块 , 而每一块都 需要有同样的接口 , 以便统一绘制它们。 因此 , 这些块都要实现一 个 CalendarElement 接口。 这些要绘制的块包括日历边框 、 网络 、 日历头等 , 而在 CalendarElement 接口中有一个 draw 方法。 在绘制日历元素时只需调 用 draw 方法即可。 在后面的实现中会看到更多实现 CalendarElement 接口的类 , 下面先来编 写CalendarElement 接口。 package。 import。 public interface CalendarElement { public void draw(Canvas canvas)。 } package。 import。 public interface CalendarElement { public void draw(Canvas canvas)。 } 现在需要一个总的类来绘制上述的这些块。 这个功能由 Calendar 类来完成。 Calendar是一个总的日 历元素类 , 在该类的 draw方法中绘制了所有的日历元素。 Calendar 是第一个实现 CalendarElement 接口的类 , 代码如下 : public class Calendar extends CalendarParent { // elements 用于保存多功能日历中所有的日历元素 private ArrayList CalendarElement elements = new ArrayListCalendarElement()。 public Calendar(Activity activity, View view) { super(activity, view)。 } @Override public void draw(Canvas canvas) { // 在 draw 方法中通过扫描 elements 变量来获得所 //有日历元素的对象 , 并调用 draw 方法绘制这些日历元素 for (CalendarElement ce : elements) (canvas)。 } } 在 CalendarView 类中需要调用 Calendar 类来绘制日历 , 因此 , 需要 在 基于 Android 的日程管理的设计和实现 13 CalendarView 类中创建 Calendar 类的对象实例 , 并调用 draw 进行绘制 , 代码如下 : public Calendar ce。 @Override protected void onDraw(Canvas canvas) { (canvas)。 } public CalendarView(Activity activity) { ce = new Calendar(activity, this)。 } 下面编写第一个绘制元素类 : Border。 Border 类用于绘制日历的边框 , 该类是日历元素类 , 需要实现 CalendarElement 接口 , 不过该类只要继承刚实现的CalendarParent 类即可。 public class Border extends CalendarParent { public Border(Activity activity, View view) { super(activity, view)。 // 注意 , 一定要 4 个字节的颜色值 , 包括一个透明色 (0xFFFFFFFF)。 } @Override public void draw(Canvas canvas) { float left = borderMargin。 float top = borderMargin。 float right = () left。 float bottom = () top。 (left, top, right, top, paint)。 (right, top, right, bottom, paint)。 (right, bottom, left, bottom, paint)。 (left, bottom, left, top, paint)。 (draw,(right))。 } } Grid 类用于绘制日历的网格 , 该类是日历元素类 , 需要继承 CalendarParent类。 public class Grid extends CalendarParent { private float top, left。 @Override public void draw(Canvas canvas) 基于 Android 的日程管理的设计和实现 14 { left = borderMargin。 top = borderMargin + weekNameSize + weekNameMargin * 2 + 4。 float calendarWidth = () left * 2。 float calendarHeight = () top borderMargin。 float cellWidth = calendarWidth / 7。 float cellHeight = calendarHeight / 6。 (0xFFFFFFFF)。 (left, top, left + () borderMargin * 2, top, paint)。 (0xFF666666)。 // 画横线 for (int i = 1。 i 6。 i++) { (left, top + (cellHeight) * i, left + calendar Width, top + (cellHeight) * i, paint)。 } // 画竖线 for (int i = 1。 i 7。 i++) { (left + cellWidth * i, top, left + cellWidth * i, () borderMargin, paint)。 }} public Grid(Activity activity, View view) { super(activity, view)。 // TODO Autogenerated constructor stub }} Week 类用于显示日历网格上方的星期文本 : public class Week extends CalendarParent { private String[] weekNames = new String[] { 日 , 一 , 二 , 三 , 四 , 五 , 六 }。 private int weekNameColor。 public Week(Activity activity, View view) { super(activity, view)。 weekNameColor =。 (weekNameSize)。 } @Override 基于 Android 的日程管理的设计和实现 15 public void draw(Canvas canvas) { float left = borderMargin。 float top = borderMargin。 float everyWeekWidth = ( () borderMargin * 2) / 7。 (true)。 for (int i = 0。 i。 i++) { if (i == 0 || i == 1) (sundaySaturdayColor)。 else (weekNameColor)。 left = borderMargin + everyWeekWidth * i + (everyWeekWidth (weekNames [i])) / 2。 (weekNames[i], left, top + ()+ weekNameMargin, paint)。 }}} 前面 说明 了绘制日历的基本方法 , 现在 说明 日历系统的核心技术。 在 Grid 类中的 days数组保存了 42 个数字。 这 42 个数字就是日历主界面中的 6*7 个方格中的数字。 这些数字分为两部分 , 中间的部分就是当前月中的天数。 这些天数最小是 28天 , 最大是 31 天。 在这组数字的前后可以包含了上月的部分月末天数和下月部分月初天数。 当单击或触摸上月或下月的天数时 , 日历会跳到上月或下月。 这里说明 如何将这些数字绘制到这 42个方格中。 为了区别这两类数字。 将在上月和下月的相应天数中加星号 ( *), 代码如下 : private String[] days = new String[42]。 public int currentYear, currentMonth。 public int currentDay = 1, currentDay1 = 1, currentDayIndex = 1。 private calendar = . getInstance()。 在 Grid 类的构造方法中初始化变量的代码如下 : currentYear = ()。 currentMonth = ()。 下面来编写一个 getMonthDays 方法 , 该方法用来获得指定月份的天数。 这个方法也是绘制指定月份的日历的基础 , 代码如下 : private int。基于android的日程管理的设计和实现
相关推荐
层数据流图 数据流 0层图体现了系统的主要功能框架,本系统的 0 层图如图 8所示: 客 客 客 客 客客 客 客 客客 客客 客 客 客 客 客 客 客客 客 客 客客 客 客 客客 客客 客 客 客 客 客 客 客 客 客 客 客客 客客 客客 客 客 客客 客 客 客客 客 客客 客 客客客客客客客 客客 客客 客 客 客客 客客客客客客客 客图 8 一层数据流图 13
的 Java 程序设计语言和Java 平台的总称 [5]。 Java 语言是 Android 开发人员所选的工具。 Android 运行时使用自己的虚拟机 Dalvik,这并不是多数程序开发人员使用的普通 Java 虚拟机。 Dalvik 支持 Java 编程语言的大部分功能 — 但并不是全部 [6]。 Eclipse 是一个开放源代码的、基于 Java 的可扩 展开发平台。 就其本身而言
书架编号 bookcaseName varchar 80 否 书架名称 ( 4)图书信息表 tb_bookInfo,如表 34 所示。 不同的图书,会有不同的图书信息。 对这些图书信息进行详细的记录,方便了图书的分类和查询。 图书信息实体,用于存储所有图书的相关信息。 表 34 图书信息表 字段名 数据类型 长度 主键否 描述 bookBarCode varchar 100 是 图书条形码
( 3) 日历显示 本系统可以 生成 1900 年至 2100 年这 201 年的公历和农历之间的对应日期并且以日历的形式显示出来, 当 用户添加的日程信息 后 可以在日历 界面 上清晰的标注出来,让用户对日程信息一目了然给,同时也方便用户的查询和修改。 ( 4) 用户管理 每个用户 都 拥有 自己 的账号,用以向数据库服务器进行身份验证,并方便数据库服务器分类管理每个用户的日程信息
国外购买先进技术,高额的投资、合理的管理往往会得到更大的利润。 企业的技术手段也已经由简单落后转变成高科技与人工手段结合,进而将更多的高科技产品应用到零售业。 国内 推行 WMS 的条件日益成熟。 物流行业在过去的两年里随着国家经济的发展而日新月异,现代一体化物流的管理思想逐渐被企业所接受和认同,管理人员对仓库也有了新的定位与认识,从而对管理系统也提出了新的要求 [4]。
免因噪声干扰而死机。 XTAL1 和 XTAL2 口引出外围的晶振电路为单片机工作提系统时钟,本设计中设置单片机的晶振 为 12MHz。 RESET: AT89S52 的 重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间, AT89S51 便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设 成已知状态,并且至地址 0000H