记事本app开发记录
1.SqLiteDatebase数据库的设计
先创建一个类继承SQLiteOpenHelper类,并重写构造方法和onCreate方法和onUpdate方法

 * 这是数据库操作类,在这里主要创建了一个数据库notes* 别的类可以通过实例化此类来对数据库进行操作* notesDB=new NotesDB(this);* SQLiteDatabase dbReader=notesDB.getReadableDatabase();*/
public class NotesDB extends SQLiteOpenHelper {public static final String TABLE_NAME="notes";public static final String CONTENTS="contents";public static final String ID="_id";public static final String TIME="time";public static final String PATH="path";public static final String VIDEO="video";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,"+CONTENTS+" TEXT NOT NULL,"+PATH+" TEXT NOT NULL,"+VIDEO+" TEXT NOT NULL,"+TIME+" TEXT NOT NULL)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

2.创建主页视图布局

主布局中主要有添加文字、图片和视频的按钮然后下面是一个listview用于显示已经存在的内容

3.创建主activity

加载主布局,为按钮添加监听事件,点击按钮跳转到AddContent类,并为Intent添加一个数据来区分点击的具体是哪个按钮;
通过读取数据库将数据加载在listview上,因为有图片和视频所以不能用系统的adapter,创建一个MyAdapter继承自BaseAdapter
为listview添加点击事件,点击后进入详情页,为该详情页创建一个SelectAct类,将列表项数据通过Intent传递

4.创建内容添加activity命名为AddContent

AddContent类根据intent传入的数据不同分别执行不同的操作(用一个switch语句来区分添加文字,图片,视频等三个不同的操作)

5.创建自适应adapter继承自BaseAdapter重写方法

难点:将拍摄的照片存储到应用下的文件夹里

mediaStorageDir = new File(this.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "MyCameraApp");
mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "IMG_" + timeStamp + ".jpg");
文件存储在应用目录下的picture文件下的MyCameraApp目录下

调用相机拍照命名并存储到固定位置

intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri =Uri.fromFile(mediaFile );//获取文件的uri
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);startActivityForResult(intent, 1);

调用相机打开图片和视频

//为图片添加点击事件
img.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intentImg = new Intent(Intent.ACTION_VIEW);intentImg.setDataAndType(Uri.fromFile(new File(path)), "image/*");startActivity(intentImg);}
});
//为svideo添加点击事件
video.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {Intent intentVideo = new Intent(Intent.ACTION_VIEW);intentVideo.setDataAndType(Uri.parse(videopath), "video/*");startActivity(intentVideo);return false;}
});

制作图片和视频缩略图

public class ThumbnailUtil {public static Bitmap getImageThumbnail(String url, int width, int height) {Bitmap bitmap=null;BitmapFactory.Options options=new BitmapFactory.Options();options.inJustDecodeBounds=true;bitmap=BitmapFactory.decodeFile(url,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(url, options);bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);return bitmap;}/*** 获取视频的缩略图* @param uri* @param width* @param height* @param kind* @return bitmap*/public static 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;}
}

调用方法
videoiv.setImageBitmap(ThumbnailUtil.getVideoThumbnail(urlvideo,200,200,MediaStore.Images.Thumbnails.MICRO_KIND));
imgiv.setImageBitmap(ThumbnailUtil.getImageThumbnail(url,200,200));

