安卓Andriod使用入门(二十六)【记事本】

来源:互联网 发布:js获取表单某个数据 编辑:程序博客网 时间:2024/06/05 04:40

一个伟大的人有两颗心:一颗心流血;另一颗心宽容。


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>

项目结构如图:

这里写图片描述


项目运行结果如图:

这里写图片描述


这里写图片描述


这里写图片描述


这里写图片描述

0 0
原创粉丝点击