Android开发之记事本(改)

合集下载

基于Android的快捷记事本的设计与实现

基于Android的快捷记事本的设计与实现

基于Android的快捷记事本的设计与实现快捷记事本是一款方便快捷的应用软件,以实现记录、存储用户信息为主要功能,广泛用于工作、学习、生活等领域。

本文将介绍基于Android平台的快捷记事本的设计与实现。

一、需求分析1.实现记录、存储功能:支持用户输入文本、语音等各种形式的信息记录,并能够进行相应的存储。

2.提供便捷的输入方式:支持键盘输入、语音输入等方式,同时可设置快捷键。

3.具备快速搜索功能:支持输入关键字,实现快速查找相应记录的功能。

4.实现备份与恢复:支持备份用户数据到云端,以便在升级或更换设备时恢复数据。

二、技术方案考虑到Android平台上已经有很多开源的第三方库可以使用,本项目的技术方案将采用如下技术:1.使用SQLite数据库:适合轻量级数据存储,具有很好的性能。

2.采用Material Design设计风格:能够为用户提供良好的交互体验。

3.使用开源框架Retrofit实现数据备份与恢复:Retrofit是一款常用的网络框架,可以快速简单地实现网络操作。

4.使用百度语音识别SDK实现语音输入:百度语音识别SDK提供了语音输入到文本的功能,可以为用户提供便利的输入方式。

5.采用MVP设计模式:MVP设计模式使得代码结构更加清晰,易于维护和扩展。

三、界面设计1.主界面:列出所有的事项记录,支持搜索、添加、删除操作。

2.编辑界面:支持文本输入、语音输入、保存、取消操作。

3.设置界面:支持设置快捷键、备份与恢复数据。

