日记app安卓
发布时间:2017-01-18 来源: 日记大全 点击:
日记app安卓篇一:基于android的日记本开发
西南科技大学 课程设计报告
课程名称: 软件设计基础设计名称: 基于android的日记本开发姓 名:学 号: 班 级: 通信1003班 指导教师:起止日期: 11.28——12.12
西南科技大学信息工程学院制
方 向 设 计 任 务 书
学生班级: 通信1003班 学生姓名:学号:
设计名称:基于android的日记本开发 起止日期: 11.28——12.12指导教师:
方 向 设 计 学 生 日 志
2
基于android的日记本开发
一、 摘要(150-250字)
伴随着无线移动设备的迅速发展,手机的日益普及成为主流,在这一关键时期,Android系统的推出使手机发展进入了一个新的领域。世界上一些知名移动设备生产厂商对于Android智能机的开发热情日益提高,Android系统的使用人群正在急速提升,Android应用程序的多样化使人们从手机中获得更多乐趣,方便着人们的生活,使Android得到了社会越来越多的认同。本次设计主要描述了基于android开发一个简易日记本的技术方法。
关键字:Android; DbAdapter;Activity;diary 二、 设计目的和意义
在中国,手机已经成为人们日常生活必不可少的一部分,智能手机在高校人群中逐渐得到了普及,Android手机凭借其优秀的系统性能以及良好的用户体验迅速得到了高校师生的青睐。在高校中,上课并不像高中时期有固定的教室和固定的时间,高校课程种类繁多,并且上课地点和时间不固定,一周内极少会出现重复课程,所以要将课程表完整的记忆下来是一项很艰难的事情,很多同学不得不随身携带一张课表来防止遗忘上课,但是还是不能完全避免该问题的发生,同时,作为一个当今高速发展的时代的成员,适应这个社会是必不能少的,在各种社交场合中,记住一些必须的信息很重要,而它们往往又繁琐又多,不易人为记住。基于这些问题,有必要设计一款方便小巧的简易日记本程序,可以让用户自定义文件,记住上课时间和地点,从而避免遗忘上课的事情出现,同时记住那些琐碎却有意义的小信息。而且,由于android系统市场的开放性和服务免费,它的应用程序方面就成了一块非常大的市场,。 三、 设计原理
用户在第一次进入程序时会看到到一个日记本的主界面,可进行日记文件的新建和删除操作,按menu键可以选择“帮助”和“退出”,程序主界面使用course_activity.java展示记录,从Diary_activity, DiaryEditActivity类中可以新建和删除日记信息,并在主界面中显示。程序的配置信息主要存在DbAdapter中,该信息在数据显示时读取必要的配置信息,在按钮监听函数中监听系统时间变化用来实现日记的创建功能。BaseColumns 是一个接口,里边有两个变量,一个是_ID="_id",一个是_COUNT="_ count" 。在Android当中,每一个数据库表至少有一个字段,而且这个字段是_id。所以当我们构造列名的辅助类时,直接实现BaseColumns ,这样我们便默认地拥有了_id字段。在我们的日记本的数据表里,一共有4个字段,分别是:"id"、"title"、"body"、"created"。在Android中鼓励使用内部类,这样不但使用方便,而且执行效率也高是请求数据的类型,例如,在例子当中定义的类型是diary。当然这一部分可以是0个片段或者多个片段构成,如果Content Provider只是暴露出了一种类型的数据,那么这部分可以为空,但是如果暴露出了多种,尤其是包含子类的时候,就不能为空,"1"这部分是允许为空的,如果为空,表示请求全部数据;如果不为空,表示请求特定ID的数据。DatabaseHelper是操作数据库的辅助类,通过这个类我们可以生成数据库,并且维护这个数据库。 在DiaryContentProvider中,我们定义了一些变量和常量,其中这些常量主要是描述数据库的信息。在删除方法中,rowId = uri.getPathSegments().get(1)负责得到rowId的值。 getPathSegments()方法得到一个string的list, db.delete(DIARY_TABLE_NAME, DiaryColumns.
_ID + "=" + rowId, null)是标准的SQLite删除操作。update()是更新一条数据的方法, 使用ContentProvider时首先得到SQLiteDatabase,然后得到rowId,最后再调用db.update(DIARY_ TABLE_NAME, values, DiaryColumns._ID + "="+ rowId, null)语句执行更新工作。3
其主要流程图如下:
功能模块:
四、 详细设计步骤
简易日记本应该具有日记本的基本功能,比如新建,编辑,删除,保存等,从这几方面初步想到应该有一个主类负责调用其他负责实现功能的类,这样整个程序会比较清晰,通过流程分析和可行性分析之后我开始查阅资料编写程序,本程序主要由六个类组成,它们分别为Dbadapter,help-activity,lookDiary,MainActivity,diary-activity和DiaryEditActivity ,
1.其中MainActivity类为整个应用的主Activity,其主要方法如下:
? onCreate:Activity主要重写方法之一,实现程序初始化和界面展示; ? find_and_modify_button:寻找并点击按钮; ? onClick(View v):点击当前所选按钮;
? onCreateOptionMenu:实现Option菜单的创建;
? onOptionsItemSelected:实现菜单项的点击事件响应;
界面设计方面通过RelativeLayout实现布局,使用了TextView,ImageButton文件列表通
4
过ListView实现界面展示。该类通过继承ListActivity类,用来显示ListView中的数据并实现对ListView上ImageView控件点击的统一响应。 其主要代码:public class MainActivity extends Activity
{//菜单选项
public static final int HELP = Menu.FIRST; public static final int EXIT = Menu.FIRST + 1; /** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle("小小日记本");find_and_modify_button();
Toast.makeText(MainActivity.this,
"欢迎使用简易日记本", Toast.LENGTH_SHORT).show(); } private void find_and_modify_button() {// TODO Auto-generated method stubButton btn_diary = (Button) findViewById(R.id.btn_diary);btn_diary.setOnClickListener(diary_listener); } private Button.OnClickListener diary_listener = new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(MainActivity.this, diary_activity.class); startActivity(intent);} } /** menu.findItem(EXIT_ID);找到特定的MenuItem* MenuItem.setIcon.可以设置menu按钮的背景*/ public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, HELP, 0, "帮助").setIcon(R.drawable.helps);menu.add(0, EXIT, 0, "退出").setIcon(R.drawable.exit);return true; } public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case HELP:Intent help_intent = new Intent(); help_intent.setClass(MainActivity.this, help_activity.class); startActivity(help_intent);break;case EXIT:
5
日记app安卓篇二:android日记本代码
一、实验详细代码
(1) 布局的代码
a. edit.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="主题"
android:padding="2px" />
<EditText android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="内容" />
<EditText android:id="@+id/body"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:scrollbars="vertical" android:gravity="top" />
<Button android:id="@+id/confirm" android:text="确定"android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
b. list.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@+id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="按下MENU写日记!!" />
</LinearLayout>
c. row.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/row"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="30px"
android:maxWidth="200dip"
android:textSize="22sp"
android:layout_marginTop="10dip"
android:text="第1组第1项" />
<TextView android:id="@+id/created"
android:layout_width="wrap_content"
android:layout_height="35px"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_marginTop="10dip"
android:text="2011年10月30日" />
</RelativeLayout>
(2) 主要程序代码
a. DiaryBookDemo代码
public class DiaryBookDemo extends ListActivity {
private static final int ACTIVITY_CREATE = 0;
private static final int ACTIVITY_EDIT = 1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private DiaryDbAdapter mDbHelper;
private Cursor mDiaryCursor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
mDbHelper = new DiaryDbAdapter(this);
mDbHelper.open();
renderListView();
startService(new Intent(this, TimerServer.class)); }
private void renderListView() {
mDiaryCursor = mDbHelper.getAllNotes();
startManagingCursor(mDiaryCursor);
String[] from = new String[] { DiaryDbAdapter.KEY_TITLE, DiaryDbAdapter.KEY_CREATED };
int[] to = new int[] { R.id.text1, R.id.created };
SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.row, mDiaryCursor, from, to);setListAdapter(notes);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, INSERT_ID, 0, "插入");
menu.add(0, DELETE_ID, 0, "删除");
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case INSERT_ID:
createDiary();
return true;
case DELETE_ID:
mDbHelper.deleteDiary(getListView().getSelectedItemId());
renderListView();
return true;
}
return super.onMenuItemSelected(featureId, item); }
private void createDiary() {
Intent i = new Intent(this, ActivityDiaryEdit.class);startActivityForResult(i, ACTIVITY_CREATE);
}
@Override
// 需要对position和id进行一个很好的区分
// position指的是点击的这个ViewItem在当前ListView中的位置 // 每一个和ViewItem绑定的数据,肯定都有一个id,通过这个id可以找到那条数据。
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor c = mDiaryCursor;
c.moveToPosition(position);
Intent i = new Intent(this, ActivityDiaryEdit.class);i.putExtra(DiaryDbAdapter.KEY_ROWID, id);
i.putExtra(DiaryDbAdapter.KEY_TITLE, c.getString(c
.getColumnIndexOrThrow(DiaryDbAdapter.KEY_TITLE)));
i.putExtra(DiaryDbAdapter.KEY_BODY, c.getString(c
.getColumnIndexOrThrow(DiaryDbAdapter.KEY_BODY)));
startActivityForResult(i, ACTIVITY_EDIT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);renderListView();
}
}
b. ActivityDiaryEdit的代码
public class ActivityDiaryEdit extends Activity {
private EditText mTitleText;
private EditText mBodyText;
private Long mRowId;
private DiaryDbAdapter mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
mDbHelper = new DiaryDbAdapter(this);
mDbHelper.open();
setContentView(R.layout.edit);
mTitleText = (EditText) findViewById(R.id.title);mBodyText = (EditText) findViewById(R.id.body);
Button confirmButton = (Button)
findViewById(R.id.confirm);
mRowId = null;
// 每一个intent都会带一个Bundle型的extras数据。Bundle extras = getIntent().getExtras();
if (extras != null) {
String title =
extras.getString(DiaryDbAdapter.KEY_TITLE);
String body =
extras.getString(DiaryDbAdapter.KEY_BODY);
mRowId = extras.getLong(DiaryDbAdapter.KEY_ROWID);
if (title != null) {
mTitleText.setText(title);
}
if (body != null) {
mBodyText.setText(body);
}
}
confirmButton.setOnClickListener(new
View.OnClickListener() {
public void onClick(View view) {
String title = mTitleText.getText().toString(); String body = mBodyText.getText().toString(); if (mRowId != null) {
mDbHelper.updateDiary(mRowId, title, body); } else
mDbHelper.createDiary(title, body); Intent mIntent = new Intent();
setResult(RESULT_OK, mIntent);
日记app安卓篇三:安卓开发实习_个人日志
中软国际 长沙ETC 实 习 实 训 日 志
相关热词搜索:日记 app 日本appstore有安卓吗 妹调日记安卓
热点文章阅读