Android实现记事本功能(26)

作者:逆世风灵 时间:2023-02-17 22:30:23 

本文实例为大家分享了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>

项目结构如图:

Android实现记事本功能(26)

项目运行结果如图:

Android实现记事本功能(26)

Android实现记事本功能(26)

Android实现记事本功能(26)

Android实现记事本功能(26)

标签:Android,记事本
0
投稿

猜你喜欢

  • Android高仿微信对话列表滑动删除效果

    2022-10-29 21:12:43
  • springboot 整合 sa-token简介及入门教程

    2023-03-24 01:10:45
  • C#中WebBroeser控件用法实例教程

    2021-09-14 18:11:05
  • Java4Android开发教程(一)JDK安装与配置

    2022-02-04 22:33:12
  • Unity实现游戏伤害数字显示HUD的方法

    2023-05-18 06:47:01
  • springboot调用支付宝第三方接口(沙箱环境)

    2023-11-25 06:12:08
  • Java中实现简单的Excel导出

    2021-10-21 07:23:25
  • springboot如何使用AOP做访问请求日志

    2023-11-11 10:12:19
  • Groovy的规则脚本引擎实例解读

    2023-07-11 21:24:04
  • java web手写实现分页功能

    2022-02-04 02:23:15
  • C#多线程之Thread中Thread.IsAlive属性用法分析

    2023-07-11 11:44:12
  • Android客户端程序Gradle如何打包

    2023-06-05 14:10:07
  • Android中使用TextView实现文字跑马灯效果

    2023-07-28 11:07:33
  • Java 实现Excel文档添加超链接的代码

    2021-09-05 20:06:52
  • Java中线程的等待与唤醒_动力节点Java学院整理

    2023-07-17 04:03:05
  • Android Studio配置国内镜像源(利用hosts)

    2023-05-29 18:47:54
  • Android自定义弹出框dialog效果

    2023-06-29 14:14:32
  • java 中newInstance()方法和new关键字的区别

    2023-11-25 07:17:26
  • Android Studio 3.1.3升级至3.6.1后旧项目的兼容操作方法

    2022-03-27 10:15:41
  • Android列表实现(2)_游标列表案例讲解

    2022-11-15 16:49:55
  • asp之家 软件编程 m.aspxhome.com