安卓日记app
发布时间:2017-02-14 来源: 日记大全 点击:
安卓日记app篇一:安卓开发实习_个人日志
中软国际 长沙ETC 实 习 实 训 日 志
安卓日记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篇三:安卓学习日记
2016.2.21
今天开始以类的方式来分析整个工程,之前做的太繁琐了。没有条理性,目的应该是要看java和andorid的源码,弄清楚为什么要这样写。
首先还是看main activity
一个imageButton
就是可以加图片的按钮,我们一般喜欢用按下和不按下是不同颜色的,这里我们可以通过在按下和不按下的时候用不同的图片来做到
这里用到了xml的selector机制
如果单独只要一个图片的话,可以写
setImageReource(int )
这样也可以。
我们看到它在androdi:src=”@android:drawable/ic_menu_camera”
这里不是写的@drawable
而是@android:drawable
这个是因为android的sdk里面本身就有很多的图片素材,在
D:\elipse\eclipse\sdk\platforms\android-21\data\res\drawable-hdpi
里面
实际编一下发现自己啥都不会了,首先就是这个manifest
看一下manifest有什么作用
manifest这个东西是一个叫做AndroidManifest.xml的文件,而且也只能叫做这个名字
这个东西必须要位于app的根目录
1、这个manifest必须要提供这个app的包名,用这个包名来唯一确定我这个app
而且在gen这个目录里面,就是自动生成R的那个目录里面,这个报名就是我这个app的包名
所以manifest最基本的写法就是
<manifest
xmlns:android=
package=”com.maowei.test”
>
</manifest>
2、manifest要描述一些这个app所需要具备的条件:比如sdk版本信息、app所需要具备的权限等等。
<uses-sdk
android:minSdkVersion=“16”
android:targetSdkVersion=”21”/>
<manifest>和<appalication>是有且仅有一次的。
如果要定义一个<activity>,<service>,<BroadcastReceiver>,<ContentProvider>那么需要指明name属性,这个name需要和对应的包名的完整路径一致
但是这里有这样一个情况,比如我的manifest里面声明了
<manifest package=”com.maowei.test”…>
<appalication…>
<activity android:name=”com.maowei.test.SecretService”…>
</activity>
</appalication>
</manifest>
因为我这里activity前面的部分对应的和manifest的package是一样的,我就可以简写成 <manifest package=”com.maowei.test”…>
<appalication…>
<activity android:name=”.SecretService”…>
</activity>
</appalication>
</manifest>
注意前面是有一个”.”的
本来我以为写了manifest,appalication,activity就好了,但是实际过程中发现了一个问题,就是这个程序安装了,却没有图标,也不能正常启动。导致你在android的桌面上根本找不到这个app
后来加了一个<intent-filter>就好了,
这样写的
所以很有必要看一下intent-filter的内容
首先就要说一下intent这个类,这个是用来描述一系列操作信息的一个类。
这个问题解决了为什么我们的activity之间是可以相互跳转的。
比如我们要从一个activity跳转到另一个activity,一般我们会有一个触发事件,比如一个button被按下了,那么为什么按下了就会跳到另一个activity呢,因为我们在button的onClickListener里面new了一个intent,这个intent会跳到我们指定的activity
这个就是显式intent的作用,直接说明,从哪个activity跳到哪个activity(intent不止可以完成activity到activity之间的跳转,还可以启动Service、还有Broadcast等等) 这里以activity为例子
比如我要从activity1跳转到activity2
那么我就在activity1里面这样写:
Intent intent1 = new Intent(this,activity2.class);
startActivity(intent);
这里用了intent的这个构造函数,用于从一个context跳到另一个类里面。
这里还用了startActivity(intent)这个函数,这个是在Activity类里面的一个函数。
当然intent里面还有对应的方法可以设置需要在哪两个组件之间跳转
比如setComponent 1. ComponentName componentName = new ComponentName(this, SecondActivity.class);
2. // 或者
ComponentName componentName = new ComponentName(this, "com.example.app016.SecondActivity");
3. // 或者
ComponentName componentName = new ComponentName(this.getPackageName(), "com.example.app016.SecondActivity");
4.
5. Intent intent = new Intent();
6. intent.setComponent(componentName);
7. startActivity(intent);
还有直接设置类的
setClass
Intent intent1 = new Intent();
intent1.setClass(this,activity2.class);
startActivity(intent1);
这种直接跳转的方式就适合于那种我在一个应用程序的内部自己跳转。
但是思考这样一个问题,如果我一个应用程序需要用到打电话这个功能,也就是说我需要从当前的activity跳转到系统的打电话的功能上面去的话,那么怎样才可以呢?
又或者是不是打电话,而是一个分享的功能,我要分享到QQ、微博,但是我现在又不知道你手机上有没有QQ,微博,那我怎么才能实现这个功能呢。
这里涉及到了android的一个轮询机制,就是我在编这个app的时候就说明,我哪个activity是有怎样的功能的,然后我在用其他的应用程序如果需要这样的功能,那么我就在我整个安装的应用程序里面找,那个app的哪个activity能够满足这样的功能,那么我就可以控制直接跳转到这个activity里面,从而完成了应用程序之间的交互。
这里我们就发现了manifest这个东西,相当于是定下了我这个app的一个特性,如果有什么用得到这个app的特点的话,我就可以通过轮询然后就能进入这个app,下面看例子
如果来在manifest里面说明我这个app的特点呢?
用<intent-filter>
比如我在manifest里面写了
<manifest xmlns:android=https://schemas.android.com/apk/res/android
package=”com.maowei.test”>
<application
android:icon=”@drawable/i(转 载 于:wWW.ZHaoqT.nEt 蒲 公英文 摘:安卓日记app)c_launcher”>
<activity
android:name=”com.maowei.Test”
android:label = “@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity>
</application>
</manifest>
必须要有这个intent-filter
这样我的这个app才能识别我进入这个app的时候哪个是main,一开始进入哪个activity
比如我声明我的这个app有拨号功能
<activity
android:name=”com.maowei.Test”>
<intent-filter>
<action android:name=”android.intent.action.DIAL”>
<category android:name=”android.intent.category.DEFAULT”/>
</activity>
这样,当我另一个activity写了个这个
Intent intent1 = new Intent(“android.intent.action.DIAL”);
startActivity(intent1);
这时候就会跳出一个提示框去让你选择所有intent_filter里面有这个拨号功能的程序
当然,我们也可以自定义我们这个action的名字
比如 1. Intent intent = new Intent();
2. intent.setAction("abcdefg");
3. startActivity(intent);
但是这样有个坏处,不便于管理,而且不同的app之间可能会有重复
相关热词搜索:日记 app 日本appstore有安卓吗 妹调日记安卓
热点文章阅读