国产91丝袜在线播放_偷拍亚洲色图_欧美精品久久一区二区_不卡日本视频

學術咨詢服務,正當時......期刊天空網是可靠的職稱論文與著作咨詢指導平臺!!!

Android系統基礎上的多功能日程表設計及實現

發布時間:所屬分類:科技論文瀏覽:1

摘 要: Android系統有著良好的用戶體驗,低廉的成本及高開發性得到了廣泛的應用。而日歷行程應用作為智能終端的出廠必備控件,更是Android系統中不可或缺的一部分,該系統是一個基于Android手機的日程管理系統,具有基本的活動日程安排功能,在日歷瀏覽中可突出顯示

  Android系統有著良好的用戶體驗,低廉的成本及高開發性得到了廣泛的應用。而日歷行程應用作為智能終端的出廠必備控件,更是Android系統中不可或缺的一部分,該系統是一個基于Android手機的日程管理系統,具有基本的活動日程安排功能,在日歷瀏覽中可突出顯示安排的日期。為了加強提醒效果,該系統設計了只有完成指定小游戲后才能關閉提醒功能。

  關鍵詞:課程表,日程表,鬧鐘提醒

系統設計

  1 背景

  隨著移動互聯網的高速發展,人們已經無法離開移動終端,智能手機也已經越來越普及,對人們的生活產生了巨大的影響,人們可以隨時隨地使用手機,隨時隨地來查看信息,隨時隨地用來上網等,當然也急需青春地了解到自己每天所需要完成的事情,或是需要記錄一些容易忘記的重要事件,并能有一個功能完善的軟件來幫助人們完成這些事情。在這樣的大背景下,基于安卓平臺的日歷行程系統軟件也逐漸進入安卓開發者的視野中[1]。

  2 多功能日程表應用設計

  2.1 多功能日程表總體設計

  設計并實現一款基于Android平臺的日歷行程系統,具備基本的日期顯示功能;能夠設置課程安排等;并提供發布日記功能,鬧鐘提醒等功能。如圖1。

  2.2 多功能日程表功能介紹

  該應用中主頁面導航欄包含日記、課程表、代辦事項、日歷等四部分,菜單欄目區域有設置,邀請好友、鬧鐘、登陸退出功能等。如圖2。

  用戶點擊軟件圖標,打開軟件,注冊登錄后:

  1)可以看見當前日記

  2)用戶可以單擊手機上的菜單按鈕,選擇不同的功能,包括設置,邀請好友,鬧鐘,退出等功能。

  4) 用戶可以點擊下方導航欄按鈕進行選擇功能,包括日記,課程表,代辦,日歷等。

  4)用戶可以在日記選擇按鈕中發布刪除日記,在課程表中添加設置課程安排,在代辦中查看設置自己的行程和鬧鐘,在日歷中查看當前日期。

  5)用戶添加了代辦事項,啟動的提醒服務后,只有完成指定小游戲才能將其關閉。

  3 多功能日程表應用實現

  該系統采用java編寫,Android studio開發。使用MVC模式架構,數據庫為SQLite[2]

  使用了Material Design、Fragment+ViewPager+RadioButton、CardView、CalendarView等框架或部分自定義view開發。

  3.1 使用Fragment+ViewPager + RadioButton 來構造導航欄

  ViewePager是一個頁面切換組件,我們可以在里面添加多個View。可以通過觸摸屏幕左右滑動的方式來切換不同的View,當然也可以通過RadioButton的狀態標記來跳轉至不同的View。另外,ViewePager是有著自己特定的Adapter--FragmentPagerAdapter,我們只需重寫FragmentPagerAdapter里的方法就能進行使用了[3]。

  3.2 鬧鐘提醒功能的創建

  我們需要調用AlarmManager.set()來把鬧鐘時間記錄到系統里,這樣,當到達設定的鬧鐘時間時,系統會給程序發送一段廣播,所以,我們還需要通過復寫onReceive()創建一個廣播接收器。最后,別忘了在Manifest把剛寫好的廣播接收器給注冊了[4]。

  3.3 使用Calendarview構建日歷

  日歷視圖(Calendarview)可用于顯示和選擇日期,用戶既可選擇一個日期,也可通過觸摸來滾動日歷。如果希望該控件的日期改變,可調用CalendarView的setOnDateChangeListener()方法來為此組件的點擊事件添加監聽器[5]

  public class CalendarFragments extends Fragment implements OnMonthChangedListener,OnDateSelectedListener{

  private View layout;

  private LayoutInflater mInflater;

  private MaterialCalendarView mCalendarView;

  private static final DateFormat FORMATTER = SimpleDateFormat.getDateInstance();

  private TextView mTv2;

  private Alarm alarm;

  @Override

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

  initUI(inflater, container);

  return layout;}

  private void initUI(LayoutInflater inflater, ViewGroup container) {

  if(layout==null){

  mInflater=inflater;

  layout = inflater.inflate(R.layout.fragments_calendar, container, false);

  findview();

  initData(); } }

  @Override

  public void onStart() {

  // TODO Auto-generated method stub

  super.onStart();

  Calendar instance2 = Calendar.getInstance();

  CalendarDay date = CalendarDay.from(instance2.get(Calendar.YEAR), instance2.get(Calendar.MONTH),instance2.get(Calendar.DAY_OF_MONTH));

  mCalendarView.setSelectedDate(date);

  alarm = getNext();

  if(null!=alarm){

  Calendar c = Calendar.getInstance();

  if(c.get(Calendar.YEAR)==alarm.getAlarmTime().get(Calendar.YEAR)&&

  c.get(Calendar.MONTH)==alarm.getAlarmTime().get(Calendar.MONTH)&&

  c.get(Calendar.DAY_OF_MONTH)==alarm.getAlarmTime().get(Calendar.DAY_OF_MONTH)){

  mTv2.setText(alarm.getAlarmName());

  }else{mTv2.setText("今天活動已超時或者無任何活動"); }

  }else{mTv2.setText("今天活動已超時或者無任何活動"); } }

  private void initData() {

  mCalendarView.setSelectionColor(getActivity().getResources().getColor(R.color.main_background));

  Calendar instance2 = Calendar.getInstance();

  CalendarDay date = CalendarDay.from(instance2.get(Calendar.YEAR), instance2.get(Calendar.MONTH),instance2.get(Calendar.DAY_OF_MONTH));

  mCalendarView.setSelectedDate(date);

  mCalendarView.state().edit().setCalendarDisplayMode(CalendarMode.MONTHS).commit();

  mCalendarView.setTopbarVisible(true);

  mCalendarView.setOnDateChangedListener(this);

  mCalendarView.setOnMonthChangedListener(this);

  alarm = getNext();

  if(null!=alarm){

  Calendar c = Calendar.getInstance();

  if(c.get(Calendar.YEAR)==alarm.getAlarmTime().get(Calendar.YEAR)&&

  c.get(Calendar.MONTH)==alarm.getAlarmTime().get(Calendar.MONTH)&&

  c.get(Calendar.DAY_OF_MONTH)==alarm.getAlarmTime().get(Calendar.DAY_OF_MONTH)){

  mTv2.setText(alarm.getAlarmName());

  }else{mTv2.setText("今天活動已超時或者無任何活動"); }

  }else{mTv2.setText("今天活動已超時或者無任何活動"); } }

  private void findview() {

  mCalendarView = (MaterialCalendarView) layout.findViewById(R.id.calendarView);

  mTv2 = (TextView) layout.findViewById(R.id.textView2);

  }

  3.4 繪制一個課程表

  先使用多個LinearLayout布局嵌套來會出課程表表格,再通過使用Fragment來動態加對應的內容并設置對應的點擊事件即可

  //初始化課程表

  private void initWeekCourseView() {

  for (int i = 0; i < mWeekViews.size(); i++) {

  initWeekPanel(mWeekViews.get(i), getCourseData()[i]); } }

  //添加課程表

  private void addWeekCourseView() {

  for (int i = 0; i < mWeekViews.size(); i++) {

  initWeekPanel(mWeekViews.get(i), getSingleData()[i]); } }

  //頂部周一到周日的布局

  private void initWeekNameView() {

  for (int i = 0; i < mWeekViews.size() + 1; i++) {

  TextView tvWeekName = new TextView(getActivity());

  LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

  ll.gravity = Gravity.CENTER | Gravity.CENTER_HORIZONTAL;

  if (i != 0) {

  ll.weight = 1;

  tvWeekName.setText("周" + intToZH(i));

  if (i == getWeekDay()) {

  tvWeekName.setTextColor(Color.parseColor("#FF0000"));

  } else {

  tvWeekName.setTextColor(Color.parseColor("#4A4A4A")); }

  } else {

  ll.weight = 0.8f;

  tvWeekName.setText(getMonth() + "月"); }

  tvWeekName.setGravity(Gravity.CENTER_HORIZONTAL);

  tvWeekName.setLayoutParams(lp);

  weekNames.addView(tvWeekName); } }

  // 左邊節次布局,設定每天最多12節課

  private void initSectionView() {

  for (int i = 1; i <= maxSection; i++) {

  TextView tvSection = new TextView(getActivity());

  LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, getResources().getDimensionPixelSize(R.dimen.sectionHeight));

  ll.gravity = Gravity.CENTER;

  tvSection.setGravity(Gravity.CENTER);

  tvSection.setText(String.valueOf(i));

  tvSection.setLayoutParams(lp);

  sections.addView(tvSection); } }

  //當前星期

  public int getWeekDay() {

  int w = Calendar.getInstance().get(Calendar.DAY_OF_WEEK) - 1;

  if (w <= 0) {w = 7;} return w;}

  //當前月份

  public int getMonth() {

  int w = Calendar.getInstance().get(Calendar.MONTH) + 1;

  return w; }

  // 每次刷新前清除每個LinearLayout上的課程view

  private void clearChildView() {

  for (int i = 0; i < mWeekViews.size(); i++) {

  if (mWeekViews.get(i) != null)

  if (mWeekViews.get(i).getChildCount() > 0)

  mWeekViews.get(i).removeAllViews(); } }

  4 結束語

  該次開發的日歷行程系統可以在安卓平臺上平穩運行,實現了原來計劃的多有功能,可以查詢日期以及其他功能。而且還有日期管理功能。對于行程鬧鐘的管理,系統也有相應的應對功能;對于日期的管理,可以設置相應的跳轉功能,也可以指定日期提醒,設備備忘錄等。該系統人機界面良好,操控性能好。

  參考文獻:

  [1] 郭霖. 第一行代碼Android[M].2版. 北京: 人民郵電出版社, 2014.

  相關范文閱讀:單片機在自動控制系統設計中的應用

  在自動控制系統設計中,單片機占據核心地位,由于單片機具備可編程的特點,可以簡單、快速的實現自動化控制。下面文章就是以電機設備為研究背景,分析單片機在自動控制系統設計中的應用。

  關鍵詞:單片機,自動控制系統,設計

  

