在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → Android Dayplan时间管理h计划

Android Dayplan时间管理h计划

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:2.70M
  • 下载次数:23
  • 浏览次数:212
  • 发布时间:2020-01-11
  • 实例类别:Android平台开发
  • 发 布 人:huangwb0113
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android and 计划 日历

实例介绍

【实例简介】

规划功能

用户可以在前一天晚上做好第二天的规划,添加必要的任务事项,包括任务描述,任务的紧迫性(重要紧迫、重要不紧迫、紧迫不重要、不紧迫不重要),截止时间,并且可以添加一张相关的图片作为提示。

提醒功能

用户可以为每个事项添加提醒功能,每当截止时间到的时候,DayPlan给出一个简短的提醒。DayPlan致力于在提醒用户的同时不过分打扰用户。

分享功能

DayPlan可以从某个任务生成一个描述该任务的字符串,并分享到其他应用。


【实例截图】 

from clipboard


from clipboard




【核心代码】

package cn.edu.zju.isee.www.dayplan;

import java.util.Calendar;
import java.util.Date;
import java.util.UUID;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.NavUtils;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class PlanEditFragment extends Fragment{
	public static final String			EXTRA_PLAN			="cn.edu.zju.isee.www.dayplan";
	public static final String			EXTRA_PLAN_ID		="extra_id";
	private static final String			TAG					="PlanEditFragment";	
	private static final String 		DIALOG_DATE			="date";
	private static final String 		DIALOG_TYPE			="type";
	private static final int 			REQUEST_DATE		=0;
	private static final int 			REQUEST_PHOTO		=1;
	private static final int			REQUEST_TIME		=2;
	private static final int 			REQUEST_TYPE		=3;
	private Plan 						mPlan;
	private EditText					mTitleField;
	private Button						mDateButton;
	private Button						mShareButton;
	private Button						mAlarmButton;
	private Button						mAnalyseButton;
	private ImageButton					mPhotoButton;
	private CheckBox					mSolvedCheckBox;
	private ImageView					mPhotoView;
	private TextView					mTypeTextView;
	private ImageView					mTypeImageView;
	
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		UUID planId=(UUID)getArguments().getSerializable(EXTRA_PLAN_ID);
		mPlan=SinglePlanLab.getInstance(getActivity()).getPlan(planId);
		setHasOptionsMenu(true);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View v=inflater.inflate(R.layout.fragment_plan_edit, container,false);
		
		if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB){
			if(NavUtils.getParentActivityIntent(getActivity())!=null){
				getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
			}
		}
		
		mTitleField=(EditText)v.findViewById(R.id.plan_title);
		mTitleField.setText(mPlan.getTitle());
		mTitleField.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				mPlan.setTitle(s.toString());
				
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}
			
			@Override
			public void afterTextChanged(Editable s) {
			}
		});
		
		mDateButton=(Button)v.findViewById(R.id.plan_date);
		mDateButton.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				FragmentManager fm=getActivity().getSupportFragmentManager();
				DatePickerFragment dialog=DatePickerFragment.newInstance(mPlan.getDate());
				dialog.setTargetFragment(PlanEditFragment.this,REQUEST_DATE);
				dialog.show(fm,DIALOG_DATE);
				
			}
		});
		updateDate();
		
		mSolvedCheckBox=(CheckBox)v.findViewById(R.id.plan_solved);
		if(mPlan.getSolved()==1){
			mSolvedCheckBox.setChecked(true);
		}else{
			mSolvedCheckBox.setChecked(false);
		}
		mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if(isChecked){
					mPlan.setSolved(1);
				}else{
					mPlan.setSolved(0);
				}
			}
		});
		
		mPhotoButton=(ImageButton)v.findViewById(R.id.plan_imageButton);
		mPhotoButton.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent i=new Intent(getActivity(),PlanCameraActivity.class);
				startActivityForResult(i, REQUEST_PHOTO);
			}
		});
		
		mPhotoView=(ImageView)v.findViewById(R.id.plan_imageView);
		mPhotoView.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent i=new Intent(getActivity(),ImageActivity.class);
				Photo p=mPlan.getPhoto();
				if(p!=null){
					String path=getActivity().getFileStreamPath(p.getFileName()).getAbsolutePath();
					i.putExtra(ImageFragment.EXTRA_IMAGE_PATH, path);
					startActivity(i);
				}
			}
		});
		
		mShareButton=(Button)v.findViewById(R.id.plan_shareButton);
		mShareButton.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent i=new Intent(Intent.ACTION_SEND);
				i.setType("text/plain");
				i.putExtra(EXTRA_PLAN, getText());