四、功能实现(一)SQLite数据库的实现使用SQLiteOpenHelper实现数据库的创建和升级,使用SQLiteDatabase实现数据库的增删改查操作,具体代码如下:1.创建数据库public class NoteDatabaseHelper extends SQLiteOpenHelper {public static final String DATABASE_NAME = "note.db";public static final int DATABASE_VERSION = 1;@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {sqLiteDatabase.execSQL(NoteContract.SQL_DELETE_ENTRIES);onCreate(sqLiteDatabase);}}2.增加记录public void addNote(Note note) {SQLiteDatabase db = this.getWritableDatabase();ContentValues values = new ContentValues();values.put(NoteContract.NoteEntry.COLUMN_NAME_TITLE, note.getTitle());values.put(NoteContract.NoteEntry.COLUMN_NAME_CONTENT,note.getContent());values.put(NoteContract.NoteEntry.COLUMN_NAME_DATE, note.getDate());db.insert(NoteContract.NoteEntry.TABLE_NAME, null, values);db.close();}3.删除记录(二)语音输入的实现使用百度语音识别SDK实现语音输入,具体步骤如下:1.引入百度语音识别的SDK依赖:4.启动语音输入:(三)数据备份与恢复的实现使用Retrofit框架实现数据备份与恢复,具体步骤如下:1.引入Retrofit框架依赖:compile 'com.squareup.retrofit2:retrofit:2.0.2'compile 'com.squareup.retrofit2:converter-gson:2.0.2'2.定义一个接口,使用@POST注解实现向云端备份数据,使用@GET注解实现从云端恢复数据:public interface NoteService {@POST("/notes")Call<List<Note>> uploadNotes(@Body List<Note> notes);4.使用Retrofit对象创建NoteService接口的实例:NoteService noteService = retrofit.create(NoteService.class);5.使用noteService实现备份和恢复数据:(四)MVP架构的实现采用MVP架构,将View、Presenter和Model分离,使得代码结构更加清晰易于维护。

基于Android平台的记事本App的开发与实现

基于Android平台的记事本App的开发与实现

第35卷第12期2020年12月/黑亠评紅芳F2学报Journal of Leshan Normal UniversityNo.12Vol.35Dec.,2020DOI:10.16069/ki.51-1610/g4.2020.12.008基于Android平台的记事本App的开发与实现江志华1,陈翱天2(1.乐山师范学院人工智能学院,四川乐山614000; 2.北京交通大学计算机与信息技术学院,北京100044)摘要:文章介绍了基于Android的智能终端完成记事本App客户端及服务端的开发与实现过程。

该App基于MVC 模式,使用fragment,sqlite等技术,实现了信息的富文本编辑与查询、用户注册与登录、信息上传至服务器、PC端的后台管理等功能。

记事本App的使用,丰富了人们记录内容的形式,提高了记录信息的效率,为工作和生活提供了便利。

关键词:Java;Android;MySQL;系统实现中图分类号:TP311.1文献标志码:A文章编号:1009-8666(2020)12-0049-060引言随着移动互联网的发展,移动智能终端设备在人们工作生活中起着越来越重要的作用。

在人们日常学习和工作中经常需要快速高效地记录许多信息,然而传统的记录方式已经满足不了这种需求,因此开发一款能够便捷、高效运行在移动智能终端设备上的记事本App变得很有必要[1]。

在文献[1]中作者利用语音识别以及合成技术将语音转换成文字,通过云存储技术存储用户的笔记数据,设计实现了一款语音云记事本软件。

在文献[2-5]中作者仅实现了记事本文本增删改查、检索以及信息分享、同步等基本功能。

现有记事本App大多只实现了基本的信息记录功能,功能较单一,记录的信息类型也仅限于文本类信息;缺少用户身份验证功能,存在一定的安全隐患,一旦用户的安卓设备丢失,用户的笔记数据就可能会泄漏。

本文开发实现的记事本App集多种功能于一体,在实现信息记录基本功能的基础上,还实现了用户安全验证、信息云备份等功能。

Android记事本

Android记事本

1.只是在主程序里面添加此代码:TextView textView = new TextView(this);textView.setText("你好啊");setContentView(textView);就会在Android虚拟机上显示“你好啊”2.只在Main.xml里面添加代码:<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="你好"/>3.4.设置超链接:android:autoLink=”all”5.跑马灯:android:singleLine=”true”把所以要跑马灯的都显示成一行android:focusable="true"android:ellipsize="marquee"android:marqueeRepeatLimit="marquee_forever"android:focusableInTouchMode="true"6.设置字体颜色:TextView tv = (TextView) findViewById();String str = "欢迎大家收看《Android开发从零开始》系列课程,感谢大家的支持。

";SpannableStringBuilder style = new SpannableStringBuilder(str); style.setSpan(new ForegroundColorSpan(Color.RED), 0, 6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);style.setSpan(new ForegroundColorSpan(Color.GREEN), 6, 21,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);style.setSpan(new ForegroundColorSpan(Color.BLUE), 21, 26,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);tv.setText(style);7.8.@动画,是android 自带的an1.setDuration(1000);休息的时间问1000毫秒imgv1.startAnimation(an1);// startAnimation 启动动画9.给自己的界面设置空间大小Android:layout_weight=”X”10.实现图片的循环a先取得getContext的返回最大值Public int getContext(){Return Integer.MAX_VALUE;}b有就是设置图片给ImageView对象Imageview.setImageResource(resides[position%resIds.length]);c.我们还可以给图片添加一个边框首先定义一个int mGalleryItemBackground;,然后取得Gallery属性的Index id的值public ImageAdapter(Context c) {mContext = c;// 使用在res/value/attrs.xml中的Gallery属性TypedArray a = obtainStyledAttributes(R.styleable.Gallery);// 取得Gallery属性的Index idmGalleryItemBackground = a.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);// 让对象的styleable属性能够反复使用a.recycle();}在res/value/attrs.xml的代码<declare-styleable name="Gallery"><attr name="android:galleryItemBackground"/></declare-styleable>11.AlertDialog的使用AlertDialog.Builder builder = new AlertDialog.Builder(C018_onDoubleClickActivity.this);builder.setTitle("双击");builder.setMessage("Very Good");builder.show();图片的淡进淡出:AlphaAnimationaa = new AlphaAnimation(1, 0);// 1, 0从透明到不透明图片的移动:TranslateAnimationta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0.5f);ta.setDuration(3000); //显示的时间startAnimation(al);//启动startAnimation(ta);图片的旋转:RotateAnimationra = new RotateAnimation(0, 720, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);图片的伸缩:ScaleAnimationsa = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);帧动画Alpha渐变效果共同属性fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValueTabHost添加背景图片tabHost.addTab(tabHost.newTabSpec("Second").setIndica tor("Second",getResources().getDrawable(android.R.dra wable.alert_dark_frame)));用Timer获取系统的时间;;@Overridepublicint onStartCommand(Intent intent, int flags, int startId) {timer = new Timer();task = new TimerTask() {@Overridepublicvoid run() {Calendar c = Calendar.getInstance();String time = c.get(Calendar.HOUR_OF_DAY) + ":"+ c.get(Calendar.MINUTE) + ":" +c.get(Calendar.SECOND);System.out.println(time);}};timer.schedule(task, 1000, 1000);returnsuper.onStartCommand(intent, flags, startId);}。

安卓记事本开发报告

安卓记事本开发报告

基于Android平台记事本的设计与实现1.设计目的记事本的基本功能就是记事,手机用户首先用到的就是文本记事,输入事务信息以文本的形式展现出来,存储起来。

随着用户需求的增加,可能希望用图形来代替文本来记事,用户之间打开记事本,看到图片就能联系自己所记载的事务信息。

这样免去了输入文字的麻烦,反而会更简单。

又或者是文本与图片的交叉运用,可以让用户自己选择自己喜欢的记事方式,更加自由与便捷。

所以此功能的意义是让简单的记事信息能以文本、图文和视频表达,更加丰富多彩。

2.设计内容本设计的基本内容是在Android平台下,设计与实现记事本软件。

具体要实现的功能是:(1)设计实现添加“文字”,“图文”,“视频”这三个主要的功能模块。

(2)进入添加后,有“保存”,“取消”两种选择。

(3)主页面显示记事列表,点击可查看及时内容,并有“删除”,“返回”两种选择。

(4)进行测试并分析结果。

3.开发环境的安装与配置3.1 Android开发平台搭建本设计主要是以Eclipse为基础,安装SDK和ADT插件后,用来开发安卓项目。

开发平台搭建步骤介绍如下。

(1)下载JDK并安装,安装后配置环境变量。

(2)下载Eclipse解压至指定文件夹。

(3)下载SDK后解压至指定文件夹,打开SDK目录,点击SDK Manager安装开发安卓项目需要的包。

(4)启动Eclipse,进入Help—>Install New Software—>Add,添加ADT插件。

(5)进入Window—>Android—>Browse,选择SDK安装目录。

3.2硬件环境Android设备,如Android手机或平板电脑,主频在1Ghz及以上,内存为512MB以上,系统版本为Android2.1及以上。

本设计使用Android4.4.4的手机。

3.3 软件环境操作系统:windows10IDE:EclipseAndroid SDK 集成环境4.设计主体架构4.1 src文件夹src文件夹下com.liwenhuan.notepad包下为系统主要Activity类:NotesDB.java是进行数据储存的,通过SQLite保存数据。

Android模块化开发项目式教程PPT-Android记事本设计

Android模块化开发项目式教程PPT-Android记事本设计

6
模块5 记事本
知识储备
5.1、操作栏(Action Bar)
在Android 3.0之后,操作栏Action Bar主要是用于代替传统的标题栏的, 图5-1所示的就是一个操作栏。在操作栏的左侧显示是应用程序的图标和标题, 右侧显示了一些主要操作如删除和保存菜单项,以及溢出(overflow)菜单。
创建一个上下文菜单的步骤: 第一步,创建上下文菜单项 ; 第二步,响应菜单的单击事件; 第三步:调用 registerForContextMenu()方法,为视图注册上下文。
13
模块5 记事本
知识储备
5.5、AlertDialog对话框
在Android开发中,经常会需要在Android界面上弹出一些对话框,用于接受用户之 间的交互,因此,对话框一般用于显示提示信息和选择与当前应用程序直接相关的功能。
在Android中主要提供了4种对话框: AlertDialog:功能丰富,应用最广泛的对话框。 ProgressDialog:进度对话框,可显示一个进度环或者一个进度条效果的对话框。 DatePickerDialog:日期选择对话框,具有日期选择效果的对话框。 TimePickerDialog:时间选择对话框,具有时间选择效果的对话框。
4
模块5 记事本
项目描述
本项目将实现的记事本功能如下: 1.将记事本中的数据用ListView组件列表显示在手机界面上。 2.在记事本列表界面上通过选项菜单设计“添加数据”菜单,并实现对记事本数 据添加。 3.在ListView组件的item上可弹出含有编辑和删除项的上下文菜单,并在数据修 改与删除时,可通过对话框提供相关操作的提示信息。 4.运用SQLite数据库实现对记事本中数据的添加、查询、编辑和删除操作。

Android学习资料之一个记事本应用程序范例

Android学习资料之一个记事本应用程序范例

本教程通过手把手教你的方式,讲解如何利用Android框架 和诸多工具建立自己的手机应用。从一个预先配置好的工程 文件开始,该教程通过一个简单记事本应用程序完整的开发 过程,并辅以贯穿始终的详尽例子,指导你如何搭建工程、 组织应用逻辑以及UI,乃至接下来的编译及运行可执行程序 等等。 该教程将这个记事本应用的开发过程视作一组练习(见如下), 每一个练习都由若干步骤组成。你可以亦步亦趋地完成每个 练习步骤,逐步建立并完善自己的应用程序。这些练习提供 了你实现此应用所需的——细到每一步骤的——具体范例代 码。 当你完成此教程后,一个具有实际功能的Android应用就从 你手上诞生了,并且你对Android应用开发中的一些极为重 要的概念也会有更加深刻的理解。

千锋3G嵌入式移动互联网技术研发培训中心 千锋3G嵌入式移动互联网技术研发培训中心 3G
下表列出了本教程的一些练习,并描述每一练习所 涵盖的开发训练内容。每一练习都是基于你已完成 之前的任一练习这一前提来展开的。


千锋3G嵌入式移动互联网技术研发培训中心 千锋3G嵌入式移动互联网技术研发培训中心 3G
为应用程序添加对Event生命周期的控制,以得到 应用程序在整个生命周期中的状态。参见《教程: 教程: 教程 练习 3》

千锋3G嵌入式移动互联网技术研发培训中心 千锋3G嵌入式移动互联网技术研发培训中心 3G
一个简单记事本应用程序的开发过程起始于此。构 建一个可以添加新便笺,但不能编辑的简单便笺列 表。演示ListActivity 的基本方面以及如何创建和 控制菜单项,以及如何用一个SQLite数据库存储便 笺内容。参见《教程:练习1》 教程: 教程 练习1 /view/40f6326748d 7c1c708a14596.html

Android实现记事本功能

Android实现记事本功能

Android实现记事本功能本⽂实例为⼤家分享了Android实现记事本功能的具体代码,供⼤家参考,具体内容如下实现功能1、⽂本数据的存储2、图⽚数据存储3、视频数据存储4、⾃定义的Adapter5、SQlite的创建6、数据listview列表的显⽰demo地址界⾯布局<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><Buttonandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="⽂字" /><Buttonandroid:id="@+id/img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="图⽂" /><Buttonandroid:id="@+id/video"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="视频" /></LinearLayout><ListViewandroid:id="@+id/list"android:layout_width="fill_parent"android:layout_height="wrap_content" ></ListView></LinearLayout>数据库创建public class NotesDB extends SQLiteOpenHelper {public static final String TABLE_NAME = "notes";public static final String CONTENT = "content";public static final String PATH = "path";public static final String VIDEO = "video";public static final String ID = "_id";public static final String TIME = "time";public NotesDB(Context context) {super(context, "notes", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + ID+ " INTEGER PRIMARY KEY AUTOINCREMENT," + CONTENT+ " TEXT NOT NULL," + PATH + " TEXT NOT NULL," + VIDEO+ " TEXT NOT NULL," + TIME + " TEXT NOT NULL)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }数据的加载public class AddContent extends Activity implements OnClickListener {private String val;private Button savebtn, deletebtn;private EditText ettext;private ImageView c_img;private VideoView v_video;private NotesDB notesDB;private SQLiteDatabase dbWriter;private File phoneFile, videoFile;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.addcontent);//主界⾯点击Button传递过来的数据val = getIntent().getStringExtra("flag");savebtn = (Button) findViewById(R.id.save);deletebtn = (Button) findViewById(R.id.delete);ettext = (EditText) findViewById(R.id.ettext);c_img = (ImageView) findViewById(R.id.c_img);v_video = (VideoView) findViewById(R.id.c_video);savebtn.setOnClickListener(this);deletebtn.setOnClickListener(this);notesDB = new NotesDB(this);dbWriter = notesDB.getWritableDatabase();initView();}//判断存储的是⽂字,图⽚,还是视频,启动相对应的控件public void initView() {if (val.equals("1")) { // ⽂字c_img.setVisibility(View.GONE);v_video.setVisibility(View.GONE);}if (val.equals("2")) {c_img.setVisibility(View.VISIBLE);v_video.setVisibility(View.GONE);Intent img = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);phoneFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/" + getTime() + ".jpg");img.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(phoneFile));startActivityForResult(img, 1);}if (val.equals("3")) {c_img.setVisibility(View.GONE);v_video.setVisibility(View.VISIBLE);Intent video = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);videoFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/" + getTime() + ".mp4");video.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(videoFile));startActivityForResult(video, 2);}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.save:addDB();finish();break;case R.id.delete:finish();break;}}//存储数据public void addDB() {ContentValues cv = new ContentValues();cv.put(NotesDB.CONTENT, ettext.getText().toString());cv.put(NotesDB.TIME, getTime());cv.put(NotesDB.PATH, phoneFile + "");cv.put(NotesDB.VIDEO, videoFile + "");dbWriter.insert(NotesDB.TABLE_NAME, null, cv);}//时间的显⽰private String getTime() {SimpleDateFormat format = new SimpleDateFormat("yyyy年MM⽉dd⽇ HH:mm:ss"); Date curDate = new Date();String str = format.format(curDate);return str;}//完成数据拍摄后直接显⽰数据@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1) {Bitmap bitmap = BitmapFactory.decodeFile(phoneFile.getAbsolutePath());c_img.setImageBitmap(bitmap);}if (requestCode == 2) {v_video.setVideoURI(Uri.fromFile(videoFile));v_video.start();}}}⾃定义Adapterpublic class MyAdapter extends BaseAdapter {private Context context;private Cursor cursor;private LinearLayout layout;public MyAdapter(Context context, Cursor cursor) {this.context = context;this.cursor = cursor;}@Overridepublic int getCount() {return cursor.getCount();}@Overridepublic Object getItem(int position) {return cursor.getPosition();}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(context);layout = (LinearLayout) inflater.inflate(yout.cell, null);TextView contenttv = (TextView) layout.findViewById(R.id.list_content); TextView timetv = (TextView) layout.findViewById(R.id.list_time);ImageView imgiv = (ImageView) layout.findViewById(R.id.list_img);ImageView videoiv = (ImageView) layout.findViewById(R.id.list_video); cursor.moveToPosition(position);String content = cursor.getString(cursor.getColumnIndex("content"));String time = cursor.getString(cursor.getColumnIndex("time"));String url = cursor.getString(cursor.getColumnIndex("path"));String urlvideo = cursor.getString(cursor.getColumnIndex("video"));contenttv.setText(content);timetv.setText(time);imgiv.setImageBitmap(getImageThumbnail(url, 200, 200));videoiv.setImageBitmap(getVideoThumbnail(urlvideo, 200, 200,MediaStore.Images.Thumbnails.MICRO_KIND));return layout;}/** ListView 显⽰图⽚*/public Bitmap getImageThumbnail(String uri, int width, int height) {Bitmap bitmap = null;BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;bitmap = BitmapFactory.decodeFile(uri, options);options.inJustDecodeBounds = false;int beWidth = options.outWidth / width;int beHeight = options.outHeight / height;int be = 1;if (beWidth < beHeight) {be = beWidth;} else {be = beHeight;}if (be <= 0) {be = 1;}options.inSampleSize = be;bitmap = BitmapFactory.decodeFile(uri, options);bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);return bitmap;}/**视频缩略图*/private Bitmap getVideoThumbnail(String uri, int width, int height, int kind) { Bitmap bitmap = null;bitmap = ThumbnailUtils.createVideoThumbnail(uri, kind);bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);return bitmap;}}ListView点击的详情页显⽰与数据删除public class SelectAct extends Activity implements OnClickListener {private Button s_delete, s_back;private ImageView s_img;private VideoView s_video;private TextView s_tv;private NotesDB notesDB;private SQLiteDatabase dbWriter;/** 点击item 的详情页对数据进⾏删除操作*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.select);s_delete = (Button) findViewById(R.id.s_delete);s_back = (Button) findViewById(R.id.s_back);s_img = (ImageView) findViewById(R.id.s_img);s_video = (VideoView) findViewById(R.id.s_video);s_tv = (TextView) findViewById(R.id.s_tv);/**读写权限*/notesDB = new NotesDB(this);dbWriter = notesDB.getWritableDatabase();s_back.setOnClickListener(this);s_delete.setOnClickListener(this);//判断是否存在图⽚if (getIntent().getStringExtra(NotesDB.PATH).equals("null")) {s_img.setVisibility(View.GONE);} else {s_img.setVisibility(View.VISIBLE);}if (getIntent().getStringExtra(NotesDB.VIDEO).equals("null")) {s_video.setVisibility(View.GONE);} else {s_video.setVisibility(View.VISIBLE);}// 设置需要显⽰的图⽚s_tv.setText(getIntent().getStringExtra(NotesDB.CONTENT));Bitmap bitmap = BitmapFactory.decodeFile(getIntent().getStringExtra(NotesDB.PATH));s_img.setImageBitmap(bitmap);s_video.setVideoURI(Uri.parse(getIntent().getStringExtra(NotesDB.VIDEO)));s_video.start();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.s_delete:deleteDate();finish();break;case R.id.s_back:finish();break;}}//数据的删除public void deleteDate() {dbWriter.delete(NotesDB.TABLE_NAME,"_id=" + getIntent().getIntExtra(NotesDB.ID, 0), null);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

