package com.ouwenjie.note.activity;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.fourmob.datetimepicker.date.DatePickerDialog;
import com.ouwenjie.note.NoteApplication;
import com.ouwenjie.note.R;
import com.ouwenjie.note.adapter.ImageListAdapter;
import com.ouwenjie.note.db.NoteDatabaseHelper;
import com.ouwenjie.note.model.BaseNote;
import com.ouwenjie.note.receiver.NoteAlarmReceiver;
import com.ouwenjie.note.utils.ImageUtils;
import com.ouwenjie.note.utils.LogUtils;
import com.ouwenjie.note.helper.MyActivityManager;
import com.ouwenjie.note.utils.TimeUtils;
import com.sleepbot.datetimepicker.time.RadialPickerLayout;
import com.sleepbot.datetimepicker.time.TimePickerDialog;
import com.umeng.analytics.MobclickAgent;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class EditNoteActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
private static final String TAG = "EditNoteActivity";
private static final int REQ_PICK_PHOTO = 100;
private static final int REQ_SHOW_IMAGE = 101;
private static final int REQ_TAKE_PHOTO = 102;
public static final String DATEPICKER_TAG = "datepicker";
public static final String TIMEPICKER_TAG = "timepicker";
public static final boolean SHOW = true;
public static final boolean HIDE = false;
private RelativeLayout editNoteLayout; // 编辑页面
private LinearLayout editNoteToolsBar; // 工具栏
public static List<Uri> imageUriList = new ArrayList<>();
private RecyclerView imageListRecyclerView; // 图片列表
private LinearLayoutManager linearLayoutManager;
private ImageListAdapter adapter;
private ImageView backImg; // 工具栏 -- 返回
private TextView dateTxt; // 工具栏 -- 日期
private TextView timeTxt; // 工具栏 -- 时间
private ImageView paletteImg; // 工具栏 -- 调色板
private ImageView alarmImg; // 工具栏 -- 提醒
private ImageView addedImg; // 工具栏 -- 附件
private PopupWindow selectColorWindow; // 调色板 -- 弹出的窗口
private PopupWindow insertPicWindow; // 插入图片 -- 弹出的窗口
private EditText contentEt; // 内容编辑
private BaseNote note; // 正在编辑的NOTE
private int bgColor = BaseNote.LIGHT_YELLOW; // 当前的背景颜色
private DatePickerDialog datePickerDialog; // 日期选择器
private TimePickerDialog timePickerDialog; // 时间选择器
private TextView alarmDate; // 已选择的日期
private TextView alarmTime; // 已选择的时间
private boolean imageListState = SHOW; // 图片列表显示状态
private ImageView hideImageList;
private TextView imageListStateTxt;
private ImageView showImageList;
private LinearLayout alarmInfoLayout; // 下方的信息栏
private TextView alarmDateTime; // 信息栏的内容
private ImageView closeAlarm; // 关闭信息栏
private Uri photoUri; // 拍照时保存的URI
private NoteDatabaseHelper dbHelper = new NoteDatabaseHelper();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// If the Android version is lower than Jellybean, use this call to hide
// the status bar.
if(Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
setContentView(R.layout.activity_edit_note);
MyActivityManager.getInstance().addActivity(this);
initWidget();
initData();
initImageListData();
initRecyclerView();
initDateTimePicker(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);// 淡化status bar 和 navigation bar
MobclickAgent.onPageStart("EditNoteActivity"); //统计页面(仅有Activity的应用中SDK自动调用,不需要单独写)
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPageEnd("EditNoteActivity"); // (仅有Activity的应用中SDK自动调用,不需要单独写)保证 onPageEnd 在onPause 之前调用,因为 onPause 中会保存信息
MobclickAgent.onPause(this);
}
/**
* 初始化布局控件
*/
private void initWidget(){
editNoteLayout = (RelativeLayout) findViewById(R.id.edit_note_layout);
editNoteToolsBar = (LinearLayout) findViewById(R.id.edit_note_tools_bar);
backImg = (ImageView) findViewById(R.id.back_img);
dateTxt = (TextView) findViewById(R.id.note_date_tv);
timeTxt = (TextView) findViewById(R.id.note_time_tv);
paletteImg = (ImageView) findViewById(R.id.note_palette_img);
alarmImg = (ImageView) findViewById(R.id.note_alarm_clock_img);
addedImg = (ImageView) findViewById(R.id.note_added_img);
imageListRecyclerView = (RecyclerView) findViewById(R.id.note_image_list_layout);
contentEt = (EditText) findViewById(R.id.note_edit_content_et);
hideImageList = (ImageView) findViewById(R.id.note_image_hide_img);
imageListStateTxt = (TextView) findViewById(R.id.note_image_tip_tv);
showImageList = (ImageView) findViewById(R.id.note_image_show_img);
alarmInfoLayout = (LinearLayout) findViewById(R.id.alarm_info_layout);
alarmDateTime = (TextView) findViewById(R.id.alarm_date_time_tv);
closeAlarm = (ImageView) findViewById(R.id.close_alarm_img);
backImg.setOnClickListener(this);
paletteImg.setOnClickListener(this);
alarmImg.setOnClickListener(this);
addedImg.setOnClickListener(this);
hideImageList.setOnClickListener(this);
imageListStateTxt.setOnClickListener(this);
showImageList.setOnClickListener(this);
closeAlarm.setOnClickListener(this);
}
/**
* 初始化画面数据,根据Note展示数据
*/
private void initData(){
long dbId = getIntent().getLongExtra(BaseNote.KEY_DB_ID,-1);
if(dbId >= 0){
note = dbHelper.get(dbId);
}else{ // 新建的Note
note = new BaseNote("");
// 如是新建的“提醒”,则一开始就弹出设置时间的窗口
if(getIntent().getIntExtra(BaseNote.KEY_NOTE_TYPE,BaseNote.NOTE_TYPE_RECORD) == BaseNote.NOTE_TYPE_REMIND){
showCustomView();
}
}
setBgColor(note.getBgColor()); // 背景颜色
contentEt.setText(note.getContent()); // 内容
String[] lastChangedTime = note.getLastChangeDate().split(" ");
dateTxt.setText(lastChangedTime[0]); // 日期
timeTxt.setText(lastChangedTime[1]); // 时间
if(note.getNoteState() == BaseNote.NOTE_STATE_INVALID){ // 如果是归档状态,则不可修改。
contentEt.setFocusable(false);
}else{
contentEt.setFocusable(true);
}
if(note.getAlarmState() == BaseNote.NOTE_ALARM_STATE_VALID) {
openAlarmLayout();
} else{
closeAlarmLayout();
}
}
/**
* 初始化 RecyclerView 列表
*/
private void initRecyclerView() {
linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
imageListRecyclerView.setLayoutManager(linearLayoutManager);
adapter = new ImageListAdapter(this, imageUriList);
adapter.setItemOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveNoteState();
int position = (int) v.getTag();
Intent intent = new Intent(EditNoteActivity.this, ImageViewPagerActivity.class);
intent.putExtra("ImageListPosition", position);
intent.putExtra("UriString", note.getImageSet());
startActivityForResult(intent, REQ_SHOW_IMAGE);
}
});
imageListRecyclerView.setAdapter(adapter);
}
/**
* 初始化 图片列表
*/
private List<Uri> initImageListData() {
imageUriList = new ArrayList<>();
String imageUriSet = note.getImageSet();
if(imageUriSet != null && !(imageUriSet.equals(""))) {
String[] imageUriString = note.getImageSet().split(" ");
if (imageUriString.length != 0) {
showImageListLayout();
for (String s : imageUriString) {
imageUriList.add(Uri.parse(s));
}
}
}else {
hideImageListLayout();
}
return imageUriList;
}
/**
* 显示图片列表布局
*/
private void showImageListLayout(){
imageListRecyclerView.setVisibility(View.VISIBLE);
findViewById(R.id.note_image_show_img).setVisibility(View.VISIBLE);
findViewById(R.id.note_image_tip_tv).setVisibility(View.VISIBLE);
showImageList();
}
/**
* 隐藏图片列表布局
*/
private void hideImageListLayout(){
findViewById(R.id.note_image_list_layout).setVisibility(View.GONE);
findViewById(R.id.note_image_hide_img).setVisibility(View.GONE);
findViewById(R.id.note_image_tip_tv).setVisibility(View.GONE);
findViewById(R.id.note_image_show_img).setVisibility(View.GONE);
}
/**
* 显示闹钟信息栏
*/
private void openAlarmLayout() {
alarmImg.setImageResource(R.drawable.ic_alarm_on_black_24dp); // 提醒Img
alarmDateTime.setText(note.getAlarmDate());
alarmInfoLayout.setVisibility(View.VISIBLE);
}
/**
* 隐藏闹钟信息栏
*/
private void closeAlarmLayout() {
alarmImg.setImageResource(R.drawable.ic_alarm_off_black_24dp);
alarmDateTime.setText("");
alarmInfoLayout.setVisibility(View.INVISIBLE);
}
/**
* 设置背景颜色
* @param bgColor
*/
private void setBgColor(int bgColor){
this.bgColor = bgColor;
switch (bgColor){
case BaseNote.LIGHT_YELLOW:
editNoteLayout.setBackgroundColor(getResources().getColor(R.color.light_yellow));
editNoteToolsBar.setBackgroundColor(getResources().getColor(R.color.light_yellow_dark));
break;
case BaseNote.LIGHT_BLUE:
editNoteLayout.setBackgroundColor(getResources().getColor(R.color.light_blue));
editNoteToolsBar.setBackgroundColor(getResources().getColor(R.color.light_blue_dark));
break;
case BaseNote.LIGHT_GREEN:
editNoteLayout.setBackgroundColor(getResources().getColor(R.color.light_green));
editNoteToolsBar.setBackgroundColor(getResources().getColor(R.color.light_green_dark));
break;
case BaseNote.LIGHT_RED:
editNoteLayout.setBackgroundColor(getResources().getColor(R.color.light_red));
editNoteToolsBar.setBackgroundColor(getResources().getColor(R.color.light_red_dark));
break;
default:
break;
}
}
/**
* 初始化日期时间选择器
*/
private void initDateTimePicker(Bundle savedInstanceState){
final Calendar calendar = Calendar.getInstance();
datePickerDialog = DatePickerDialog.newInstance(this,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH),
true);
timePickerDialog = TimePickerDialog.newInstance(this,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
true,
true);
if (savedInstanceState != null) {
DatePickerDialog dpd = (DatePickerDialog) getSupportFragmentManager().findFragmentByTag(DATEPICKER_TAG);
if (dpd != null) {
dpd.setOnDateSetListener(this);
}
TimePickerDialog tpd = (TimePickerDialog) getSupportFragmentManager().findFragmentByTag(TIMEPICKER_TAG);
if (tpd != null) {
tpd.setOnTimeSetListener(this);
}
}
}
/**
* 弹出颜色选择的小窗口
* @param v
*/
private void showSelectColorWindow(View v) {
if(selectColorWindow == null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View selectColorView = inflater.inflate(R.layout.layout_select_color, null);
// 获取 View 的宽高
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
selectColorView.measure(w, h);
int height = selectColorView.getMeasuredHeight();
int width = selectColorView.getMeasuredWidth();
// 4种颜色块 提供选择
View b = selectColorView.findViewById(R.id.blue);
View y = selectColorView.findViewById(R.id.yellow);
View r = selectColorView.findViewById(R.id.red);
View g = selectColorView.findViewById(R.id.green);
b.setOnClickListener(this);
y.setOnClickListener(this);
r.setOnClickListener(this);
g.setOnClickListener(this);
selectColorWindow = new PopupWindow(selectColorView,width,height);
}
selectColorWindow.setFocusable(true);
selectColorWindow.setOutsideTouchable(true);
selectColorWindow.setAnimationStyle(R.style.AnimationFade);
selectColorWindow.setBackgroundDrawable(new BitmapDrawable());
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
int xPos = windowManager.getDefaultDisplay().getWidth() - selectColorWindow.getWidth();
selectColorWindow.showAsDropDown(v, 0, 10);
}
/**
* 弹出选择提醒日期的Dialog
*/
private void showCustomView() {
MaterialDialog dialog = new MaterialDialog.Builder(this)
.title("选择提醒的日期和时间")
.customView(R.layout.dialog_select_alarm_clock, true)
.positiveText("保存")
.negativeText("取消")
.neutralText("放弃")
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
cancelAlarmReceiver(); // 先取消上一个闹钟
// 保存 闹钟 的状态和时间日期
note.setNoteType(BaseNote.NOTE_TYPE_REMIND); // 修改NOTE 的类型为 提醒
note.setAlarmState(BaseNote.NOTE_ALARM_STATE_VALID); // 修改闹钟状态为 有效
note.setAlarmDate(alarmDate.getText().toString() + " " + alarmTime.getText().toString());
openAlarmLayout();
String[] ymd = alarmDate.getText().toString().split("-");
String[] hms = alarmTime.getText().toString().split(":");
setAlarmReceiver(ymd[0],ymd[1],ymd[2],hms[0],hms[1]);
}
@Override
public void onNegative(MaterialDialog dialog) {
note.setNoteType(BaseNote.NOTE_TYPE_RECORD); // 修改NOTE 的类型为 记事
note.setAlarmState(BaseNote.NOTE_ALARM_STATE_INVALID);
closeAlarmLayout();
cancelAlarmReceiver();
}
}).build();
// 设置弹出的自定义窗口中的控件的属性和事件
setAlarmText(dialog);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
saveNoteState();
}
/**
* 设置dialog 中显示的提醒时间
* @param dialog
*/
private void setAlarmText(MaterialDialog dialog) {
alarmDate = (TextView) dialog.getCustomView().findViewById(R.id.alarm_date_tv);
alarmTime = (TextView) dialog.getCustomView().findViewById(R.id.alarm_time_tv);
if( (note.getAlarmState() == BaseNote.NOTE_ALARM_STATE_INVALID) || (note.getAlarmState() == BaseNote.NOTE_ALARM_STATE_OLD) ) {
alarmDate.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
alarmTime.setText(TimeUtils.getCurrentTimeInString(new SimpleDateFormat("HH:mm")));
}else if (note.getAlarmState() == BaseNote.NOTE_ALARM_STATE_VALID){
String[] dates = note.getAlarmDate().split(" ");
alarmDate.setText(dates[0]);
alarmTime.setText(dates[1]);
}
alarmDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
datePickerDialog.setVibrate(true);
datePickerDialog.setYearRange(1985, 2028);
datePickerDialog.setCloseOnSingleTapDay(false);
datePickerDialog.show(getSupportFragmentManager(), DATEPICKER_TAG);
}
});
alarmTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timePickerDialog.setVibrate(true);
timePickerDialog.setCloseOnSingleTapMinute(false);
timePickerDialog.show(getSupportFragmentManager(), TIMEPICKER_TAG);
}
});
}
/**
* 弹出选择插入图片的小窗口
* @param v
*/
private void showInsertPicWindow(View v) {
if(insertPicWindow == null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View insertPicView = inflater.inflate(R.layout.layout_insert_pic, null);
// 获取 View 的宽高
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
insertPicView.measure(w, h);
int height = insertPicView.getMeasuredHeight();
int width = insertPicView.getMeasuredWidth();
insertPicView.findViewById(R.id.take_photo_tv).setOnClickListener(this);
insertPicView.findViewById(R.id.album_tv).setOnClickListener(this);
insertPicWindow = new PopupWindow(insertPicView,width,height);
}
insertPicWindow.setFocusable(true);
insertPicWindow.setOutsideTouchable(true);
insertPicWindow.setAnimationStyle(R.style.AnimationFade);
insertPicWindow.setBackgroundDrawable(new BitmapDrawable());
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
int xPos = windowManager.getDefaultDisplay().getWidth() - insertPicWindow.getWidth();
insertPicWindow.showAsDropDown(v, 0, 10);
}
/**
* 展开图片列表
*/
private void showImageList(){
ObjectAnimator scaleYanimator = ObjectAnimator.ofFloat(imageListRecyclerView, "scaleY", 0,1);
ObjectAnimator.ofFloat(imageListRecyclerView, "pivotY", 0);
scaleYanimator.setDuration(500);
scaleYanimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
imageListRecyclerView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animation) {
hideImageList.setVisibility(View.VISIBLE);
showImageList.setVisibility(View.GONE);
imageListStateTxt.setText("隐藏图片列表");
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {}
});
scaleYanimator.start();
}
/**
* 收起图片列表的动画
*/
private void hideImageList(){
ObjectAnimator scaleYanimator = ObjectAnimator.ofFloat(imageListRecyclerView, "scaleY", 1, 0);
ObjectAnimator.ofFloat(imageListRecyclerView, "pivotY", 0);
scaleYanimator.setDuration(500);
scaleYanimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
hideImageList.setVisibility(View.GONE);
showImageList.setVisibility(View.VISIBLE);
imageListStateTxt.setText("显示图片列表");
imageListRecyclerView.setVisibility(View.GONE);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
scaleYanimator.start();
}
private void takePhotoFromCamera() {
String SDCardRoot = Environment.getExternalStorageDirectory().getPath() + File.separator;
File fileDir = new File(SDCardRoot + "jideNote" + File.separator + "img" + File.separator);
if (!fileDir.exists()) {
fileDir.mkdir(); //如果不存在则创建
}
File file = new File(fileDir,ImageUtils.getTempFileName()+".jpg");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
photoUri = Uri.fromFile(file);
LogUtils.e("get photoUri = " + photoUri.toString());
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(cameraIntent, REQ_TAKE_PHOTO);
}
private void pickPhotoFromAlbum(){
Intent albumIntent = new Intent();
albumIntent.setAction(Intent.ACTION_PICK);
albumIntent.setType("image/*");
startActivityForResult(albumIntent, REQ_PICK_PHOTO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
LogUtils.e("requestCode = " + requestCode);
switch (requestCode){
case REQ_PICK_PHOTO:
if(intent != null){
Uri uri = intent.getData();
LogUtils.e("REQ_PICK_PHOTO==",uri.toString());
note.addImageSet(uri);
initImageListData();
initRecyclerView();
// adapter.addItem(uri,imageUriList.size());
// showImageListLayout();
}
break;
case REQ_SHOW_IMAGE:
if(intent != null){
String uriString = intent.getStringExtra("UriString");
note.setImageSet(uriString);
initImageListData();
initRecyclerView();
}
break;
case REQ_TAKE_PHOTO:
if (resultCode == RESULT_OK) {
LogUtils.e("Result REQ_TAKE_PHOTO = " + photoUri.toString());
note.addImageSet(photoUri);
initImageListData();
initRecyclerView();
}
break;
default:
break;
}
}
/**
* 保存当前note 到数据库
*/
private void saveNoteState(){
note.setContent(contentEt.getText().toString());
note.setLastChangeDate(TimeUtils.getCurrentTimeInString());
note.setBgColor(bgColor);
if(!NoteApplication.getNoteApplication(this).isVisitor()){
note.setUserid(NoteApplication.getNoteApplication(this).getUser().getOpenid(this.getApplicationContext()));
}
dbHelper.sava(note);
// note.save();
LogUtils.e("Sava Note");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode){
case KeyEvent.KEYCODE_BACK:
exitNoteEditor();
break;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onStop() {
super.onStop();
saveNoteState();
}
@Override
protected void onDestroy() {
super.onDestroy();
MyActivityManager.getInstance().finishActivity(this.getClass());
}
/**
* 退出编辑器Activity
*/
private void exitNoteEditor(){
String contentStr = contentEt.getText().toString();
if(!contentStr.equals("")) {
saveNoteState();
setResult(RESULT_OK);
}else{
setResult(RESULT_CANCELED);
}
finish();
}
/**
* 开启一个闹钟
*/
private void setAlarmReceiver(String year,String month,String day,String hour,String minute ){
Intent receiverIntent = new Intent(getApplicationContext(), NoteAlarmReceiver.class);
long dbId = note.getId();
LogUtils.e(TAG,"dbId ==> "+dbId);
receiverIntent.putExtra(BaseNote.KEY_DB_ID,dbId );
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), note.getAlarmReqCode(), receiverIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.set(Integer.parseInt(year), Integer.parseInt(month)-1, Integer.parseInt(day), Integer.parseInt(hour), Integer.parseInt(minute));
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
LogUtils.e("YEAR MONTH DAY "+calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DAY_OF_MONTH));
LogUtils.e("HOUR MINUTE "+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));
long time = calendar.getTimeInMillis();
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
}
/**
* 取消闹钟
*/
private void cancelAlarmReceiver(){
Intent intent = new Intent(getApplicationContext(), NoteAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), note.getAlarmReqCode(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
/* 获取闹钟管理的实例 */
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
/* 取消 */
am.cancel(pendingIntent);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.back_img: // 退出
exitNoteEditor();
break;
case R.id.note_palette_img: // 调节背景颜色
showSelectColorWindow(v);
break;
case R.id.blue:
setBgColor(BaseNote.LIGHT_BLUE); // 设置背景颜色为 蓝
selectColorWindow.dismiss();
break;
case R.id.yellow:
setBgColor(BaseNote.LIGHT_YELLOW); // 设置背景颜色为 黄
selectColorWindow.dismiss();
break;
case R.id.red:
setBgColor(BaseNote.LIGHT_RED); // 设置背景颜色为 红
selectColorWindow.dismiss();
break;
case R.id.green:
setBgColor(BaseNote.LIGHT_GREEN); // 设置背景颜色为 绿
selectColorWindow.dismiss();
break;
case R.id.note_alarm_clock_img: // 设置闹钟
showCustomView();
break;
case R.id.note_added_img: // 添加附件(图片)
pickPhotoFromAlbum();
// showInsertPicWindow(v); // 弹出popupWindow ,选择多种图片来源(暂时不开放)
break;
case R.id.note_image_tip_tv: // 图片列表下方的文字,根据状态来改变图片列表的显示和隐藏
if(imageListState == SHOW){
hideImageList();
imageListState = HIDE;
}else {
showImageList();
imageListState = SHOW;
}
break;
// case R.id.note_image_hide_img:
// hideImageList();
// break;
// case R.id.note_image_show_img:
// showImageList();
// break;
case R.id.take_photo_tv: //拍照获取图片(该功能暂时屏蔽)
// takePhotoFromCamera();
insertPicWindow.dismiss();
break;
case R.id.album_tv: // 打开相册-选择图片
pickPhotoFromAlbum();
insertPicWindow.dismiss();
break;
case R.id.close_alarm_img: // 闹钟状态栏的关闭按钮
cancelAlarmReceiver();
note.setNoteType(BaseNote.NOTE_TYPE_RECORD); // 修改NOTE 的类型为 记事
note.setAlarmState(BaseNote.NOTE_ALARM_STATE_INVALID);
dbHelper.sava(note);
// note.save();
closeAlarmLayout();
break;
default:
break;
}
}
/**
* 选择Alarm 日期时间的 回调方法
* @param datePickerDialog 控件
* @param year 选择的年份
* @param month 选择的月份
* @param day 选择的日期
*/
@Override
public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {
int realMonth = month+1;
alarmDate.setText(year+"-"+realMonth+"-"+day);
}
@Override
public void onTimeSet(RadialPickerLayout radialPickerLayout, int hourOfDay, int minute) {
alarmTime.setText(hourOfDay+":"+minute);
}
}