package siso.smartnotef.activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import siso.smartnotef.R;import siso.smartnotef.adapter.NotepadeAdapter;import siso.smartnotef.db.DataHelper;import siso.smartnotef.global.GlobalParams;import siso.smartnotef.model.NotepadBean;import siso.smartnotef.model.NotepadWithDataBean;import siso.smartnotef.service.MainService;public class MainActivity extends AppCompatActivity implements View.OnClickListener, NotepadeAdapter.ClickFunction { private TextView tv_add; private ListView lv_contents; private List<NotepadWithDataBean> notepadWithDataBeanList; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent1 = new Intent(MainActivity.this, MainService.class);startService(intent1);findViews();setListeners();initView(); } private void findViews() {tv_add = (TextView) findViewById(R.id.tv_add);lv_contents = (ListView) findViewById(R.id.lv_content); } private void setListeners() {tv_add.setOnClickListener(this); } private void initView() {DataHelper helper = new DataHelper(MainActivity.this);notepadWithDataBeanList = new ArrayList<NotepadWithDataBean>();List<NotepadBean> notepadBeanList = helper.getNotepadList();for (int i = 0; i < notepadBeanList.size(); i++) { if (0 == notepadWithDataBeanList.size()) {NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();notepadWithDataBean.setData(notepadBeanList.get(0).getDate());notepadWithDataBeanList.add(notepadWithDataBean); } boolean flag = true; for (int j = 0; j < notepadWithDataBeanList.size(); j++) {int date = notepadWithDataBeanList.get(j).getData();if (date == notepadBeanList.get(i).getDate()) { notepadWithDataBeanList.get(j).getNotepadBeenList().add(notepadBeanList.get(i)); flag = false; break;} } if (flag) {NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();notepadWithDataBean.setData(notepadBeanList.get(i).getDate());notepadWithDataBeanList.add(notepadWithDataBean);notepadWithDataBeanList.get(notepadWithDataBeanList.size() - 1).getNotepadBeenList().add(notepadBeanList.get(i)); }}NotepadeAdapter adapter = new NotepadeAdapter(MainActivity.this, notepadWithDataBeanList, this);lv_contents.setAdapter(adapter);//setListViewHeightBasedOnChildren(lv_contents); } public void setListViewHeightBasedOnChildren(ListView listView) {if (listView == null) return;ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) { // pre-condition return;}int totalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));listView.setLayoutParams(params); } @Override public void onClick(View v) {switch (v.getId()) { case R.id.tv_add:Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_ADD);intent.putExtras(bundle);intent.setClass(MainActivity.this, AddContentActivity.class);startActivityForResult(intent, GlobalParams.ADD_REQUEST);break;} } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) { case GlobalParams.ADD_REQUEST:if (GlobalParams.ADD_RESULT_OK == resultCode) { initView();}break;} } @Override public void clickItem(int position, int itemPosition) {Bundle bundle = new Bundle();bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_EDIT);bundle.putSerializable(GlobalParams.BEAN_KEY, notepadWithDataBeanList.get(position));bundle.putInt(GlobalParams.ITEM_POSITION_KEY, itemPosition);Intent intent = new Intent(this, AddContentActivity.class);intent.putExtras(bundle);startActivityForResult(intent, GlobalParams.ADD_REQUEST); } @Override public void longClickItem(final int position, final int itemPostion) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setMessage("确认删除吗?");builder.setTitle("提示");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {DataHelper helper = new DataHelper(MainActivity.this);helper.deleteNotepad(notepadWithDataBeanList.get(position).getNotepadBeenList().get(itemPostion).getId());initView(); }});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {dialog.dismiss(); }});builder.create().show(); }}AddContentActivity.java代码:package siso.smartnotef.activity;import android.app.DatePickerDialog;import android.app.TimePickerDialog;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.DatePicker;import android.widget.EditText;import android.widget.TextView;import android.widget.TimePicker;import android.widget.Toast;import java.util.Calendar;import siso.smartnotef.R;import siso.smartnotef.db.DataHelper;import siso.smartnotef.global.GlobalParams;import siso.smartnotef.model.NotepadBean;import siso.smartnotef.model.NotepadWithDataBean;public class AddContentActivity extends AppCompatActivity implements View.OnClickListener { private TextView tv_save; private TextView tv_date; private TextView tv_time; private TextView tv_cancel; private EditText et_content; private String time = ""; private String date = ""; private Bundle bundle; private int type; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add_content);bundle=getIntent().getExtras();type=bundle.getInt(GlobalParams.TYPE_KEY);findViews();setListeners();initDate(); } private void findViews() {et_content=(EditText)findViewById(R.id.et_content);tv_save = (TextView) findViewById(R.id.tv_save);tv_date = (TextView) findViewById(R.id.tv_date);tv_time = (TextView) findViewById(R.id.tv_time);tv_cancel=(TextView)findViewById(R.id.tv_cancel); } private void setListeners() {tv_save.setOnClickListener(this);tv_date.setOnClickListener(this);tv_time.setOnClickListener(this);tv_cancel.setOnClickListener(this); } private void initDate() {Calendar c = Calendar.getInstance();int year=c.get(Calendar.YEAR);int month=c.get(Calendar.MONTH);int day=c.get(Calendar.DAY_OF_MONTH);date=getDate(year,month,day);if(type==GlobalParams.TYPE_EDIT){ NotepadWithDataBean notepadWithDataBean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY)); et_content.setText(notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getContent()); date=notepadWithDataBean.getData()+""; tv_date.setText(date); time=notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getTime(); tv_time.setText(time);} } private String getDate(int year,int month,int day){String date="";date+=year;if(month<9){ date=date+"0"+(month+1);}else{ date+=(month+1);}if(day<10){ date=date+"0"+day;}else { date+=day;}return date; } @Override public void onClick(View v) {switch (v.getId()) { case R.id.tv_save:if(type==GlobalParams.TYPE_EDIT){ update();}else { save();}break; case R.id.tv_date:selectDateDialog();break; case R.id.tv_time:selectTimeDialog();break; case R.id.tv_cancel:finish();break;} } private void selectDateDialog(){Calendar c = Calendar.getInstance();int year=c.get(Calendar.YEAR);final int month=c.get(Calendar.MONTH)+1;int day=c.get(Calendar.DAY_OF_MONTH);new DatePickerDialog(AddContentActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {date=getDate(year,monthOfYear,dayOfMonth);tv_date.setText(date); }},year,month,day).show(); } private void selectTimeDialog() {Calendar c = Calendar.getInstance();int mHour = c.get(Calendar.HOUR_OF_DAY);int mMinute = c.get(Calendar.MINUTE);new TimePickerDialog(AddContentActivity.this,new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) {time=formatTime(hourOfDay,minute);tv_time.setText(time); }}, mHour, mMinute, true).show(); } private String formatTime(int hour,int minute){String time=hour+":";if(minute<10){ time=time+"0"+minute;}else{ time+=minute;}return time; } private void save() {String content = et_content.getText().toString();if ("".equals(content)) { Toast.makeText(AddContentActivity.this, "请输入内容", Toast.LENGTH_SHORT).show(); return;}if ("".equals(time)) { Toast.makeText(AddContentActivity.this, "请选择时间", Toast.LENGTH_SHORT).show(); return;}NotepadBean notepadBean = new NotepadBean();notepadBean.setContent(content);notepadBean.setDate(Integer.parseInt(date));notepadBean.setTime(time);DataHelper helper = new DataHelper(AddContentActivity.this);helper.insertData(notepadBean);setResult(GlobalParams.ADD_RESULT_OK);finish(); } private void update(){DataHelper helper=new DataHelper(AddContentActivity.this);NotepadWithDataBean bean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY));int itemPosition=bundle.getInt(GlobalParams.ITEM_POSITION_KEY);helper.update(bean.getNotepadBeenList().get(itemPosition).getId(),date,time,et_content.getText().toString());setResult(GlobalParams.ADD_RESULT_OK);finish(); }}RemindActivity.java代码:package siso.smartnotef.activity;import android.media.MediaPlayer;import android.media.RingtoneManager;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.IOException;import siso.smartnotef.R;import siso.smartnotef.global.GlobalParams;public class RemindActivity extends AppCompatActivity { private TextView tv_content; private Button bt_confirm; private MediaPlayer mMediaPlayer;; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_remind);findViews();setListeners();Bundle bundle=getIntent().getExtras();String content=bundle.getString(GlobalParams.CONTENT_KEY);tv_content.setText(content);playSound(); } private void findViews(){tv_content=(TextView)findViewById(R.id.tv_content);bt_confirm=(Button) findViewById(R.id.bt_confirm); } private void setListeners(){bt_confirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {if(null!=mMediaPlayer){ mMediaPlayer.stop(); finish();} }}); } public void playSound() {new Thread(new Runnable() { @Override public void run() {mMediaPlayer = MediaPlayer.create(RemindActivity.this, getSystemDefultRingtoneUri());mMediaPlayer.setLooping(true);//设置循环try { mMediaPlayer.prepare();} catch (IllegalStateException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}mMediaPlayer.start(); }}).start(); } //获取系统默认铃声的Uri private Uri getSystemDefultRingtoneUri() {return RingtoneManager.getActualDefaultRingtoneUri(RemindActivity.this,RingtoneManager.TYPE_RINGTONE); }}activity_main.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="siso.smartnotef.activity.MainActivity"> <RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/title_color"android:paddingLeft="10dp"android:paddingRight="10dp"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="18sp" android:layout_centerInParent="true" android:text="智能记事本"/><TextView android:id="@+id/tv_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:text="新增" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:textSize="13sp"/> </RelativeLayout> <ListViewandroid:id="@+id/lv_content"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView></LinearLayout>activity_add_content.xml内容:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_add_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="siso.smartnotef.activity.AddContentActivity"> <RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/title_color"android:paddingLeft="10dp"android:paddingRight="10dp"><TextView android:id="@+id/tv_cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="取消" android:textColor="@color/white"/><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="18sp" android:layout_centerInParent="true" android:text="智能记事本"/><TextView android:id="@+id/tv_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:text="保存" android:layout_centerVertical="true" android:layout_alignParentRight="true" /> </RelativeLayout> <LinearLayoutandroid:layout_marginTop="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_gravity="center_horizontal"><TextView android:id="@+id/tv_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="今天"/><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" -- "/><TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="请选择时间" /> </LinearLayout> <EditTextandroid:id="@+id/et_content"android:layout_marginTop="10dp"android:layout_width="match_parent"android:layout_height="match_parent"android:inputType="textMultiLine"android:gravity="left|top"android:layout_margin="20dp"android:padding="10dp"android:hint="请输入内容"android:background="@drawable/edit_back"/></LinearLayout>activity_remind.xml内容:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" tools:context="siso.smartnotef.activity.RemindActivity"> <TextViewandroid:id="@+id/tv_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" /> <Buttonandroid:id="@+id/bt_confirm"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="取消" /></LinearLayout>AndroidManifest.xml内容:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="siso.smartnotef"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.AppCompat.Light.NoActionBar"><activity android:name=".activity.MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity><receiver android:name=".receiver.MainReceiver"> <intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter></receiver><activity android:name=".activity.AddContentActivity" /><service android:name=".service.MainService" android:enabled="true" android:exported="true" /><activity android:name=".activity.RemindActivity" ></activity> </application></manifest>项目结构如图:





以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。