您的位置:首页 > 移动开发 > Android开发

android,闹钟定时功能,实现过程

2016-04-27 22:43 691 查看
由于最近参加一个比赛写的智能排插助手需要用到定时触发功能,于是做了一个类似闹钟功能,存储闹钟信息用的时android自带的数据库

源码地址https://github.com/waterCode/SaveEner.git

项目名为saveenergy

考虑到一些人没有用git,因为代码还有完善和修改的地方,等我代码全部写完后之后我会在csdn文件存储上传代码,不过学github还是有很多好处,备份代码就时一大好处,再也不用压缩文件传到云盘啦,哈哈

项目里面的model名为saveenergy的就是我这个项目的源代码

大家一起进步哦,坚持,努力,终有一天我们都可以成为他人口中的大神

有什么问题可以下方留言,我会定时看博客滴

(一)闹钟信息显示部分,一共3部分噢(⊙o⊙)

先上图片

,这里主要用了LinearLayout布局,里面有一个listView和imageButton,先说个人觉得要注意的的几点

1.imageButton自带的时灰色背景,textColor要设成透明.

2.这我用的时绿色背景,listView所用的item布局,textView字体白色的,为了方便调试,用tools:textColor=”@color/black”,会方便调试

3.在没有添加闹钟是listview是有上下分割线的,用的是LinearLayout分割线属性

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:divider="@drawable/my_divider"

android:showDividers="beginning|end">


至于listView和item的布局具体代码在我的github里面下来看看

在Activity方面我们需要做的事有

1.初始化布局,拿到各个View的实例,

2.拿到数据库的指针,设置listView的adapter,这里用的是simpleCursorAdapter,关于simplecursorAdapter构造函数最后一个参数Flag需要注意下,这个页面最终的就是simplecursorAdapter设置,因为这个主要是和数据类交互的类,如果你想锻炼下自己可以用BaseAdapter,自己封装类,看你喜好

3为listView和Button设置监听,这里刷新listView用的时

cursorAdapter .notifyDataSetChanged();


(二)接下来当然时闹钟编辑页面啦,加油继续往下看


小二上大图。。


布局部分:

这里上面时用简单的textView和ImageButton,接着时timepicker,接着是一个ListView,小小的剧透下,listView用的时simpleAdapter,点击后会神奇的出现一个开关选择的dialog,和打开和关闭的dialog,哇哈哈这里用的Alertdialog

这里需要注意的有

1.timepicker,可能时android系统原因,timepicker默认


但程序在我的华为p7里面却是上图那样,布局反差很大,一开始让我这菜鸟措手不及,问了学安卓的“同志”们也没人知道,最后在神奇的stayoverflow找到答案,下面这句话可以让他变回面条状,哈哈

android:timePickerMode="spinner"


代码部分:

1.初始化各个组件,获取实例

2.为listView设置数据,用的时simpleAdapter

3,设置各个监听,并将

4.结束时把信息存入数据库,并且系统中设置闹钟

这里要注意的时PendingIntent第二个参数,为了能个设置多个参数,所以我用的时存闹钟信息在数据库的id

int id=dbOperator.getAlarmId(time);//获得新添加时钟在数据库的id
Intent intent=new Intent(this, AlarmReciever.class);
intent.putExtra("_id",id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,id,intent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,alarm.getAlarmTime().getTimeInMillis(),pendingIntent);


(三)就是删除闹钟部分,最后一部分,坚持看下去


上图


这里时由闹钟长按进入,就一个listView,用的还是SimpleCursorAdapter,这里要注意的时重写bindView,因为点击删除按钮的时候要能够监听的到代码

@Override
public void bindView(View view, final Context context, final Cursor cursor) {
super.bindView(view, context, cursor);
final int id = cursor.getInt(0);
ImageButton imageButton = (ImageButton)view.findViewById(R.id.alarm_delete_button);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseOperator operator = new DatabaseOperator(context);
operator.delete(id);
cursor.requery();
adapter.notifyDataSetChanged();

}
});

}


还有数据库那一部分我没讲,这里就省略啦,可以看我的代码

基本上要注意的就是这样了,我只贴出我认为关键的代码部分,和我当时遇到的一些坑我都会以注意的形式说出来,至于源代码在我文章开头提供github地址里面下载下来看看,因为这是这个定时部分我项目的一部分,为防止朋友下载下来不知道在我项目里的哪部分,这里给出设计的代码文件的图片,方便朋友们查找





有关数据哭的类



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: