亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的多功能日程表設(shè)計(jì)與實(shí)現(xiàn)

        2018-07-12 09:37:50莊云曉張錦邦朱浩文荀浩堅(jiān)莊龍威賴嘉杰張家豪
        電腦知識(shí)與技術(shù) 2018年14期
        關(guān)鍵詞:日程表課程表

        莊云曉 張錦邦 朱浩文 荀浩堅(jiān) 莊龍威 賴嘉杰 張家豪

        摘要:Android系統(tǒng)憑借的良好的用戶體驗(yàn),低廉的成本及高開發(fā)性產(chǎn)生了巨大的應(yīng)用量和廣闊的應(yīng)用面。而日歷行程應(yīng)用作為智能終端的出廠必備控件,更是Android系統(tǒng)中不可或缺的一部分,該系統(tǒng)是一個(gè)基于Android手機(jī)的日程管理系統(tǒng),具有基本的活動(dòng)日程安排功能,在日歷瀏覽中可突出顯示安排的日期。為了加強(qiáng)提醒效果,該系統(tǒng)設(shè)計(jì)了只有完成指定小游戲后才能關(guān)閉提醒功能。

        關(guān)鍵詞:課程表;日程表;鬧鐘提醒

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)14-0103-03

        Abstract:Android system with a good user experience, low cost and high development has generated a huge amount of applications and a wide range of applications. The calendar itinerary application is an essential control of the intelligent terminal, and it is an integral part of the Android system. This system is a schedule management system based on the Android mobile phone and has a basic event scheduling function, which can be highlighted in the calendar browsing. Shows the scheduled date. In order to strengthen the reminder effect, this system is designed to close the reminder function only after completing the designated mini-game.

        Key words:curriculum; schedule; alarm reminder

        1 背景

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

        2 多功能日程表應(yīng)用設(shè)計(jì)

        2.1 多功能日程表總體設(shè)計(jì)

        設(shè)計(jì)并實(shí)現(xiàn)一款基于Android平臺(tái)的日歷行程系統(tǒng),具備基本的日期顯示功能;能夠設(shè)置課程安排等;并提供發(fā)布日記功能,鬧鐘提醒等功能。如圖1。

        2.2 多功能日程表功能介紹

        該應(yīng)用中主頁(yè)面導(dǎo)航欄包含日記、課程表、代辦事項(xiàng)、日歷等四部分,菜單欄目區(qū)域有設(shè)置,邀請(qǐng)好友、鬧鐘、登陸退出功能等。如圖2。

        用戶點(diǎn)擊軟件圖標(biāo),打開軟件,注冊(cè)登錄后:

        1)可以看見當(dāng)前日記

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

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

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

        5)用戶添加了代辦事項(xiàng),啟動(dòng)的提醒服務(wù)后,只有完成指定小游戲才能將其關(guān)閉。

        3 多功能日程表應(yīng)用實(shí)現(xiàn)

        該系統(tǒng)采用java編寫,Android studio開發(fā)。使用MVC模式架構(gòu),數(shù)據(jù)庫(kù)為SQLite[2]

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

        3.1 使用Fragment+ViewPager + RadioButton 來(lái)構(gòu)造導(dǎo)航欄

        ViewePager是一個(gè)頁(yè)面切換組件,我們可以在里面添加多個(gè)View??梢酝ㄟ^(guò)觸摸屏幕左右滑動(dòng)的方式來(lái)切換不同的View,當(dāng)然也可以通過(guò)RadioButton的狀態(tài)標(biāo)記來(lái)跳轉(zhuǎn)至不同的View。另外,ViewePager是有著自己特定的Adapter--FragmentPagerAdapter,我們只需重寫FragmentPagerAdapter里的方法就能進(jìn)行使用了[3]。

        3.2 鬧鐘提醒功能的創(chuàng)建

        我們需要調(diào)用AlarmManager.set()來(lái)把鬧鐘時(shí)間記錄到系統(tǒng)里,這樣,當(dāng)?shù)竭_(dá)設(shè)定的鬧鐘時(shí)間時(shí),系統(tǒng)會(huì)給程序發(fā)送一段廣播,所以,我們還需要通過(guò)復(fù)寫onReceive()創(chuàng)建一個(gè)廣播接收器。最后,別忘了在Manifest把剛寫好的廣播接收器給注冊(cè)了[4]。

        3.3 使用Calendarview構(gòu)建日歷

        日歷視圖(Calendarview)可用于顯示和選擇日期,用戶既可選擇一個(gè)日期,也可通過(guò)觸摸來(lái)滾動(dòng)日歷。如果希望該控件的日期改變,可調(diào)用CalendarView的setOnDateChangeListener()方法來(lái)為此組件的點(diǎn)擊事件添加監(jiān)聽器[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("今天活動(dòng)已超時(shí)或者無(wú)任何活動(dòng)"); }

        }else{mTv2.setText("今天活動(dòng)已超時(shí)或者無(wú)任何活動(dòng)"); } }

        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("今天活動(dòng)已超時(shí)或者無(wú)任何活動(dòng)"); }

        }else{mTv2.setText("今天活動(dòng)已超時(shí)或者無(wú)任何活動(dòng)"); } }

        private void findview() {

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

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

        }

        3.4 繪制一個(gè)課程表

        先使用多個(gè)LinearLayout布局嵌套來(lái)會(huì)出課程表表格,再通過(guò)使用Fragment來(lái)動(dòng)態(tài)加對(duì)應(yīng)的內(nèi)容并設(shè)置對(duì)應(yīng)的點(diǎn)擊事件即可

        //初始化課程表

        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); } }

        // 左邊節(jié)次布局,設(shè)定每天最多12節(jié)課

        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); } }

        //當(dāng)前星期

        public int getWeekDay() {

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

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

        //當(dāng)前月份

        public int getMonth() {

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

        return w; }

        // 每次刷新前清除每個(gè)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 結(jié)束語(yǔ)

        該次開發(fā)的日歷行程系統(tǒng)可以在安卓平臺(tái)上平穩(wěn)運(yùn)行,實(shí)現(xiàn)了原來(lái)計(jì)劃的多有功能,可以查詢?nèi)掌谝约捌渌δ?。而且還有日期管理功能。對(duì)于行程鬧鐘的管理,系統(tǒng)也有相應(yīng)的應(yīng)對(duì)功能;對(duì)于日期的管理,可以設(shè)置相應(yīng)的跳轉(zhuǎn)功能,也可以指定日期提醒,設(shè)備備忘錄等。該系統(tǒng)人機(jī)界面良好,操控性能好。

        參考文獻(xiàn):

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

        [2] 馬獲蕾, 湯海鳳. Android系統(tǒng)中SQLite數(shù)據(jù)庫(kù)的研究[J]. 電腦知識(shí)與技術(shù), 2013(28): 6243-6245.

        [3] 雷學(xué)鋒. Android中ViewPager+Fragment+GridView的混合應(yīng)用[J]. 科技廣場(chǎng), 2017(5): 64-67.

        [4] 潘志宏, 羅偉斌, 駱金維, 等. 基于Android的智能生日提醒軟件的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦開發(fā)與應(yīng)用, 2013, 26(7): 50-53.

        [5] 李寧. 實(shí)現(xiàn)基于Android的日歷系統(tǒng)[J]. 電腦編程技巧與維護(hù), 2011(5): 24-32.

        猜你喜歡
        日程表課程表
        課程表
        超萌小鹿課程表
        童話世界(2019年17期)2019-07-04 15:15:36
        中國(guó)注冊(cè)會(huì)計(jì)師協(xié)會(huì)2019年注冊(cè)會(huì)計(jì)師培訓(xùn)課程表
        “孔子曰”之孔子的課程表
        青年課程表
        金色年華(2016年8期)2016-02-28 01:39:58
        黑馬學(xué)院2015年下半年超級(jí)課程表
        第十三屆中國(guó)戲劇節(jié)演出日程表
        日程表
        汽車觀察(2009年6期)2009-12-07 03:38:10
        日程表
        汽車觀察(2009年8期)2009-09-24 06:43:52
        日程表
        汽車觀察(2009年7期)2009-08-12 04:58:18
        欧美日韩一线| а天堂中文在线官网| 欧美孕妇xxxx做受欧美88| 国产偷国产偷亚洲欧美高清| av免费观看在线网站| 亚洲一区二区三区特色视频| 18禁真人抽搐一进一出在线| 女同亚洲女同精品| 日本高清不卡一区二区三区| 亚洲综合日韩一二三区| 成人毛片无码一区二区三区| 国产精品第1页在线观看| 日韩精品极品视频在线免费| 亚洲精品视频中文字幕| 国产成人亚洲精品| 免费一级毛片麻豆精品| 精品一区二区三区女同免费| 华人免费网站在线观看| 无码日韩精品一区二区三区免费| 色综合另类小说图片区| 日本美女性亚洲精品黄色| www夜片内射视频在观看视频 | 亚洲av乱码国产精品色| 中文字幕一区久久精品| 国产精品久久久久久久妇| 热久久久久久久| 白白白色视频在线观看播放 | 国产黑丝美腿在线观看| 亚洲小说区图片区另类春色| 亚洲大片免费| 亚洲性日韩一区二区三区| 97在线视频免费人妻| 人妻在卧室被老板疯狂进入国产| 国产精品一区二区av白丝在线| 国产精品国产三级国产专播下 | аⅴ天堂一区视频在线观看| 美女被黑人巨大入侵的的视频| 人妻av无码一区二区三区| 免费观看国产精品| 日美韩精品一区二区三区| 蜜桃av精品一区二区三区|