Android备忘录定时功能,(干货)Android入门完整项目:一个有定时提醒功能的备忘录...

public class EventDetailActivity extends BaseActivity {

public static final String EXTRA_IS_EDIT_EVENT = "extra.is.edit.event";

public static final String EXTRA_EVENT_DATA = "extra.event.data";

public static final String EXTRA_IS_ADD_EVENT = "extra.is.create.event";

//从主屏进来的操作是不是编辑操作

private boolean isEditEvent;

//从主屏进来的操作是不是添加操作

private boolean isAddEvent;

private EventManager mEventManager = EventManager.getInstance();

private ClockManager mClockManager = ClockManager.getInstance();

@BindView(R.id.ll_update_time)

LinearLayout llUpdateTime;

@BindView(R.id.ed_title)

EditText edTitle;

@BindView(R.id.tv_remind_time_picker)

EditText tvRemindTime;

@BindView(R.id.ed_content)

EditText edContent;

@BindView(R.id.tv_last_edit_time)

TextView tvUpdateTime;

@BindView(R.id.iv_back)

ImageView ivBack;

@BindView(R.id.tv_confirm)

TextView tvConfirm;

@BindView(R.id.iv_delete)

ImageView ivDelete;

@BindView(R.id.iv_edit)

ImageView ivEdit;

@BindView(R.id.chb_is_important)

CheckBox chbIsImportant;

@BindView(R.id.scroll_view)

ScrollView scrollView;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

@Override

protected void setListener() {

}

@Override

protected void initView() {

isEditEvent = getIntent().getBooleanExtra(EXTRA_IS_EDIT_EVENT, false);

isAddEvent = getIntent().getBooleanExtra(EXTRA_IS_ADD_EVENT, false);

judgeOperate();

}

private void judgeOperate() {

//是否显示上方上次编辑时间

llUpdateTime.setVisibility(isAddEvent ? View.GONE : View.VISIBLE);

//是否能够编辑标题

setEditTextReadOnly(edTitle, !isEditEvent && !isAddEvent);

//是否能够编辑内容

setEditTextReadOnly(edContent, !isEditEvent && !isAddEvent);

//设置提醒时间不能手动输入

setEditTextReadOnly(tvRemindTime, true);

//设置提醒时间是否能够点击:弹出时间选择器

tvRemindTime.setClickable(isEditEvent || isAddEvent);

//设置右上角确定按钮是否可见

tvConfirm.setVisibility(isEditEvent || isAddEvent ? View.VISIBLE : View.GONE);

//设置右下角编辑按钮是否可见

ivEdit.setVisibility(!isEditEvent && !isAddEvent ? View.VISIBLE : View.GONE);

//设置左下角删除按钮是否可见

ivDelete.setVisibility(!isAddEvent ? View.VISIBLE : View.GONE);

//设置checkbox能不能点击

chbIsImportant.setClickable(isEditEvent || isAddEvent);

}

@Override

protected void initData() {

if (!isAddEvent) {

Event event = getIntent().getParcelableExtra(EXTRA_EVENT_DATA);

//填充值

tvUpdateTime.setText(event.getmUpdatedTime());

edTitle.setText(event.getmTitle());

edContent.setText(event.getmContent());

tvRemindTime.setText(event.getmRemindTime());

chbIsImportant.setChecked(event.getmIsImportant() == Constants.EventFlag.IMPORTANT);

}

}

@OnClick(R.id.iv_back)

public void backImageClick(View view) {

finish();

}

@OnClick(R.id.iv_delete)

public void deleteImageClick(View view) {

if (!isAddEvent) {

AlertDialogUtil.showDialog(this, R.string.delete_event_msg, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Event event = getIntent().getParcelableExtra(EventDetailActivity.EXTRA_EVENT_DATA);

if (mEventManager.removeEvent(event.getmId())) {

ToastUtil.showToastShort(R.string.delete_successful);

mClockManager.cancelAlarm(buildIntent(event.getmId()));

mEventManager.flushData();

postToMainActivity();

} else {

ToastUtil.showToastShort(R.string.delete_failed);

}

}

});

}

}

