android鬧鍾源碼
㈠ 用java編一個小鬧鍾
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
public class Clock extends JFrame implements ActionListener {
public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8;
public final double RAD = Math.PI / 180.0;
int x, y, old_X, old_Y, r, x0, y0, w, h, ang;
int sdo, mdo, hdo, old_M, old_H, hh, mm, ss;
int delay = 1000;
Calendar now;
String st, alarm, Items1, Items2,str[];
JButton jb;
JComboBox jc1, jc2, jc3;
JLabel jl1, jl2, jl3, jl4;
JMenu jm1, jm2, jm3, jm4;
JMenuBar jmb;
JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7, jmi8, jmi9,jmi10;
JTextField jtf1, jtf2, time;
JPanel jp1, jp2, jp3;
Timer timer;
TimeZone tz = TimeZone.getTimeZone("JST");
Toolkit toolkit=Toolkit.getDefaultToolkit();;
/**
* <br>
* 方法說明:實現ActionListener類必須過載的方法
*/
public static void main(String[] args) {
Clock cp = new Clock();
cp.setVisible(true);
}
Clock() {
super("Java鬧鍾!");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(550, 700);
setVisible(true);
Container contentPane = getContentPane();
jp2 = new JPanel();
jmb = new JMenuBar();
jm1 = new JMenu("背景顏色設置 ", true);
jmi1 = new JMenuItem("外圈顏色");
jmi1.addActionListener(this);
jmi1.setActionCommand("color1");
jm1.add(jmi1);
jmi2 = new JMenuItem("鬧鍾邊線顏色");
jmi2.addActionListener(this);
jmi2.setActionCommand("color2");
jm1.add(jmi2);
jmi3=new JMenuItem("底盤顏色");
jmi3.addActionListener(this);
jmi3.setActionCommand("color3");
jm1.add(jmi3);
jmi4=new JMenuItem("系統時間背靜顏色");
jmi4.addActionListener(this);
jmi4.setActionCommand("color4");
jm1.add(jmi4);
jmb.add(jm1);
jm2 = new JMenu("指針顏色設置 ", true);
jmi5 = new JMenuItem("秒針顏色");
jmi5.addActionListener(this);
jmi5.setActionCommand("color5");
jm2.add(jmi5);
jmi6 = new JMenuItem("分針顏色");
jmi6.addActionListener(this);
jmi6.setActionCommand("color6");
jm2.add(jmi6);
jmi7 = new JMenuItem("時針顏色");
jmi7.addActionListener(this);
jmi7.setActionCommand("color7");
jm2.add(jmi7);
jmb.add(jm2);
jm3 = new JMenu("鬧鈴聲音設置 ", true);
jmi8 = new JMenuItem("響鈴1");
jmi8.addActionListener(this);
jmi8.setActionCommand("ring1");
jm3.add(jmi8);
jmi9 = new JMenuItem("靜音");
jmi9.addActionListener(this);
jmi9.setActionCommand("ring2");
jm3.add(jmi9);
jmb.add(jm3);
jm4 = new JMenu("幫助 ", true);
jmi10=new JMenuItem("使用說明");
jmi10.addActionListener(this);
jmi10.setActionCommand("help");
jm4.add(jmi10);
jmb.add(jm4);
jp2.add(jmb);
contentPane.add(jp2, BorderLayout.NORTH);
jp3 = new JPanel();
jl1 = new JLabel("鬧鈴時間");
jl1.setFont(new Font("楷體_GB2312", Font.BOLD, 18));
time = new JTextField("00:00", 5);
alarm = time.getText();
jb = new JButton("修改鬧鈴時間");
jb.addActionListener(this);
jb.setActionCommand("CC");
jp3.add(jl1);
jp3.add(time);
jp3.add(jb);
contentPane.add(jp3, BorderLayout.SOUTH);
ClockPanel clock = new ClockPanel();
contentPane.add(clock, BorderLayout.CENTER);
// 窗體添加事件監聽,監聽秒錶的觸發
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
repaint();
}
};
new Timer(delay, taskPerformer).start();
}
/**
* <br>
* 方法說明:繪制圖形
*/
Color C1 = Color.lightGray;// 外圈顏色
Color C2 = Color.black;// 邊線顏色
Color C3 = Color.magenta;// 內盤顏色
Color C4 = Color.blue;// 背景顏色
Color C5 = Color.yellow;// 秒針顏色
Color C6 = Color.green;// 分針顏色
Color C7 = Color.red;//時針顏色
public class ClockPanel extends JPanel {
public void paint(Graphics g) {
h = getSize().height - 200;
// 繪制圓形
g.setColor(C1);
g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60);
g.setColor(C2);
g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62);
g.setColor(C3);
g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100);
g.setColor(C2);
g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102);
r = h / 2 - 30;
x0 = 30 + r - 5 + L0;
y0 = 30 + r - 5 - T0;
ang = 60;
for (int i = 1; i <= 12; i++) {
x = (int) ((r - 10) * Math.cos(RAD * ang) + x0);
y = (int) ((r - 10) * Math.sin(RAD * ang) + y0);
g.drawString("" + i, x, h - y);
ang -= 30;
}
x0 = 30 + r + L0;
y0 = 30 + r + T0;
g.drawString("指針式時鍾", 215, 200);
// 獲取時間
now = Calendar.getInstance();
hh = now.get(Calendar.HOUR_OF_DAY);// 小時
mm = now.get(Calendar.MINUTE);// 分鍾
ss = now.get(Calendar.SECOND);// 秒
g.setColor(C4);
g.fillRect(5, 550, 150, 30);// 填充的矩形
g.setColor(C6);
if (hh < 10)
st = "0" + hh;
else
st = "" + hh;
if (mm < 10)
st = st + ":0" + mm;
else
st = st + ":" + mm;
if(alarm.equals(st))
{
if(toolkit!=null)
toolkit.beep();
else {}
}
if (ss < 10)
st = st + ":0" + ss;
else
st = st + ":" + ss;
{
g.setFont(new Font("華文楷體", Font.BOLD, 16));
g.drawString("系統時間:" + st, 10, 570);
}
// 計算時間和圖形的關系
sdo = 90 - ss * 6;
mdo = 90 - mm * 6;
hdo = 90 - hh * 30 - mm / 2;
// 擦除秒針
if (old_X > 0) {
g.setColor(C3);
} else {
old_M = mdo;
old_H = hdo;
}
// 繪制秒針
g.setColor(C5);
x = (int) ((r - 26) * Math.cos(RAD * sdo) + x0);
y = (int) ((r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
old_X = x;
old_Y = y;
// 擦除分針和時針
if (mdo != old_M) {
g.setColor(C3);
old_M = mdo;
}
if (hdo != old_H) {
g.setColor(C3);
old_H = hdo;
}
// 繪制分針
g.setColor(C6);
x = (int) ((r - 50) * Math.cos(RAD * mdo) + x0);
y = (int) ((r - 50) * Math.sin(RAD * mdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
// 繪制時針
g.setColor(C7);
x = (int) ((r - 90) * Math.cos(RAD * hdo) + x0);
y = (int) ((r - 90) * Math.sin(RAD * hdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
} // end paint
}
// 鬧鈴時間的判斷及實現
// 鬧鈴聲音的實現
public void actionPerformed(ActionEvent e) {
// JMenuItem m = (JMenuItem) e.getSource();
if (e.getActionCommand() == "CC") {
int newHou, newMin;
char c;
String getTime = JOptionPane.showInputDialog(this, "請輸入鬧鈴時間格式如:", "00:00");
repaint();
//如果撤消設置時間,就什麼列印null
if(getTime==null)
System.out.println(getTime);
// dispose();
judge: if (getTime != null) {
//列印輸入的設置的時間
System.out.println(getTime);
// 判斷輸入的是不是5位字元
if (getTime.length() != 5) {
JOptionPane.showMessageDialog(time, "格式錯誤\n請按格式輸入5位數字", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
// 判斷輸入的是不是數字
for (int i = 0; i < (getTime.length()); i++) {
c = getTime.charAt(i);
if (i == 2 && !Character.isDigit(c))
continue;
// 判斷當前字元,如果不是數字則跳出該事件
if (i != 2 && !Character.isDigit(c)) {
JOptionPane.showMessageDialog(this, "格式錯誤\n請按格式輸入5位數字",
"Error",JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
}
char[] hour = { getTime.charAt(0), getTime.charAt(1) };
char[] minute = { getTime.charAt(3), getTime.charAt(4) };
newHou = Integer.parseInt(String.valueOf(hour));
newMin = Integer.parseInt(String.valueOf(minute));
if (newHou >= 24 || newHou < 0) {
JOptionPane.showMessageDialog(this, "格式錯誤\n小時應該是不小於0不大於23的正數",
"Error", JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
if (newMin >= 60 || newHou < 0) {
JOptionPane.showMessageDialog(this, "格式錯誤\n分鍾應該是小於60的正數", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
new SetTime(newHou, newMin);
}
}
if (e.getActionCommand() == "ring1") {
toolkit=Toolkit.getDefaultToolkit();
}
if(e.getActionCommand() == "ring2"){
System.out.println("靜音");
toolkit=null;
}
if (e.getActionCommand() == "color1") {
String color;
Color c;
System.out.println("color1");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的外圈顏色(0--255)", "128");
if (color == null) {
} else {
if (Integer.parseInt(color) < 0
|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的外圈顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C1 = c;
}
}
}
if(e.getActionCommand() == "color2"){
String color;
Color c;
System.out.println("color2");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的邊線顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的邊線顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C2 = c;
}
}
}
if(e.getActionCommand() == "color3"){
String color;
Color c;
System.out.println("color3");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的內盤顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的內盤顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C3 = c;
}
}
}
if(e.getActionCommand() == "color4"){
String color;
Color c;
System.out.println("color4");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的背景顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的背景顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C4 = c;
}
}
}
if(e.getActionCommand() == "color5"){
String color;
Color c;
System.out.println("color5");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的秒針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的秒針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C5 = c;
}
}
}
if(e.getActionCommand() == "color6"){
String color;
Color c;
System.out.println("color6");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的分針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的分針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C6 = c;
}
}
}
if(e.getActionCommand() == "color7"){
String color;
Color c;
System.out.println("color7");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的時針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的時針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C7 = c;
}
}
}
if(e.getActionCommand() == "help"){
String help;
help = JOptionPane.showInputDialog(this, "輸入quit退出該鬧鍾的使用", "這是運行在Java中的指針式時鍾");
if(help.equals("quit"))
dispose();
else {}
// timer.restart();
}
}
class SetTime {
String Hour;
String Minute;
public SetTime() { }
public SetTime(int hour, int minute) {
// 當時間參數小於10的時候在前面添加字元0
if (hour < 10) {
Hour = "0" + String.valueOf(hour);
} else {
Hour = "" + String.valueOf(hour);
}
if (minute < 10) {
Minute = "0" + String.valueOf(minute);
} else {
Minute = "" + String.valueOf(minute);
}
alarm = Hour + ":" + Minute;
time.setText(alarm);
repaint();
}
}
}
㈡ 基於android的鬧鍾如何添加和刪除
一、本課題要求:設計一個基於Android的鬧鍾的軟體。
實現的功能有:能通過界面設置鬧鍾的啟動條件建立後台服務進程,當滿足觸發條件時,鬧鍾響應相應事件。
二、需求分析
該課題實現在手機操作系統Android鬧鍾提醒功能,攜帶方便,使用起來靈活、快捷、省心,是一款實用的手機軟體。「手機鬧鍾」可以在後台運行,且能和普通鬧鍾一樣設置多個位置鬧鈴,有良好的人機交互界面,可對其編輯、啟用或禁用,關鍵在於可以自定義設置取消鬧鍾的操作。
(1)系統體系結構包括:添加鬧鈴、設置時間、重復等,鬧鈴提醒方式,返回首頁。
(2)用戶界面設計
解除鬧鈴代碼
(2)代碼分析
開發手機鬧鍾主要用到了AlarmManager類,AlarmManager類提供了訪問系統定時服務的途徑,開發人員可以在程序中設置某個應用程序在未來的某個時刻被執行。當AlarmManager定時時間到了之後,當初注冊的Intent對象將會被系統廣播,進而啟動目標程序。注冊的鬧鍾在設備睡眠的時候仍然會保留,可以選擇性地設置是否喚醒設備,但是當設備關機和重啟後,鬧鍾將會被清除。
在程序運行時當需要使用AlarmManager類時,可以通過Context對象的getSystemService(Context.ALARM_SERVICE)方法來獲得AlarmManager對象。
鬧鍾使用的Demo:com.example.android.apis.app.AlarmController其中設定了兩種鬧鍾,一種是一次性的,一種是重復的。
四、總結
在這個過程中,我學會了很多知識,比如Android環境的搭建和配置問題、Android的構架和基本組建等,同時我學會的最重要的一點是,要利用現有的資源去解決問題,在圖書館、在網路上尋找答案,也可以請教老師或與同學相互討論。雖然,這個軟體目前運行良好,但是我認為代碼的健壯還很差,在整個工程的構思方面也不足,用戶操作界面還不夠靈活,這些問題還需要今後逐一解決。與此同時,這個軟體還可以進一步擴展,例如通過Android Api獲取位置信息,並在指定地點設置鬧鍾提醒等,使功能更加強大,帶給用戶更好的體驗與便捷的生活服務。
㈢ android 設置系統鬧鍾和系統日歷提醒
現在有一個定時提醒的功能, 用 AlarmManager 自己來做,有多少坑做過的都知道。(應用被kill, 應用保活,息屏,關機重啟,多版本兼容問題。。。)。要自己做一個完善的不是 1-2天就能搞定的。當然如果是應用內簡單的定時執行,定時提醒 AlarmManager 還是很好用的。
https://www.jianshu.com/p/1f919c6eeff6
對於這種需求可以調用系統鬧鍾或用系統日歷的提醒事件來做。
日歷提醒功能可以直接用 Intent 起日歷提醒界面,這樣最簡單,不需要許可權。
調用API 直接設置需要動態申請許可權
https://www.cnblogs.com/loaderman/p/10489592.html
https://developer.android.com/guide/topics/providers/calendar-provider
設置系統鬧鍾需要 SET_ALARM 許可權
取消鬧鍾用 AlarmClock.ACTION_DISMISS_ALARM
㈣ Android里用AlarmManger實現設置鬧鍾 如何設置之前的時間
稍戚清如微判斷一下高啟,我最近剛做了一個定時正銀任務的功能。代碼如下
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, planOnOff.hour);
calendar.set(Calendar.MINUTE, planOnOff.minute);
if (System.currentTimeMillis()>calendar.getTimeInMillis()) {
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR)+1);
}
operation = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 3600*24*1000, operation);
如果覺得贊,給分吧少年!
㈤ Android開發——定時器處理
開發中經常遇到用計時器的時候,例如:每秒輸出一次log,這時候就要用到延時操作,這里總結了幾種常用的方法。
AlarmManager 是Android的全局定時器,可以在指定時間執行定時任務。定時任務通過PendingIntent 的 getActivity()、getService()或 getBroadcast() 來執行。簡單的說就是我們設定一個時間,然後在該時間到來時,AlarmManager為我們廣播一個我們設定的Intent出來,在接收到設定的Intent時執行定時任務。
(2) setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
該方法用於設置重復鬧鍾,其中參數說明如下:
type:鬧鍾類型
startTime:首次執行鬧鍾的時間
intervalTime:兩次執行鬧鍾的時間間隔
pi:鬧鍾響應動作
(3) setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);
該方法也用於設置重復鬧鍾,與第二個方法相似,區別在於其兩次鬧鍾執行的間隔時間不是固定的。
AlarmManager實現定時的方法,我還沒有用到過,以上內容是在網上查找資料後自己在一個小demo中小小試驗了的,有錯誤或描述不清的地方請見諒。下面是我參考的介紹AlarmManager的三篇文章。
㈥ android開發,鬧鍾問題,想設置一個每天8點的鬧鍾,如何才能解決立即啟動這個問題,附代碼:
你設置的時間已經過了。就是說,你的這句話有邏輯問題。
if(calendar.getTimeInMillis()> calendar.getTimeInMillis()){
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
}
你是想寫成這樣吧?
if(System.currentTimeMills()> calendar.getTimeInMillis()){...}
還有一個地方你應該注意一下。
最前面一句最好這么寫。
Calendar calendar = Calendar.getInstance(Locale.getDefault());
㈦ 用Android studio做一個可以運行的小程序,鬧鍾也行,然後可以連到手機,感謝大神。
環境搭建就不講了,直接說開發。
小鬧鍾程序開發中的要點就是:
1、時間選擇對話框(TimePicker)
2、獲取鬧鍾管理器並對其進行設置
3、注冊廣播接收器
掌握了這兩點,寫程序就很簡單了。
1、新建android項目:Alarm,sdk版本選擇2.2,Package name:com.lql.activity,Main Activity:Alarm
2、編寫界面:直接修改layout中的main.xml文件,代碼如下:
Xml代碼
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
>
<Button
android:id="@+id/timeBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/time"
android:textSize="20sp"
/>
<Button
android:id="@+id/cancelAlarmBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cancelAlarm"
/>
</LinearLayout>
{
/*(non-Javadoc)
*@seeandroid.content.BroadcastReceiver#onReceive(android.content.Context,android.content.Intent)
*/
@Override
publicvoidonReceive(Contextarg0,Intentdata){
Log.d(Alarm.TAG,"thetimeisup,startthealarm...");
Toast.makeText(arg0,"鬧鍾時間到了!",Toast.LENGTH_SHORT).show();
}
}
package="com.ql.activity"
android:versionCode="1"
android:versionName="1.0">
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<receiverandroid:name=".AlarmReceiver"android:process=":remote"/>
<activityandroid:name=".Alarm"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<uses-sdkandroid:minSdkVersion="8"/>
</manifest>
界面的效果如下:
這個代碼就很簡單了,主要是要繼 承BroadcastReceiver 這個類,然後重寫onRecive方法。onRecive方法在鬧鍾的時間達到之後會執行,在這里我們可以做自己的事情,比如啟動某個程序,或者播放鈴聲,我這里就是簡單的提示一下,使用的是Toast。
5、在android的AndroidManifest.xml文件中注冊廣播接收器:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
Xml代碼
核心的配置為<receiver android:name=".AlarmReceiver" android:process=":remote" />,這也是鬧鍾程序的關鍵,如果不做這個配置,那麼時間到了之後,鬧鍾將不會提示。
接下來就是到模擬器上測試,運行截圖如上圖。程序源代碼見附件。
㈧ Android開發一個簡單實用的鬧鈴APP
生活中我們會常常遇到需要鬧鍾提醒;不管是起床還是生活中的事件提醒。
那作為Android開發如何自己開發一個鬧鍾功能呢,是不是覺得很酷呢?接下來我們就實戰一個鬧鍾。
本示例採用的是RecyclerView,其適配器類與常無二,其異在於繼承一個代理類,為適配之後側滑刪除而准備
建立一個內部類ViewHolder實現控制項定義申明
實現onCreateViewHolder方法載入子項布局文件
綁定實體類,實現onBindViewHolder獲取數據
此處有三處狀態,第一種狀態:第一次進入程序,默認載入固定鬧鍾子項;第二種狀態:進入添加子項頁面,然後返回其主頁面,並判斷其switch是否為ture,如果為ture則添加子項;第三種狀態:程序被系統回收或者用戶停止程序,並再次進入程序,防止載入前一時刻鬧鍾子項;
添加依賴 實現側滑主要依賴於一個第三方包,然後使用RecyclerView進行子項綁定 依賴如下:
並在目錄build.gradle包下添加如下庫
其實現側滑刪除主要的玄機在於布局文件當中,使用RelativeLayout布局,將刪除按鈕固定在布局右方,並使用其他布局將其覆蓋,只有滑動時,才將其顯示。掩蓋側滑刪除按鈕與暴露側滑刪除按鈕效果對比圖如下
然後,在適配器類中,實現WeSwipeHelper.SwipeLayoutTypeCallBack介面,實現如下三個方法,第一個方法為獲取側滑刪除按鈕的寬度;第二個方法為需要滑動的視圖,也就是覆蓋側滑刪除按鈕的布局;第三個方法為當視圖正在滑動時,用戶觸發單擊事件,自動還原滑動狀態
最後,在需要添加子項的視圖中綁定RecyclerView即可
通過監聽子項滑動刪除按鈕點擊事件,實現子項刪除
跳轉新增鬧鍾子項Acticity需要傳輸實體類對象,傳輸對象一般需要序列化改類,其操作如下
定義實體類,並實現序列化
然後通過Intent傳輸Bundle對象
實現時間選擇主要使用系統集成的組件TimePicker,其使用方法如下 其有兩種顯示方式,第一種為spinner,就是下拉滑動式,第二種為clock,即顯示一個時鍾,通過滑動指針選擇時間
在style.xml文件中申明如下樣式
然後再指定Activcty申明即可
獲取數據比較簡單,實現對應介面即可
將獲取的數據通過SharedPreferences存儲起來,然後點擊存儲時,進行頁面跳轉,然後再該界面進行取出數據
存儲數據
首先判斷回調的switch數據是否為ture,如果為ture則保存該子項,然後再適配器類中進行數據添加
選中與默認兩種狀態效果圖如下
創建thumb和track樣式
創建一個選擇器文件,有選中和默認兩種狀態
創新open_thumb.xml文件
創建shut_thumb.xml文件
同樣創建一個選擇器,並用於兩種狀態
其中AlarmManager為系統主要操作類,參數為提醒模式、提醒時間(long型)、PendingIntent對象 以下有三種時間傳入,第一種,直接傳入一個Long型時間用於測試,第二種,通過設置系統啟動至今而設置時間,第三種,通過取出設置的時間,然後獲取系統當前時間,將其差傳入其中。
然後再清單文件中注冊服務
使用Intent實現服務啟動
殺死程序
本示例總共使用到了三個單例類:SP(SharedPreferences封裝)、TimeFormat(時間數據格式封裝)、KillProcess(殺死所有Activity)
SharedPreferences
KillProcess
文章帶這里就完成了一個簡單的鬧鍾;Android開發還有許多更加更多的知識學習。進一步學習Android技術,我這里推薦這份筆記方便學習,我就放在私信, 發送「核心筆記」或「手冊」即可獲取。朋友們可以免費領取!
㈨ 微信小程序添加鬧鍾代碼
微信小程序可以添加鬧鍾代碼。
整個鬧鍾項目的代碼分為3部分,分別是:鬧鍾主頁、鬧鍾記錄、鬧鍾設置;
A. 鬧鍾主頁的功能有點類似番茄鬧鍾,它由一個倒灶余計時工具構成,只要客戶點擊按鈕,就會開始倒計時;
B. 鬧鍾記陪辯斗錄主要記錄了客戶每次的點擊操作,有點類似日誌;
C. 鬧鍾設置可以自定義設置一些參數,包括設置工作時長、休息時長、背景音樂、蘆磨背景圖片。
㈩ 求大神一句句翻譯下代碼,這是一個android里小鬧鍾的一段
public void setListener() { //定義一個不用返回值的方法setListener()
mSet.setOnClickListener(new View.OnClickListener() { //給mSet設置單擊監聽器,實例化一個單擊監聽器
public void onClick(View v) {//實現監聽器的單擊方法
mCalendar.setTimeInMillis(System.currentTimeMillis());//將一個日歷實例的時間設置為當前系統時間
int mHour = mCalendar.get(Calendar.HOUR_OF_DAY);//獲取實例的小時
int mMinute = mCalendar.get(Calendar.MINUTE);//獲取實例的分鍾
new TimePickerDialog(ClockDemo.this,//新建一個TimePickerDialog實例
new TimePickerDialog.OnTimeSetListener() {//新建一個TimePickerDialog實例的設置時間的監聽器
public void onTimeSet(TimePicker view,
int hourOfDay, int minute) {//實現監聽器類的設置時間的方法
mCalendar.setTimeInMillis(System
.currentTimeMillis());//將mCalendar的時間設置為系統當前時間的毫秒
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);//將mCalendar的小時設置為通過timePicker設置的小時值
mCalendar.set(Calendar.MINUTE, minute);//將mCalendar的分鍾設置為通過timePicker設置的分鍾值
mCalendar.set(Calendar.SECOND, 0);//將mCalendar的秒設置為0
mCalendar.set(Calendar.MILLISECOND, 0);//將mCalendar的毫秒設置為0
ObjectPool.mAlarmHelper.openAlarm(32, "ddd",
"ffff", mCalendar.getTimeInMillis()); //設置鬧鍾
}
}, mHour, mMinute, true).show();//顯示鬧鍾
}
});
}
你給的這段代碼不完整