Android记事本的开发

可以进行文字,图片,视频的保存与删除

 

代码实现:

1、创建数据库NotesDB.java

package com.jikexueyuan.hellonotes;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;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) {}}

2、建立适配器MyAdapter.java

package com.jikexueyuan.hellonotes;import android.annotation.SuppressLint;import android.content.Context;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.ThumbnailUtils;import android.provider.MediaStore;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public 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(R.layout.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);videoiv.setImageBitmap(getVideoThumbnail(urlvideo, 200, 200,MediaStore.Images.Thumbnails.MICRO_KIND));imgiv.setImageBitmap(getImageThumbnail(url, 200, 200));return layout;}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;}}

MainActivity.java

package com.jikexueyuan.hellonotes;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.ListView;public class MainActivity extends Activity implements OnClickListener {private Button textbtn, imgbtn, videobtn;private ListView lv;private Intent i;private MyAdapter adapter;private NotesDB notesDB;private SQLiteDatabase dbReader;private Cursor cursor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}public void initView() {lv = (ListView) findViewById(R.id.list);textbtn = (Button) findViewById(R.id.text);imgbtn = (Button) findViewById(R.id.img);videobtn = (Button) findViewById(R.id.video);textbtn.setOnClickListener(this);imgbtn.setOnClickListener(this);videobtn.setOnClickListener(this);notesDB = new NotesDB(this);dbReader = notesDB.getReadableDatabase();lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {cursor.moveToPosition(position);Intent i = new Intent(MainActivity.this, SelectAct.class);i.putExtra(NotesDB.ID,cursor.getInt(cursor.getColumnIndex(NotesDB.ID)));i.putExtra(NotesDB.CONTENT, cursor.getString(cursor.getColumnIndex(NotesDB.CONTENT)));i.putExtra(NotesDB.TIME,cursor.getString(cursor.getColumnIndex(NotesDB.TIME)));i.putExtra(NotesDB.PATH,cursor.getString(cursor.getColumnIndex(NotesDB.PATH)));i.putExtra(NotesDB.VIDEO,cursor.getString(cursor.getColumnIndex(NotesDB.VIDEO)));startActivity(i);}});}@Overridepublic void onClick(View v) {i = new Intent(this, AddContent.class);switch (v.getId()) {case R.id.text:i.putExtra("flag", "1");startActivity(i);break;case R.id.img:i.putExtra("flag", "2");startActivity(i);break;case R.id.video:i.putExtra("flag", "3");startActivity(i);break;}}public void selectDB() {cursor = dbReader.query(NotesDB.TABLE_NAME, null, null, null, null,null, null);adapter = new MyAdapter(this, cursor);lv.setAdapter(adapter);}@Overrideprotected void onResume() {super.onResume();selectDB();}}

另外拍照和视频,都以位图的缩略图进行显示

这是图片的位图

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;}

UI布局

            


下面就不一一介绍了




 

更多相关文章

  1. android之bitmap详解
  2. android 播放音频和视频
  3. Android学习札记48:将TextView中的指定文字转换为表情显示
  4. Android(安卓)Glide设置图片圆角,亲测有效
  5. android 根据视频路径获取视频缩略图
  6. Android(安卓)图片Bitmap的剪切
  7. android 自定义通知消息设置背景色不生效,导致部分机型显示白色字
  8. Android(安卓)NDK开发之旅38--FFmpeg视频添加水印
  9. Android利用VideoView实现VideoPlayer

随机推荐

  1. Android(安卓)USB Host与HID通讯 (一)
  2. Android初学之------Android(安卓)Studio
  3. ubuntu 12.04 build android的问题
  4. android 自动化压力测试-monkey 2 获取程
  5. 如何从C++代码直接访问android framework
  6. Android(安卓)2.3 r1 中文 API (57) —— S
  7. 将第三方apk变成系统apk
  8. android 获取网络数据,回传到本地用TextVi
  9. android 反编译心得
  10. Android环境搭建_