/**

* 回到主屏幕

*/

private void postToMainActivity() {

Intent intent = new Intent();

intent.setClass(EventDetailActivity.this, MainActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

startActivity(intent);

finish();

}

@Override

public int getContentView() {

return R.layout.activity_event_detail;

}

/**

* 弹出时间选择器,选择闹钟执行时间

* @param view

*/

@OnClick(R.id.tv_remind_time_picker)

public void datePickClick(View view) {

if (isEditEvent || isAddEvent) {

final Calendar calendar = Calendar.getInstance();

DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, final int year, final int month, final int dayOfMonth) {

TimePickerDialog timePickerDialog = new TimePickerDialog(EventDetailActivity.this, new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

String time = year + "-" + StringUtil.getLocalMonth(month) + "-" + StringUtil.getMultiNumber(dayOfMonth) + " " + StringUtil.getMultiNumber(hourOfDay) + ":" + StringUtil.getMultiNumber(minute);

tvRemindTime.setText(time);

}

}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false);

timePickerDialog.show();

}

}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));

dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());

dialog.show();

}

}

@OnClick(R.id.iv_edit)

public void editImageClick(View view) {

if (!isEditEvent) {

ToastUtil.showToastShort(R.string.enter_edit_mode);

ivEdit.setVisibility(View.GONE);

isEditEvent = true;

judgeOperate();

}

}

@OnClick(R.id.tv_confirm)

public void confirmClick(View view) {

//更新

if (isEditEvent || isAddEvent) {

Event event = buildEvent();

//检查属性并且提醒

if (!mEventManager.checkEventField(event)) {

return;

}

if (mEventManager.saveOrUpdate(event)) {

if (isEditEvent) {

ToastUtil.showToastShort(R.string.update_successful);

} else if (isAddEvent) {

ToastUtil.showToastShort(R.string.create_successful);

event.setmId(mEventManager.getLatestEventId());

}

//添加闹钟

mClockManager.addAlarm(buildIntent(event.getmId()), DateTimeUtil.str2Date(event.getmRemindTime()));

mEventManager.flushData();

postToMainActivity();

} else {

if (isEditEvent) {

ToastUtil.showToastShort(R.string.update_failed);

} else if (isAddEvent) {

ToastUtil.showToastShort(R.string.create_failed);

}

}

}

}

private PendingIntent buildIntent(int id) {

Intent intent = new Intent();

intent.putExtra(ClockReceiver.EXTRA_EVENT_ID, id);

intent.setClass(this, ClockService.class);

return PendingIntent.getService(this, 0x001, intent, PendingIntent.FLAG_UPDATE_CURRENT);

}

@OnClick(R.id.scroll_view)

public void scrollViewClick(View view) {

if (isAddEvent || isEditEvent) {

//打开软键盘

setEditTextReadOnly(edContent, false);

}

}

@NonNull

private Event buildEvent() {

Event event = new Event();

if (isEditEvent) {

event.setmId(((Event) getIntent().getParcelableExtra(EXTRA_EVENT_DATA)).getmId());

event.setmCreatedTime(((Event) getIntent().getParcelableExtra(EXTRA_EVENT_DATA)).getmCreatedTime());

}

event.setmRemindTime(tvRemindTime.getText().toString());

event.setmTitle(edTitle.getText().toString());

event.setmIsImportant(chbIsImportant.isChecked() ? Constants.EventFlag.IMPORTANT : Constants.EventFlag.NORMAL);

event.setmContent(edContent.getText().toString());

event.setmUpdatedTime(DateTimeUtil.dateToStr(new Date()));

return event;

}

private void setEditTextReadOnly(EditText editText, boolean readOnly) {

editText.setFocusable(!readOnly);

editText.setFocusableInTouchMode(!readOnly);

editText.setCursorVisible(!readOnly);

editText.setTextColor(getColor(readOnly ? R.color.gray3 : R.color.black));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值