首页 > 系统 > Android > 正文

Android实现记事本功能(26)

2019-12-12 03:51:04
字体:
来源:转载
供稿:网友

本文实例为大家分享了Android实现记事本功能的具体代码,供大家参考,具体内容如下

MainActivity.java代码:

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"> <RelativeLayout  android: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> <ListView  android: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"> <RelativeLayout  android: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> <LinearLayout  android: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> <EditText  android: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"> <TextView  android:id="@+id/tv_content"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_gravity="center_horizontal" /> <Button  android: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" /> <application  android: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>

项目结构如图:

这里写图片描述

项目运行结果如图:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表