Android记事本app相关推荐

  1. 自己写的一个简单的android记事本app

    自己写的一个简单的记事本app,效果如下: 一.首先是第一个界面的编写,最上面是一个TextView,中间是一个Linearlayout中嵌套一个listview布局,最下面是一个button.下面附 ...

  2. 一款原生Android实现的轻快简洁的记事本App,值得拥有!

    实现效果:一款轻快简洁的记事本App,值得拥有! 此音乐App开发环境: Win10+Android Studio2020+JDK1.8 + Gradle6.5.1 +Android SDK32 + ...

  3. android记事本报告,百度云记事本app交互体验报告

    体验设备 体验产品:百度云记事本app 产品版本:Android  V 2.1.1 体验机型:三星Note2 操作系统:Android4.3 体验时间:2016.01.25-2016.01.30 整体 ...

  4. Android记事本

    目录 一.前言 二.开发环境 三.效果预览 四.应用介绍 4.1 主界面 4.2 新增界面 4.3 编辑界面 4.4 搜索界面 4.5 数据库 4.6 黑夜模式 五.文件列表 六.可能出现的问题 七. ...

  5. 安卓大作业(AndroidStudio开发)日记记事本app

    使用技术及软件: 1:Activity显示页面 2:Sqlite进行数据的存储 3:使用Androidstudio进行开发 课题基本介绍: 1:用户的注册和登录 2:日记本信息的添加和查看,以及删除和 ...

  6. Android记事本NotePad应用功能拓展(四)

    Android记事本NotePad应用功能拓展(四) 一.实现功能 1.绘制设置界面 二.项目代码分析 1.点击待办事件添加计划Plan 设置界面XML <?xml version=" ...

  7. 开启NOTE新时代 七款Android记事本软件推荐

    开启NOTE新时代 七款Android记事本软件推荐 套用一句广告词"开启NOTE新时代",当然此NOTE非彼NOTE.作为备忘提醒.日常记事或者记录突发灵感,记事本都可以说是最大 ...

  8. 从无到有,一步一步实现记事本APP(一)

     俺的碎碎念:写了个简单的记事本APP 复习了下SQLite的使用以及各种边角知识,希望能对各位带来一定的启发.         功能简介:本项目实现了记事本的基本功能,支持创建笔记,编辑笔记,长按删 ...

  9. Android记事本 (附apk和源码)

    Android记事本 基于数据库 工程下载 功能简介 操作演示 部分代码展示 工程下载 Gitee 下载地址 点击跳转(源码及apk) 百度云 下载地址 点击跳转 提取码:uksb CSDN 下载 点 ...

  10. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?

    原标题:Android端APP更换logo和名称后都需要些测试哪些内容呢? 之前有人在搜狗测试粉丝群中问过APP更换logo和名称后需要怎么测试呢?小编正好经历过这样的需求,下面来系统整理一下APP更 ...

最新文章

  1. 为什么不建议在 MySQL 中使用 UTF-8?
  2. FluentNhibernate 的数据库连接的配置
  3. 在RHEL5.4上做YUM
  4. Hystrix熔断原理
  5. Angular 自定义 structural 指令的一个例子
  6. 雅虎正开发聊天机器人挑战对手 不过似乎很难成功
  7. Redis作者antirez:开源维护者的挣扎
  8. Codeforces Round #601 (Div. 2)
  9. Java中的外观设计模式
  10. OpenCV如何修改Mat中某像素(某通道的数值)
  11. 微信公众平台PHP开发
  12. (转)Ubuntu10.04编译FFmpeg
  13. DataFrame数据转为list,再逐行写入Excel
  14. 网上的一个PHP分页函数,测试可用
  15. 不要残渣10w+,推荐8个我平时看的公众号
  16. 梅科尔工作室-第七次网络前端培训(JS)
  17. 猿创征文|弃文从工,从小白到蚂蚁工程师,我的 Java 成长之路
  18. 织梦CMS采集织梦模板程序通用
  19. 什么是计算机网络 它有哪些主要功能,什么是计算机网络及主要功能有哪些?...
  20. [转发]猎人与鸟---- 对人生很重要的一个寓言故事

热门文章

  1. Kmeans参数n_clusters_labels_centers_
  2. 编译原理 C-Minus 语法分析(Flex / Bison)
  3. 抖音中用小程序自动制作人物关系图
  4. Python调用百度API进行语音识别
  5. 信号卷积和图像卷积滤波
  6. 记一次失败的小米前端面试经历
  7. php wordpressCMS 网站局域网搭建--笔记
  8. 集合竞价与连续竞价02
  9. 【互联网人必备】最实用的6大专业搜索工具
  10. ES 创建太多 buckets 错误: trying to create too many buckets. must be less than or equal to: [100000] but w