基于android的记事本开发

基于android的记事本开发

南京晓庄学院【智能终端移动开发技术课程考察报告】《基于android的记事本设计》所在院(系): 信息工程学院学号:学生姓名:年级专业:****:**这里的图片和视屏都是保存在sd卡里面的。

在数据库中只是其存放路径,起名字是获取当前拍摄的时间。

3.2.4、在主界面中可以查看之前存储的文字、图片、视频点击你想要查看的记录即可。

3.2.5、删除和修改当用户点击想查看的记录,会跳入这条记录中这是用户可以修改这条记录中的内容,也可通过底部的删除按钮删除按钮3.3 、主要的模块结构图1、Java事件结构图,图1java事件结构图AddContent.java用来选择增加内容,为文字或者图片或视频。

有对应的布局文件MainActivity.java主活动调用数据,和增加监听事件。

MyAdapter.java主要是获取缩略图。

NotesDB.java主要是写创建数据库SelectAct.java主要详情页,有对应的布局文件,select.xml图2、布局文件结构图图2布局文件结构图Activity_main.xml主界面布局图Addcontent.xml对应的增加内容布局文件Cell.xml显示存储的界面布局Select.xml添加或修改图片视频布局。

4、主要代码分析4.4.1、首先创建了数据库。

NotesDB.java中扩张于SQLiteOpenHelper构建onCreate方法,在onUpgrade方法中更新数据库。