//
				startActivity(i);
			}
		});
		
		mAlarmButton=(Button)v.findViewById(R.id.plan_alarmButton);
		mAlarmButton.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Calendar currentTime=Calendar.getInstance();
				final AlarmManager alarmManager=(AlarmManager)getActivity().
						getSystemService(getActivity().ALARM_SERVICE);
				Intent i=new Intent(getActivity(),AlarmActivity.class);
				i.putExtra(EXTRA_PLAN_ID, mPlan.getId().toString());
				final PendingIntent pi=PendingIntent.getActivity(getActivity(), REQUEST_TIME, i, 0);
				if(mPlan.getIsSetAlarm()==0){
					new TimePickerDialog(getActivity(), 
							new OnTimeSetListener() {
								
								@Override
								public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
									Calendar c=Calendar.getInstance();
									c.setTime(mPlan.getDate());
									c.set(Calendar.HOUR_OF_DAY,hourOfDay);
									c.set(Calendar.MINUTE,minute);
									Date d=c.getTime();
									mPlan.setDate(d);
									mPlan.setIsSetAlarm(1);
									alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pi);
									
									//
									Toast.makeText(getActivity(), "提醒设置完毕", Toast.LENGTH_SHORT).show();
								}
							}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime.get(Calendar.MINUTE),
							true).show();
					mAlarmButton.setText("取消提醒");
					mPlan.setIsSetAlarm(1);
				}else{
					alarmManager.cancel(pi);
					Toast.makeText(getActivity(), "提醒已取消", Toast.LENGTH_SHORT).show();
					mAlarmButton.setText("提醒我");
					mPlan.setIsSetAlarm(0);
				}
			}
		});
		
		mTypeTextView=(TextView)v.findViewById(R.id.plan_typeTextView);
		mTypeImageView=(ImageView)v.findViewById(R.id.plan_typeImageView);
		updateType();
		mTypeTextView.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				FragmentManager fm=getActivity().getSupportFragmentManager();
				TypeSelectFragment dialog=TypeSelectFragment.newInstance(mPlan.getType());
				dialog.setTargetFragment(PlanEditFragment.this,REQUEST_TYPE);
				dialog.show(fm,DIALOG_TYPE);
			}
		});
		
		return v;
	}
	
	
	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(resultCode!=Activity.RESULT_OK){
			return;
		}
		if(requestCode==REQUEST_DATE){
			Date date=(Date)data.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
			mPlan.setDate(date);
			updateDate();
		}else if(requestCode==REQUEST_PHOTO){
			String fileName=data.getStringExtra(PlanCameraFragment.EXTRA_PHOTO_NAME);
			if(fileName!=null){
				Photo photo=new Photo(fileName);
				mPlan.setPhoto(photo);
				showPhoto();
				Log.d(TAG,"plan:" mPlan.getTitle() " has a photo");
			}
		}else if(requestCode==REQUEST_TYPE){
			String type=(String)data.getSerializableExtra(TypeSelectFragment.EXTRA_TYPE);
			mPlan.setType(type);
			//.........
			updateType();
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

	public static PlanEditFragment newInstance(UUID planId){
		Bundle args=new Bundle();
		args.putSerializable(EXTRA_PLAN_ID, planId);
		PlanEditFragment fragment=new PlanEditFragment();
		fragment.setArguments(args);
		
		return fragment;
	}
	public void updateDate(){
		mDateButton.setText("" mPlan.getYear() "-" mPlan.getMonth() "-" mPlan.getDay());
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch(item.getItemId()){
			case android.R.id.home:
				if(NavUtils.getParentActivityIntent(getActivity())!=null){
					NavUtils.navigateUpFromSameTask(getActivity());
				}
				return true;
			default:
				return super.onOptionsItemSelected(item);
				
		}
	}
	
	
	
	@Override
	public void onStart() {
		super.onStart();
		showPhoto();
	}

	
	@Override
	public void onStop() {
		super.onStop();
		ImageUtils.cleanImageView(mPhotoView);
	}
	

	@Override
	public void onPause() {
		super.onPause();
		SinglePlanLab.getInstance(getActivity()).savePlans();
	}

	private void showPhoto(){
		Photo p=mPlan.getPhoto();
		Bitmap b=null;
		if(p!=null){
			String path=getActivity().getFileStreamPath(p.getFileName()).getAbsolutePath();
			b=ImageUtils.decodeSampledBitmapFromFile(path, 240, 240);
		}
		mPhotoView.setImageBitmap(b);
	}
	
	private void updateType(){
		if(mPlan.getType().equals("重要且紧迫")){
			mTypeTextView.setText("      重要且紧迫");
			mTypeImageView.setBackgroundResource(android.R.color.holo_green_light);
					
		}else if(mPlan.getType().equals("重要不紧迫")){
			mTypeTextView.setText("      重要不紧迫");
			mTypeImageView.setBackgroundResource(android.R.color.holo_blue_bright);
		}else if(mPlan.getType().equals("紧迫不重要")){
			mTypeTextView.setText("      紧迫不重要");
			mTypeImageView.setBackgroundResource(android.R.color.holo_purple);
		}else if(mPlan.getType().equals("不重要不紧迫")){
			mTypeTextView.setText("      不重要不紧迫");
			mTypeImageView.setBackgroundResource(android.R.color.holo_orange_light);
		}else{
			mTypeTextView.setText("      未分类");
			mTypeImageView.setBackgroundResource(android.R.color.darker_gray);
			
		}
	}
	
	private String	getText(){
		return new String(mPlan.getMonth() "-" mPlan.getDay() " \n" mPlan.getTitle() 
				"\n 任务类型" mPlan.getType());
	}
}

标签: Android and 计划 日历

实例下载地址

Android Dayplan时间管理h计划

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警