最新分區查詢入口
国产91丝袜在线播放_偷拍亚洲色图_欧美精品久久一区二区_不卡日本视频
午夜欧美不卡精品aaaaa| 欧美一区二区三区视频免费| 亚洲伦理网站| 一本色道综合亚洲| 久久精品国产综合精品| 一区二区三区www| 国产精品视频大全| 欧美精品97| 国产精品s色| 亚洲精品在线一区二区| 午夜精品久久| 欧美一级片久久久久久久| 久久夜色撩人精品| 欧美视频你懂的| 国产专区一区| 国产在线精品成人一区二区三区| 国产精品视频福利| 国产亚洲激情视频在线| 91久久精品美女高潮| 亚洲卡通欧美制服中文| 亚洲欧美综合一区| 亚洲黄页一区| 欧美极品aⅴ影院| 欧美日韩视频不卡| 久久精品视频在线看| 亚洲综合精品一区二区| 一区二区三区国产在线观看| 嫩模写真一区二区三区三州| 亚洲国产精品国自产拍av秋霞 | 久久综合给合| 一区二区三区国产| 欧美一区二区三区在线观看 | 91久久久久久久久| 欧美精品自拍偷拍动漫精品| 亚洲精品在线视频| 激情久久久久| 玖玖视频精品| 亚洲精品在线观看免费| 欧美久色视频| 国产精品成人一区二区三区夜夜夜 | 欧美一级网站| 美女网站在线免费欧美精品| 欧美.www| 久久国产视频网| 亚洲在线视频| 欧美高清视频| 一区二区三区无毛| 亚洲国产日韩精品| 午夜精品久久久99热福利| 欧美精品在线一区| 亚洲与欧洲av电影| 国产精品尤物| 99爱精品视频| 欧美日韩国产综合网 | 欧美~级网站不卡| 在线成人黄色| 国产欧美一区在线| 亚洲欧美在线免费| 亚洲免费大片| 亚洲精品久久久久久一区二区| 韩国欧美一区| 国产精品三上| 一区二区三区在线看| 亚洲欧美色婷婷| 国产精品尤物福利片在线观看| 国产亚洲欧美一级| 国产欧美日韩一区| 欧美日韩成人免费| 欧美日韩在线播放| 久久99在线观看| 91久久久久久久久久久久久| 久久深夜福利免费观看| 国产乱肥老妇国产一区二 | 国产欧美日本一区二区三区| 欧美成人一区二区在线| 久热精品视频在线| 亚洲视频一区二区免费在线观看| 午夜精品美女久久久久av福利| 国产精品久久一级| 亚洲欧美日韩视频一区| 国产在线拍揄自揄视频不卡99| 亚洲素人一区二区| 国产精品有限公司| 香蕉成人久久| 亚洲国产合集| 欧美日韩国产丝袜另类| 亚洲私人影院| 国产精品一区2区| 国产欧美日韩综合一区在线观看 | 亚洲免费在线| 欧美色道久久88综合亚洲精品| 亚洲制服av| 亚洲人成欧美中文字幕| 国产精品入口日韩视频大尺度| 欧美日韩亚洲一区| 亚洲黄色av| 欧美日韩视频在线一区二区观看视频 | 欧美在线日韩精品| 一区二区在线观看av| 美女黄网久久| 先锋a资源在线看亚洲| 在线日韩av片| 国产日韩欧美一区| 欧美精品粉嫩高潮一区二区 | 欧美日本不卡高清| 午夜日韩视频| 午夜精品在线看| 99精品久久久| 亚洲免费一在线| 亚洲视频日本| 久久久99久久精品女同性| 欧美在线观看一区| 麻豆精品传媒视频| 欧美另类视频在线| 国产精品日本精品| 国产精品系列在线| 曰韩精品一区二区| 亚洲视频网站在线观看| 国产精品久久久久久久久久久久久久 | 亚洲免费在线视频| 亚洲制服av| 欧美一区二区三区精品电影| 狠狠色综合网| 在线观看91精品国产入口| 国模私拍一区二区三区| 在线观看亚洲精品| 亚洲午夜精品久久久久久浪潮| 欧美一级成年大片在线观看| 久久久夜色精品亚洲| 国产精品成人一区二区艾草| 国内精品久久久| 欧美一区二区在线| 欧美视频网址| 欧美剧在线免费观看网站| 国产精品永久| 亚洲午夜精品一区二区三区他趣| 久久成人免费网| 国产精品qvod| 亚洲视频香蕉人妖| 欧美成人综合| 91久久精品美女高潮| 欧美日韩麻豆| 亚洲欧美日韩视频一区| 久久资源在线| 狠狠做深爱婷婷久久综合一区| 国内精品久久国产| 午夜精品久久久久| 国产酒店精品激情| 亚洲永久免费av| 国产欧美综合一区二区三区| 在线看片欧美| 在线成人亚洲| 国产欧美精品va在线观看| 欧美精品在线视频| 欧美~级网站不卡| 欧美成人四级电影| 欧美喷水视频| 国产精品99免视看9| 欧美日韩亚洲免费| 国产精品麻豆欧美日韩ww | 亚洲欧美一区二区三区在线 | **性色生活片久久毛片| 在线看不卡av| 在线视频国产日韩| 亚洲丁香婷深爱综合| 亚洲激情视频| 日韩网站在线观看| 亚洲免费婷婷| 男女激情视频一区| 国产精品免费网站| 在线播放一区| 一区二区三区国产精华| 亚洲免费视频成人| 麻豆久久婷婷| 国产精品美女xx| 亚洲第一免费播放区| 国产精品99久久久久久白浆小说| 亚洲女ⅴideoshd黑人| 欧美在线精品免播放器视频| 欧美www视频| 国内自拍一区| 欧美国产免费| 国产婷婷色一区二区三区| 亚洲精品欧洲| 久久亚洲精品一区二区| 国产精品久久久一区麻豆最新章节| 国产在线欧美| 亚洲一区在线视频| 欧美电影免费观看高清完整版| 国产精品一区二区久久久| 日韩视频精品| 欧美精品在线观看91| 亚洲黄色免费电影| 欧美aa国产视频| 欧美成人性生活| 影音先锋日韩资源| 久久深夜福利免费观看| 国产精品久久一卡二卡| 亚洲天堂偷拍| 国产精品久久久99|