onCreate方法中用db.execSQL创建。

我们当前并不需要更新所以不用。

CREATE TABLE " + TABLE_NAME(表名)ID+ " INTEGER PRIMARY KEY AUTOINCREMENT,"(ID主键自增。

)CONTENT+ " TEXT NOT NULL,"(内容,内容不能为空。

)PATH + " TEXT NOT NULL,"(图片,图片不能为空。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
43 / 66
4. 完成代码
• 关于 onActivityResult() 方法
Activity1 (主界面)
startActivity ForResult()
onActivity Result()
Activity2 (次级界面)
44 / 66
4.2 完成Activity——编写主界面Activity
7 / 66
1. Android平台简介
• 开发环境: Eclipse 主要编写Java程 序,也可编写 C++等其它程序。
8 / 66
1. Android平台简介
• 调试方法 1. 手机通过数据线连接电脑进行调试 2. Android虚拟机(AVD)
9 / 66
1. Android平台简介
• Android虚拟机 (AVD)
{
// 使用intent对象启动另一个activity 注:一般启动
Intent intent = new Intent();
Activity的方 法是
intent.setClass(NotelistActivity.this, startActivity()
ItemNotelistActivity.class);
用来模拟Android 环境,方便开发 者对程序进行模 拟调试和开发
10 / 66
1. 平台简介
• Android虚拟机 (AVD)
11 / 66
二. 新建工程
12 / 66
2. 新建工程
• 打开eclipse,
File -> New -> Project -> Android -> Android Application Project -> Next ->
注: 所有的Activity 都需要在该文 件中进行注册, 以方便程序能 够查找到这个 Activity。
37 / 66
4.2 完成Activity——编写主界面Activity 4.2 编写主界面 Activity
38 / 66
4.2 完成Activity——编写主界面Activity
• 在NotelistActivity中初始化一个监听器
(在NotelistActivity中添加)
private OnClickListener mOnClickListener = new OnClickListener() { public void onClick(View v) { ... // 定义点击事件
} };
39 / 66
4.2 完成Activity——编写主界面Activity
28 / 66
3.2 设置布局——编写次级界面布局
• 编写次级界面布局
保存按钮 (Button)
文本编辑框 (EditText)
删除按钮 (Button)
29 / 66
3.2 设置布局——编写次级界面布局
• 新建一个xml文件:
右键 new->Android xml File
布局文件名: activity_itemnote
Dian团队第二期“四零”免费培训 第一课
Android开发之记事本
移动组 刘汉(电信系11级)
1 / 66
Dian团队第二期“四零”免费培训 第一课
Class 2.第二周
随身播放器
Class 1.第一周
便携笔记本
Class 3.第三周
播放器优化
Class 5.第八周
作业答辩
Class 4.第四周
32 / 66
3.2 设置布局——编写次级界面布局
• 添加文本编辑框(EditText)
(在Linearlayout中添加)
<EditText android:id="@+id/itemnote_content_edit" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="top|left" android:background="@android:color/white" android:hint="笔记内容" />
RSS大作业
2 / 66
Dian团队第二期“四零”免费培训 第一课 • 记事本程序截图
3 / 66
Dian团队第二期“四零”免费培训 第一课 • 课程目标 1. 熟悉Android开发平台 2. 了解Android开发语言 3. 掌握Android开发基础流程 4. 完成一个简单的记事本
4 / 66
30 / 66
3.2 设置布局——编写次级界面布局
• 添加保存按钮
(在Linearlayout中添加)
<Button android:id="@+id/itemnote_save" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="保存笔记" />
{ public void onItemClick( AdapterView<?> arg0, View arg1, int arg2, long arg3) { ... // 设置监听器中的点击方法 }
};
42 / 66
4.2 完成Activity——编写主界面Activity
• 重写onActivityResult() 方法
(在NotelistActivity中添加)
protected void onActivityResult( int requestCode, int resultCode, Intent data)
{ super.onActivityResult(requestCode, resultCode, data); ... // 这里的代码最后再补上
33 / 66
四. 完成Activity
4.1 新建Activity 4.2 编写主界面Activity 4.3 编写次级界面Activity
34 / 66
4. 完成Activity
• 记事本程序
主界面
次级界面
35 / 66
4.1 完成Activity——新建Activity
• 新建Activity(活动)
mAddBtn. setOnClickListener(mOnClickListener);
}
40 / 66
4.2 完成Activity——编写主界面Activity
• 完成监听器中的点击方法
(在onClick(View v)方法中添加)
if(v.getId() == R.id.notelist_addbtn)
</LinearLayout>
26 / 66
3.1 设置布局——编写主界面布局
• 添加按钮
(在Linearlayout中添加) <Button android:id="@+id/notelist_addbtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加笔记" />
25 / 66
3.1 设置布局——编写主界面布局
• 写入根布局:
<LinearLayout xmlns:android="/ apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- ... 其他控件 -->
• 添加点击按钮
(在NotelistActivity中添加) // 声明一个Button对象 private Button mAddBtn; // 自定义init()方法进行初始化 private void init() {
mAddBtn = (Button) findViewById(R.id.notelist_addbtn);
src->包名 右键 New->Class
自定义Activity的父 类必须直接或者间 接的继承Activity类
36 ivity
• 在 AndroidManifest.xml 中注册
(在</application>前添加)
<activity android:name= "org.dian.mynote .ItemNotelistActivity" />
startActivityForResult(intent, 0);
}
41 / 66
4.2 完成代码——编写主界面Activity
• 添加列表的监听器
(在NotelistActivity中添加)
private AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener()
<test ...
/>
<test ...>
... </test>
相关文档
最新文档