最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android自定義定時鬧鐘開發(fā)

 更新時間:2022年09月11日 10:38:52   作者:Dream_fan  
這篇文章主要為大家詳細(xì)介紹了Android自定義定時鬧鐘開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android開發(fā)之自定義鬧鐘實現(xiàn),供大家參考,具體內(nèi)容如下

鬧鐘時間設(shè)置及顯示

鬧鐘的布局很簡單,就是一個簡單時間設(shè)置,所以自己寫一個簡單的布局按鈕之類的也可以了,不過多贅述。另外使用時間對話框TimePickerDialog 去設(shè)置時間,用Calendar可獲取當(dāng)前系統(tǒng)的時間。AlertDialog.THEME_HOLO_LIGHT是設(shè)置dialog的樣式,不設(shè)置的話就是一個默認(rèn)的圓形時鐘,設(shè)置這個之后是一個可滾動上下滑動的時鐘樣式。代碼展示:

//設(shè)置時間事件的點擊
Calendar c = Calendar.getInstance();
// 創(chuàng)建一個TimePickerDialog實例,并把它顯示出來。
new TimePickerDialog(mContext, ?AlertDialog.THEME_HOLO_LIGHT,
? ? ? // 綁定監(jiān)聽器
? ? ? (tp, hourOfDay, minute) -> {
? ? ? ? ? ?  try {
? ? ? ? ? ? ? ? if (hourOfDay > 22 || hourOfDay < 5) {
? ? ? ? ? ?? ? ? Toast.makeText(mContext,"23:00~04:59,要好好睡覺的,這是長身體的黃金時間哦~", Toast.LENGTH_LONG).show();
? ? ? ? ? ? ? ?? } else {
? ? ? ? //一個補(bǔ)全顯示的時間
? ? ? ? ? ? ? ? ? if(hourOfDay < 10 && minute > 10) {
? ? ? ? ? ? ? ? ? String times = "0" + hourOfDay + ":" + minute;
? ? ? ? ? ? ? ? ? tv_play.setText(times);
? ? ? ? ? ? ? ? ? }else if(minute < 10 && hourOfDay < 10) {
? ? ? ? ? ? ? ? ? String times = "0" + hourOfDay + ":" + ?"0"+ minute;
? ? ? ? ? ? ? ? ? tv_play.setText(times);
? ? ? ? ? ? ? ? ? } else if(minute < 10) {
? ? ? ? ? ? ? ? ? String times = hourOfDay + ":" + ?"0" + minute;
? ? ? ? ? ? ? ? ? tv_play.setText(times);
? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? String times = hourOfDay + ":" + minute;
? ? ? ? ? ? ? ?   tv_play.setText(times);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?  mDate = tv_play.getText().toString();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?} catch (Exception e) {
? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? }
? ? //設(shè)置初始時間
? ? ? ? , c.get(Calendar.HOUR_OF_DAY)
? ? ? ? , c.get(Calendar.MINUTE)
? ? ? //true表示采用24小時制
? , true).show();

默認(rèn)樣式

可滾動樣式

設(shè)定好的時鐘布局顯示,在這個主頁面上看個人喜歡怎樣的布局,可用listview或recycleview實現(xiàn)。在這里我使用的是recycleView+gridlayoutManager顯示網(wǎng)格布局,一行兩個卡片展示。使用適配器去匹配recycleview會更好,因為這樣操作方便且美觀。

鬧鐘增刪改查

sqlite是一個安卓自帶的輕量級數(shù)據(jù)庫。增刪改查都是對數(shù)據(jù)庫的操作行為,另外使用sqlite去存儲時鐘的數(shù)據(jù),就可以防止數(shù)據(jù)的丟失,因此可以在時鐘的基礎(chǔ)上做一個計劃提醒之類的,可以把計劃里的內(nèi)容存儲進(jìn)數(shù)據(jù)庫里,還有時間??梢栽诮?shù)據(jù)表的時候自帶一個自增的id,方便操作。數(shù)據(jù)庫的建表這些可以去搜索編寫,很簡單,因此不多贅述。

/**
?* 轉(zhuǎn)儲數(shù)據(jù),寫數(shù)據(jù)到數(shù)據(jù)庫中,增加數(shù)據(jù)
?* @param sqLiteDatabase 數(shù)據(jù)庫
?* @param context 內(nèi)容
?* @param repeat 重復(fù)
?* @param date 時間
?* @param count 時長
?*/
private void insertData(SQLiteDatabase sqLiteDatabase, String context, String repeat,
? ? ? ? ? ? ? ? ? ? ? ?String date, String count){
? ? try {
? ? ? ? ContentValues values = new ContentValues();
? ? ? ? values.put("context", context);
? ? ? ? values.put("repeat", repeat);
? ? ? ? values.put("time", date);
? ? ? ? values.put("count", count);
? ? ? ? sqLiteDatabase.insert("data",null, values);//新增功能
? ? } catch (Exception e) {
? ? ? ? e.printStackTrace();
? ? }
}

/**
?* 修改數(shù)據(jù),寫數(shù)據(jù)到數(shù)據(jù)庫中,增加數(shù)據(jù)
?* @param sqLiteDatabase 數(shù)據(jù)庫
?* @param context 內(nèi)容
?* @param repeat 重復(fù)
?* @param date 時間
?* @param count 時長
?*/
private void updateData(SQLiteDatabase sqLiteDatabase, String context, String repeat,
? ? ? ? ? ? ? ? ? ? ? ?String date, String count){
? ? try {
? ? ? ? ContentValues values = new ContentValues();
? ? ? ? values.put("context", context);
? ? ? ? values.put("repeat", repeat);
? ? ? ? values.put("time", date);
? ? ? ? values.put("count", count);
? ? ? sqLiteDatabase.update("data",values,"id=?",new String[]{String.valueOf(mId)});//修改功能
? ? } catch (Exception e) {
? ? ? ? e.printStackTrace();
? ? }
}
/**
?* 刪除數(shù)據(jù)庫中的數(shù)據(jù)
?* @param sqLiteDatabase 數(shù)據(jù)庫
?* @param id id
?*/
private void deleteData(SQLiteDatabase sqLiteDatabase, int id) {
? ? try {
? ? ? ? sqLiteDatabase.delete("data","id=?",new String[]{String.valueOf(id)});
? ? } catch (Exception e) {
? ? ? ? e.printStackTrace();
? ? }
}

鬧鐘開啟

在上面的布局里,可以看到有個按鍵,點擊它即可開啟鬧鐘提醒,關(guān)閉它即可關(guān)閉鬧鐘提醒。開啟鬧鐘的提示函數(shù)如下,將獲取的時間去與系統(tǒng)當(dāng)前時間比較,AlarmManager設(shè)置提醒。關(guān)閉鬧鐘就是一個簡單的AlarmManager取消行為。那個提醒類就是平時見到的那種簡單的dialog提醒,所以不再次贅述。

/**
?* 開啟鬧鐘
?* @param parent 父類
?* @param hour 小時
?* @param minute 分鐘
?* @param position 位置
?*/
private void startAlarm(ViewGroup parent, int hour, int minute, int position) {
? ? try {
? ? ? ? Calendar c = Calendar.getInstance();
? ? ? ? c.setTimeInMillis(System.currentTimeMillis());//獲取當(dāng)前時間
? ? ? ? //獲取當(dāng)前毫秒值
? ? ? ? long systemTime = System.currentTimeMillis();
? ? ? ? c.setTimeZone(TimeZone.getTimeZone("GMT+8"));//設(shè)置時區(qū)
? ? ? ? c.set(Calendar.HOUR_OF_DAY, hour);//設(shè)置幾點提醒
? ? ? ? c.set(Calendar.MINUTE, minute);//設(shè)置幾分提醒
? ? ? ? //獲取上面設(shè)置的時間
? ? ? ? long selectTime = c.getTimeInMillis();
? ? ? ? // 如果當(dāng)前時間大于設(shè)置的時間,那么就從第二天的設(shè)定時間開始
? ? ? ? if (systemTime > selectTime) {
? ? ? ? ? ? c.add(Calendar.DAY_OF_MONTH, 1);
? ? ? ? }
? ? ? ? /* 鬧鐘時間到了的一個提醒類 */
? ? ? ? Intent intent = new Intent(parent.getContext(), ListenerActivity.class);
? ? ? ? @SuppressLint("UnspecifiedImmutableFlag")
? ? ? ? PendingIntent pi = PendingIntent.getActivity(parent.getContext(), 0, intent, 0);
? ? ? ? //得到AlarmManager實例
? ? ? ? AlarmManager am = (AlarmManager)parent.getContext().getSystemService(ALARM_SERVICE);
? ? ? ? //重復(fù)提醒
? ? ? ? am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 60*60*1000*24, pi);
? ? } catch (Exception e) {
? ? ? ? e.printStackTrace();
? ? }
}
? ?/**
?* 關(guān)閉提醒
?* @param parent 父類
?*/
private void stopRemind(ViewGroup parent) {
? ? try {
? ? ? ? Intent intent = new Intent(parent.getContext(), ListenerActivity.class);
? ? ? ? @SuppressLint("UnspecifiedImmutableFlag")
? ? ? ? PendingIntent pi = PendingIntent.getActivity(parent.getContext(), 0,
? ? ? ? ? ? ? ? intent, 0);
? ? ? ? AlarmManager am = (AlarmManager)parent.getContext().getSystemService(ALARM_SERVICE);
? ? ? ? //取消提醒
? ? ? ? am.cancel(pi);
? ? ? ? Toast.makeText(parent.getContext(), "關(guān)閉了提醒", Toast.LENGTH_SHORT).show();
? ? ? ? Intent intents = new Intent("android.intent.action.BOOKCASE_RESTART");
? ? ? ? @SuppressLint("UnspecifiedImmutableFlag")
? ? ? ? PendingIntent pis = PendingIntent.getBroadcast(parent.getContext(), 0,
? ? ? ? ? ? ? ? intents, 0);
? ? ? ? AlarmManager ams = (AlarmManager)parent.getContext().getSystemService(ALARM_SERVICE);
? ? ? ? //取消提醒
? ? ? ? ams.cancel(pis);
? ? } catch (Exception e) {
? ? ? ? e.printStackTrace();
? ? }
}

總結(jié)

這是本人最近寫的一個自定義鬧鐘提醒,代碼并不是全部代碼,但是主要的函數(shù)以及內(nèi)容都以及在上面闡述了。小小的嘗試了一下,代碼寫的也不是特別的好,但是功能效果也是實現(xiàn)了的,在這里記錄一下思路還有代碼,做一個學(xué)習(xí)筆記。希望各位大佬們多指教,也希望能給大家?guī)硪恍╈`感。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android解決getExternalStorageDirectory在29后廢棄問題(推薦)

    Android解決getExternalStorageDirectory在29后廢棄問題(推薦)

    這篇文章主要介紹了Android解決getExternalStorageDirectory在29后廢棄問題(推薦),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Android仿正點鬧鐘時間齒輪滑動效果

    Android仿正點鬧鐘時間齒輪滑動效果

    這篇文章主要為大家詳細(xì)介紹了Android仿正點鬧鐘時間齒輪滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • android開發(fā)實踐之ndk編譯命令簡單示例

    android開發(fā)實踐之ndk編譯命令簡單示例

    這篇文章主要給大家介紹了在android中ndk編譯命令使用的相關(guān)資料,文中詳細(xì)介紹了ndk-build命令行參數(shù),并通過簡單的示例代碼給大家介紹了如何編寫 .c 文件,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Android之ImageSwitcher的實例詳解

    Android之ImageSwitcher的實例詳解

    這篇文章主要介紹了Android之ImageSwitcher的實例詳解的相關(guān)資料,這里提供實例幫助大家理解這個控件的功能,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • android使用Rxjava實現(xiàn)倒計時功能

    android使用Rxjava實現(xiàn)倒計時功能

    這篇文章主要為大家詳細(xì)介紹了android使用Rxjava實現(xiàn)倒計時功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android Gridview布局出現(xiàn)滾動條或組件沖突解決方法

    Android Gridview布局出現(xiàn)滾動條或組件沖突解決方法

    這篇文章主要介紹了Android Gridview布局出現(xiàn)滾動條或組件沖突解決方法,GridView是一個在二維可滾動的網(wǎng)格中展示內(nèi)容的控件。網(wǎng)格中的內(nèi)容通過使用adapter自動插入到布局中
    2022-07-07
  • Android 控件GridView使用案例講解

    Android 控件GridView使用案例講解

    這篇文章主要介紹了Android 控件GridView使用案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Android仿京東分類效果

    Android仿京東分類效果

    這篇文章主要為大家詳細(xì)介紹了Android仿京東分類效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android Jetpack- Paging的使用詳解

    Android Jetpack- Paging的使用詳解

    這篇文章主要介紹了Android Jetpack- Paging的使用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Android設(shè)置透明狀態(tài)欄和透明導(dǎo)航欄

    Android設(shè)置透明狀態(tài)欄和透明導(dǎo)航欄

    本文主要介紹了Android設(shè)置透明狀態(tài)欄和透明導(dǎo)航欄的方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03

最新評論

宜良县| 庐江县| 开原市| 唐河县| 武隆县| 措美县| 酒泉市| 普兰店市| 三明市| 舟曲县| 北宁市| 隆化县| 西吉县| 安多县| 清苑县| 武威市| 专栏| 陇南市| 平利县| 曲靖市| 汕尾市| 新丰县| 桂平市| 遂平县| 惠水县| 平利县| 塔河县| 车致| 民勤县| 丽水市| 特克斯县| 白玉县| 乐东| 洮南市| 梁平县| 天津市| 富顺县| 收藏| 合肥市| 韶关市| 大关县|