android日记本代码

合集下载

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

安卓日历开发源代码

安卓日历开发源代码

安卓日历开发源代码<="" p="" xmlns:android="/res/android"> android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" ><linearlayout< p="">android:id="@+id/lay_title"style="@style/TitleStyle"android:layout_width="fill_parent" ><textview< p="">android:id="@+id/btn_back"style="@style/TitleLeftButtonStyle" /><textview< p="">android:id="@+id/tv_top"style="@style/TitleMiddleTextStyle" android:text="请选择日期" /><textview< p="">android:id="@+id/btn_goback_to_today" style="@style/TitleRightButtonStyle" android:text="今天" /></textview<></textview<></textview<></linearlayout<><linearlayout< p="">android:layout_width="fill_parent" android:layout_height="53.0dip" android:background="#ff394147" android:gravity="center_vertical" ><linearlayout< p="">android:id="@+id/btn_prev_month"android:layout_width="0.0dip"android:layout_height="fill_parent"android:layout_weight="0.2"android:gravity="center"android:orientation="vertical" ><textview< p="">android:id="@+id/left_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/triangle06_states" android:duplicateParentState="true"android:text=""android:textSize="16.0dip" /></textview<></linearlayout<></linearlayout<>。

android开发实战-记账本APP(一)

android开发实战-记账本APP(一)

android开发实战-记账本APP(⼀)记账本开发流程:对于⼀个记账本的初步开发⽽⾔,我实现的功能有:①实现⼀个记账本的页⾯②可以添加数据并更新到页⾯中③可以将数据信息以图表的形式展现(⼀)⾸先,制作⼀个记账本的页⾯。

①在系统⾃动创建的content_main.xml⽂件中添加listview<ListViewandroid:id="@+id/lv_main"android:layout_width="wrap_content"android:layout_height="wrap_content"/>②创建⼀个list_item.xml来实现见记账本的页⾯布局,⼀共需要三个组件,⼀个是记账信息,记账时间,记账⾦额<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="80dp"android:orientation="vertical"><TextViewandroid:id="@+id/tv_title"android:layout_width="150dp"android:layout_height="80dp"android:layout_marginLeft="10dp"android:layout_alignParentLeft="true"android:gravity="center"android:singleLine="true"android:textSize="35sp"android:text="costTitle"android:ellipsize="marquee"/><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="80dp"android:layout_toRightOf="@+id/tv_title"android:layout_marginLeft="15dp"android:textSize="20sp"android:gravity="center"android:text="costDate"/><TextViewandroid:id="@+id/tv_cost"android:layout_width="wrap_content"android:layout_height="80dp"android:text="30"android:textSize="30sp"android:layout_marginRight="20dp"android:layout_alignParentRight="true"android:gravity="center"/></RelativeLayout>页⾯截图:③编写适配器并进⾏测试,因此我们需要建⽴⼀个CostListAdapter.java,还需要建⽴我们的bean对象,因此需要在建⽴⼀个CostBean来存储我们的记账信息。

第一行代码Android学习笔记完全版

第一行代码Android学习笔记完全版

hujunjob 于北航 2015.04.02
目录
第一章 Android 系统 ...................................................................................................................... 6 1.1 安卓系统架构.................................................................................................................... 6 1.2 Android 项目中的资源...................................................................................................... 6 第二章 Activity................................................................................................................................ 6 一、创建 Activity 步骤:........................................................................................................ 6 二、采用 Intent 切换 activity ..............................................................................................

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);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Sqlite安卓记事本

Sqlite安卓记事本

Sqlite_Android记事本实现实现普通记事本的增添,删除,修改功能,可以作为这类应用的一个模版程序使用,手动编写,亲测可用,详细代码如下:1.主界面布局:<RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="0dp" tools:context=".MainActivity"><LinearLayoutandroid:gravity="top"android:id="@+id/linlayout_01"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/diary_title"android:layout_gravity="center_horizontal"android:textSize="20dp"/></LinearLayout><ListViewandroid:id="@+id/listview01"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_below="@id/linlayout_01"/><LinearLayoutandroid:id="@+id/linlayout_02"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="vertical"><Buttonandroid:id="@+id/diary_add"android:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center_horizontal"android:background="@drawable/add"/></LinearLayout></RelativeLayout>2.编辑界面布局<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="/apk/res/android" android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:id="@+id/edit_linlayout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_alignParentTop="true"><TextViewandroid:layout_width="wrap_content"android:layout_weight="0"android:layout_height="wrap_content"android:text="@string/diary_day_edit_biaoti"/> <EditTextandroid:id="@+id/edit_title"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:hint="请输入标题"/></LinearLayout><EditTextandroid:id="@+id/edit_content"android:layout_below="@id/edit_linlayout"android:layout_above="@+id/edit_save"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="top"/><Buttonandroid:layout_alignParentBottom="true"android:id="@+id/edit_save"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/edit_save"/></RelativeLayout>3.查看界面布局<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="/apk/res/android" android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:id="@+id/look_linlayout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_alignParentTop="true"><TextViewandroid:layout_width="wrap_content"android:layout_weight="0"android:layout_height="wrap_content"android:text="@string/diary_day_edit_biaoti"/> <TextViewandroid:id="@+id/look_title"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"/></LinearLayout><TextViewandroid:id="@+id/look_content"android:layout_below="@id/look_linlayout"android:layout_width="fill_parent"android:layout_height="fill_parent"</RelativeLayout>4.主界面显示布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><TextViewandroid:id="@+id/diary_day_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10px"android:gravity="center_vertical|left"/></LinearLayout>5.主界面package com.example.diary;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.Window;import android.widget.AdapterView;import android.widget.AdapterView.AdapterContextMenuInfo;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends Activity {Button bt_add;ListView listView;private SQLiteDatabase sdb;private DBhelper dBhelper;private SimpleAdapter sa;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(yout.activity_main);listView = (ListView) findViewById(R.id.listview01);bt_add = (Button) findViewById(R.id.diary_add);dBhelper = new DBhelper(MainActivity.this);//获取数据库数据bt_add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setClass(MainActivity.this, activity_add.class); startActivity(intent);}});show();//listView按键监听,单机查看单项数据listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubMap<String, Object> map = (Map<String, Object>) arg0.getItemAtPosition(arg2);Intent intent = new Intent();intent.putExtra("diary_id",map.get("diary_id").toString());//传递列表id值intent.setClass(MainActivity.this,LookActivity.class);startActivity(intent);}});//长按事件监听listView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubfinal Map<String, Object> map = (Map<String, Object>) arg0.getItemAtPosition(arg2);AlertDialog.Builder aBuilder = newBuilder(MainActivity.this);aBuilder.setTitle(map.get("diary_title").toString());aBuilder.setItems(new String[]{"删除","修改"}, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubswitch (which) {case 0://删除sdb =dBhelper.getWritableDatabase();try {sdb.delete("diary", "diary_id=?",new String[] {map.get("diary_id").toString()});} catch (Exception e) {// TODO: handle exceptionToast.makeText(MainActivity.this, "删除失败",Toast.LENGTH_SHORT).show();}sdb.close();show();break;case 1://修改Intent intent = new Intent();intent.putExtra("diary_id", map.get("diary_id").toString());intent.setClass(MainActivity.this, activity_add.class);startActivity(intent);break;default:break;}}});aBuilder.show();return false;}});}//主界面显示函数public void show(){sdb = dBhelper.getReadableDatabase();//获取数据库读权限//rawQuery 用于执行select语句Cursor cursor = sdb.rawQuery("select diary_id,diary_title from diary",null);List<Map<String,Object>> list = newArrayList<Map<String,Object>>();//创建list用于保存map数据while (cursor.moveToNext()){Map<String,Object> map = new HashMap<String, Object>();//map 用于保存数据库数据String str_title =cursor.getString(cursor.getColumnIndex("diary_title"));//处理标题长度限制if (str_title.length()> 20 ){map.put("diary_title",str_title.substring(0,20) + "..."); }else {map.put("diary_title",str_title);}map.put("diary_id",cursor.getString(cursor.getColumnIndex("diary_id"))); list.add(map);}cursor.close();//关闭cursor释放内存空间//新建适配器,list作为数据源,map不能sa = new SimpleAdapter(MainActivity.this,list,yout.list_items,new String[] {"diary_title"},new int[]{R.id.diary_day_title});listView.setAdapter(sa);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}6.添加,编辑package com.example.diary;import android.R.string;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;/*** Created by Alex on 2015/9/25.*/public class activity_add extends Activity{private EditText edit_title,edit_content;private Button bt_save;private SQLiteDatabase sdb;private DBhelper dBhelper;static String tag = "database";private static String diary_id,str_title,str_content;protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.diary_edit);edit_title = (EditText) findViewById(R.id.edit_title);edit_content = (EditText) findViewById(R.id.edit_content);bt_save = (Button) findViewById(R.id.edit_save);dBhelper = new DBhelper(activity_add.this);Intent intent = getIntent();diary_id = intent.getStringExtra("diary_id");//diary_id不为空,则是编辑if (diary_id != null) {sdb = dBhelper.getReadableDatabase();Cursor cursor = sdb.query("diary", newString[]{"diary_id","diary_title","diary_content"},"diary_id=?", new String[]{diary_id}, null, null, null);while (cursor.moveToNext()) {str_title =cursor.getString(cursor.getColumnIndex("diary_title"));str_content =cursor.getString(cursor.getColumnIndex("diary_content"));Log.d(tag, str_title);Log.d(tag, str_content);}edit_title.setText(str_title);edit_content.setText(str_content);cursor.close();sdb.close();}bt_save.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (diary_id == null){add_save();}else {edit_save();}Intent intent = new Intent();intent.setClass(activity_add.this,MainActivity.class); startActivity(intent);}});}//编辑操作public void edit_save(){sdb = dBhelper.getWritableDatabase();String title = edit_title.getText().toString();String content = edit_content.getText().toString();try {ContentValues cValues = new ContentValues();cValues.put("diary_title", title);cValues.put("diary_content", content);sdb.update("diary", cValues, "diary_id=?", newString[]{diary_id});} catch (Exception e) {// TODO: handle exceptionLog.v(tag,"更新失败");}sdb.close();}//保存操作public void add_save(){sdb = dBhelper.getWritableDatabase();String title = edit_title.getText().toString();String content = edit_content.getText().toString();try {ContentValues cValues = new ContentValues();cValues.put("diary_title", title);cValues.put("diary_content", content);sdb.insert("diary", null, cValues);}catch (Exception e){String tag = "database";Log.v(tag,"插入失败");}sdb.close();}}7.查看package com.example.diary;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.widget.TextView;public class LookActivity extends Activity{/*** @param args*/private TextView tv_title,tv_content;private SQLiteDatabase sdb;private DBhelper dBhelper;private String diary_id,str_title,str_content;protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.diary_lookover);tv_title = (TextView) findViewById(R.id.look_title);tv_content = (TextView) findViewById(R.id.look_content);//获取intent传递的数据Intent intent = getIntent();diary_id = intent.getStringExtra("diary_id");dBhelper = new DBhelper(LookActivity.this);sdb = dBhelper.getReadableDatabase();//两种查询的方式;1是rawQuery;2是直接调用queryCursor cursor = sdb.rawQuery("select diary_title,diary_content from diary where diary_id=?" , new String[]{diary_id});// Cursor cursor = sdb.query("diary", newString[]{"diary_id","diary_title","diary_content"},// "diary_id=?", new String[]{diary_id}, null, null, null);while (cursor.moveToNext()) {str_title =cursor.getString(cursor.getColumnIndex("diary_title"));str_content =cursor.getString(cursor.getColumnIndex("diary_content"));}tv_title.setText(str_title);tv_content.setText(str_content);cursor.close();sdb.close();}}8.数据庫package com.example.diary;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.widget.TextView;public class LookActivity extends Activity{/*** @param args*/private TextView tv_title,tv_content;private SQLiteDatabase sdb;private DBhelper dBhelper;private String diary_id,str_title,str_content;protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.diary_lookover);tv_title = (TextView) findViewById(R.id.look_title);tv_content = (TextView) findViewById(R.id.look_content);//获取intent传递的数据Intent intent = getIntent();diary_id = intent.getStringExtra("diary_id");dBhelper = new DBhelper(LookActivity.this);sdb = dBhelper.getReadableDatabase();//两种查询的方式;1是rawQuery;2是直接调用queryCursor cursor = sdb.rawQuery("select diary_title,diary_content from diary where diary_id=?" , new String[]{diary_id});// Cursor cursor = sdb.query("diary", newString[]{"diary_id","diary_title","diary_content"},// "diary_id=?", new String[]{diary_id}, null, null, null);while (cursor.moveToNext()) {str_title =cursor.getString(cursor.getColumnIndex("diary_title"));str_content =cursor.getString(cursor.getColumnIndex("diary_content"));}tv_title.setText(str_title);tv_content.setText(str_content);cursor.close();sdb.close();}}。

Android实现记事本功能(26)

Android实现记事本功能(26)

Android实现记事本功能(26)本⽂实例为⼤家分享了Android实现记事本功能的具体代码,供⼤家参考,具体内容如下MainActivity.java代码:package siso.smartnotef.activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import siso.smartnotef.R;import siso.smartnotef.adapter.NotepadeAdapter;import siso.smartnotef.db.DataHelper;import siso.smartnotef.global.GlobalParams;import siso.smartnotef.model.NotepadBean;import siso.smartnotef.model.NotepadWithDataBean;import siso.smartnotef.service.MainService;public class MainActivity extends AppCompatActivity implements View.OnClickListener, NotepadeAdapter.ClickFunction {private TextView tv_add;private ListView lv_contents;private List<NotepadWithDataBean> notepadWithDataBeanList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);Intent intent1 = new Intent(MainActivity.this, MainService.class);startService(intent1);findViews();setListeners();initView();}private void findViews() {tv_add = (TextView) findViewById(_add);lv_contents = (ListView) findViewById(R.id.lv_content);}private void setListeners() {tv_add.setOnClickListener(this);}private void initView() {DataHelper helper = new DataHelper(MainActivity.this);notepadWithDataBeanList = new ArrayList<NotepadWithDataBean>();List<NotepadBean> notepadBeanList = helper.getNotepadList();for (int i = 0; i < notepadBeanList.size(); i++) {if (0 == notepadWithDataBeanList.size()) {NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();notepadWithDataBean.setData(notepadBeanList.get(0).getDate());notepadWithDataBeanList.add(notepadWithDataBean);}boolean flag = true;for (int j = 0; j < notepadWithDataBeanList.size(); j++) {int date = notepadWithDataBeanList.get(j).getData();if (date == notepadBeanList.get(i).getDate()) {notepadWithDataBeanList.get(j).getNotepadBeenList().add(notepadBeanList.get(i));flag = false;break;}}if (flag) {NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();notepadWithDataBean.setData(notepadBeanList.get(i).getDate());notepadWithDataBeanList.add(notepadWithDataBean);notepadWithDataBeanList.get(notepadWithDataBeanList.size() - 1).getNotepadBeenList().add(notepadBeanList.get(i));}}NotepadeAdapter adapter = new NotepadeAdapter(MainActivity.this, notepadWithDataBeanList, this);lv_contents.setAdapter(adapter);// setListViewHeightBasedOnChildren(lv_contents);}public void setListViewHeightBasedOnChildren(ListView listView) {if (listView == null) return;ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {// pre-conditionreturn;}int totalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}youtParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));listView.setLayoutParams(params);}@Overridepublic void onClick(View v) {switch (v.getId()) {case _add:Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_ADD);intent.putExtras(bundle);intent.setClass(MainActivity.this, AddContentActivity.class);startActivityForResult(intent, GlobalParams.ADD_REQUEST);break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case GlobalParams.ADD_REQUEST:if (GlobalParams.ADD_RESULT_OK == resultCode) {initView();}break;}}@Overridepublic void clickItem(int position, int itemPosition) {Bundle bundle = new Bundle();bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_EDIT);bundle.putSerializable(GlobalParams.BEAN_KEY, notepadWithDataBeanList.get(position));bundle.putInt(GlobalParams.ITEM_POSITION_KEY, itemPosition);Intent intent = new Intent(this, AddContentActivity.class);intent.putExtras(bundle);startActivityForResult(intent, GlobalParams.ADD_REQUEST);}@Overridepublic void longClickItem(final int position, final int itemPostion) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setMessage("确认删除吗?");builder.setTitle("提⽰");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {DataHelper helper = new DataHelper(MainActivity.this);helper.deleteNotepad(notepadWithDataBeanList.get(position).getNotepadBeenList().get(itemPostion).getId()); initView();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}}AddContentActivity.java代码:package siso.smartnotef.activity;import android.app.DatePickerDialog;import android.app.TimePickerDialog;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.DatePicker;import android.widget.EditText;import android.widget.TextView;import android.widget.TimePicker;import android.widget.Toast;import java.util.Calendar;import siso.smartnotef.R;import siso.smartnotef.db.DataHelper;import siso.smartnotef.global.GlobalParams;import siso.smartnotef.model.NotepadBean;import siso.smartnotef.model.NotepadWithDataBean;public class AddContentActivity extends AppCompatActivity implements View.OnClickListener {private TextView tv_save;private TextView tv_date;private TextView tv_time;private TextView tv_cancel;private EditText et_content;private String time = "";private String date = "";private Bundle bundle;private int type;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_add_content);bundle=getIntent().getExtras();type=bundle.getInt(GlobalParams.TYPE_KEY);findViews();setListeners();initDate();}private void findViews() {et_content=(EditText)findViewById(R.id.et_content);tv_save = (TextView) findViewById(_save);tv_date = (TextView) findViewById(_date);tv_time = (TextView) findViewById(_time);tv_cancel=(TextView)findViewById(_cancel);}private void setListeners() {tv_save.setOnClickListener(this);tv_date.setOnClickListener(this);tv_time.setOnClickListener(this);tv_cancel.setOnClickListener(this);}private void initDate() {Calendar c = Calendar.getInstance();int year=c.get(Calendar.YEAR);int month=c.get(Calendar.MONTH);int day=c.get(Calendar.DAY_OF_MONTH);date=getDate(year,month,day);if(type==GlobalParams.TYPE_EDIT){NotepadWithDataBean notepadWithDataBean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY));et_content.setText(notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getContent()); date=notepadWithDataBean.getData()+"";tv_date.setText(date);time=notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getTime();tv_time.setText(time);}}private String getDate(int year,int month,int day){String date="";date+=year;if(month<9){date=date+"0"+(month+1);}else{date+=(month+1);}if(day<10){date=date+"0"+day;}else {date+=day;}return date;}@Overridepublic void onClick(View v) {switch (v.getId()) {case _save:if(type==GlobalParams.TYPE_EDIT){update();}else {save();}break;case _date:selectDateDialog();break;case _time:selectTimeDialog();break;case _cancel:finish();break;}}private void selectDateDialog(){Calendar c = Calendar.getInstance();int year=c.get(Calendar.YEAR);final int month=c.get(Calendar.MONTH)+1;int day=c.get(Calendar.DAY_OF_MONTH);new DatePickerDialog(AddContentActivity.this, new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {date=getDate(year,monthOfYear,dayOfMonth);tv_date.setText(date);}},year,month,day).show();}private void selectTimeDialog() {Calendar c = Calendar.getInstance();int mHour = c.get(Calendar.HOUR_OF_DAY);int mMinute = c.get(Calendar.MINUTE);new TimePickerDialog(AddContentActivity.this,new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view,int hourOfDay, int minute) {time=formatTime(hourOfDay,minute);tv_time.setText(time);}}, mHour, mMinute, true).show();}private String formatTime(int hour,int minute){String time=hour+":";if(minute<10){time=time+"0"+minute;}else{time+=minute;}return time;}private void save() {String content = et_content.getText().toString();if ("".equals(content)) {Toast.makeText(AddContentActivity.this, "请输⼊内容", Toast.LENGTH_SHORT).show();return;}if ("".equals(time)) {Toast.makeText(AddContentActivity.this, "请选择时间", Toast.LENGTH_SHORT).show();return;}NotepadBean notepadBean = new NotepadBean();notepadBean.setContent(content);notepadBean.setDate(Integer.parseInt(date));notepadBean.setTime(time);DataHelper helper = new DataHelper(AddContentActivity.this);helper.insertData(notepadBean);setResult(GlobalParams.ADD_RESULT_OK);finish();}private void update(){DataHelper helper=new DataHelper(AddContentActivity.this);NotepadWithDataBean bean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY)); int itemPosition=bundle.getInt(GlobalParams.ITEM_POSITION_KEY);helper.update(bean.getNotepadBeenList().get(itemPosition).getId(),date,time,et_content.getText().toString()); setResult(GlobalParams.ADD_RESULT_OK);finish();}}RemindActivity.java代码:package siso.smartnotef.activity;import android.media.MediaPlayer;import android.media.RingtoneManager;import .Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.IOException;import siso.smartnotef.R;import siso.smartnotef.global.GlobalParams;public class RemindActivity extends AppCompatActivity {private TextView tv_content;private Button bt_confirm;private MediaPlayer mMediaPlayer;;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_remind);findViews();setListeners();Bundle bundle=getIntent().getExtras();String content=bundle.getString(GlobalParams.CONTENT_KEY);tv_content.setText(content);playSound();}private void findViews(){tv_content=(TextView)findViewById(_content);bt_confirm=(Button) findViewById(R.id.bt_confirm);}private void setListeners(){bt_confirm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(null!=mMediaPlayer){mMediaPlayer.stop();finish();}}});}public void playSound() {new Thread(new Runnable() {@Overridepublic void run() {mMediaPlayer = MediaPlayer.create(RemindActivity.this, getSystemDefultRingtoneUri()); mMediaPlayer.setLooping(true);//设置循环try {mMediaPlayer.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}mMediaPlayer.start();}}).start();}//获取系统默认铃声的Uriprivate Uri getSystemDefultRingtoneUri() {return RingtoneManager.getActualDefaultRingtoneUri(RemindActivity.this,RingtoneManager.TYPE_RINGTONE);}}activity_main.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="siso.smartnotef.activity.MainActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/title_color"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:textSize="18sp"android:layout_centerInParent="true"android:text="智能记事本"/><TextViewandroid:id="@+id/tv_add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:text="新增"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:textSize="13sp"/></RelativeLayout><ListViewandroid:id="@+id/lv_content"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView></LinearLayout>activity_add_content.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:id="@+id/activity_add_content"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="siso.smartnotef.activity.AddContentActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@color/title_color"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:id="@+id/tv_cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:text="取消"android:textColor="@color/white"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:textSize="18sp"android:layout_centerInParent="true"android:text="智能记事本"/><TextViewandroid:id="@+id/tv_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/white"android:text="保存"android:layout_centerVertical="true"android:layout_alignParentRight="true"/></RelativeLayout><LinearLayoutandroid:layout_marginTop="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_gravity="center_horizontal"><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="今天"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text=" -- "/><TextViewandroid:id="@+id/tv_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="请选择时间"/></LinearLayout><EditTextandroid:id="@+id/et_content"android:layout_marginTop="10dp"android:layout_width="match_parent"android:layout_height="match_parent"android:inputType="textMultiLine"android:gravity="left|top"android:layout_margin="20dp"android:padding="10dp"android:hint="请输⼊内容"android:background="@drawable/edit_back"/></LinearLayout>activity_remind.xml内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"android:orientation="vertical"tools:context="siso.smartnotef.activity.RemindActivity"><TextViewandroid:id="@+id/tv_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" /><Buttonandroid:id="@+id/bt_confirm"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="取消" /></LinearLayout>AndroidManifest.xml内容:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="siso.smartnotef"><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.AppCompat.Light.NoActionBar"><activityandroid:name=".activity.MainActivity"android:theme="@style/Theme.AppCompat.Light.NoActionBar"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity><receiver android:name=".receiver.MainReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver><activity android:name=".activity.AddContentActivity" /><serviceandroid:name=".service.MainService"android:enabled="true"android:exported="true" /><activity android:name=".activity.RemindActivity"></activity></application></manifest>项⽬结构如图:项⽬运⾏结果如图:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

基于android的日记本开发

基于android的日记本开发

西南科技大学课程设计报告课程名称:软件设计基础设计名称:基于android的日记本开发姓名:学号:班级:通信1003班指导教师:起止日期: 11.28——12.12 西南科技大学信息工程学院制方向设计任务书学生班级:通信1003班学生姓名:学号:设计名称:基于android的日记本开发起止日期:11.28——12.12 指导教师:方向设计学生日志基于android的日记本开发一、摘要(150-250字)伴随着无线移动设备的迅速发展,手机的日益普及成为主流,在这一关键时期,Android 系统的推出使手机发展进入了一个新的领域。

世界上一些知名移动设备生产厂商对于Android 智能机的开发热情日益提高,Android系统的使用人群正在急速提升,Android应用程序的多样化使人们从手机中获得更多乐趣,方便着人们的生活,使Android得到了社会越来越多的认同。

本次设计主要描述了基于android开发一个简易日记本的技术方法。

关键字:Android; DbAdapter;Activity;diary二、设计目的和意义在中国,手机已经成为人们日常生活必不可少的一部分,智能手机在高校人群中逐渐得到了普及,Android手机凭借其优秀的系统性能以及良好的用户体验迅速得到了高校师生的青睐。

在高校中,上课并不像高中时期有固定的教室和固定的时间,高校课程种类繁多,并且上课地点和时间不固定,一周内极少会出现重复课程,所以要将课程表完整的记忆下来是一项很艰难的事情,很多同学不得不随身携带一张课表来防止遗忘上课,但是还是不能完全避免该问题的发生,同时,作为一个当今高速发展的时代的成员,适应这个社会是必不能少的,在各种社交场合中,记住一些必须的信息很重要,而它们往往又繁琐又多,不易人为记住。

基于这些问题,有必要设计一款方便小巧的简易日记本程序,可以让用户自定义文件,记住上课时间和地点,从而避免遗忘上课的事情出现,同时记住那些琐碎却有意义的小信息。

Android记事本开发实例详解

Android记事本开发实例详解

这个ac<action android:name="android.intent.action.VIEW" /><action android:name="android.intent.action.EDIT" /><action android:name="com.android.notepad.action.EDIT_NOTE" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="vnd.android.cursor.item/vnd.google.note" /></intent-filter><!-- This filter says that we can create a new note inside of a directory of notes. --><intent-filter><action android:name="android.intent.action.INSERT" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="vnd.android.cursor.dir/vnd.google.note" /></intent-filter></activity>上面第一个intent-filter中有一个action 名为android.intent.action.EDIT,而前面我们创建的Intent也正好是Intent.ACTION_EDIT=” android.intent.action.EDIT”,想必大家已经明白是怎么回事了吧。

android实现记事本app

android实现记事本app

android实现记事本app⾃⼰写的⼀个简单的记事本app,效果如下:⼀、⾸先是第⼀个界⾯的编写,最上⾯是⼀个TextView,中间是⼀个Linearlayout中嵌套⼀个listview布局,最下⾯是⼀个button。

下⾯附上第⼀个页⾯的简单布局xml⽂件。

<LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@android:color/darker_gray"android:orientation="vertical" ><TextViewandroid:layout_height="wrap_content"android:layout_width="fill_parent"android:text="记事本列表"android:textSize="20sp"android:paddingTop="10dp"android:paddingBottom="5dp"android:background="#039DCF"android:gravity="center"/><LinearLayoutandroid:layout_width="fill_parent"android:id="@+id/listview"android:layout_margin="5dp"android:background="#81966F"android:layout_width="match_parent"android:layout_height="wrap_content" ></ListView></LinearLayout><Buttonandroid:id="@+id/btn_editnote"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@drawable/btn_selctor"android:layout_gravity="center"android:layout_marginBottom="10dp"android:text="添加备忘录"android:textSize="20sp" /></LinearLayout>⾄于button的样式btn_selector就是⾃⼰定义的button样式。

Android实现记事本小功能

Android实现记事本小功能

Android实现记事本⼩功能本⽂实例为⼤家分享了Android实现记事本功能的具体代码,供⼤家参考,具体内容如下⾸先声明,本⼈是android的⼩⽩,主要是新⼈项⽬写了这个程序,思路可能不是很清晰,可优化的地⽅也有很多,望路过的⼤佬不吝赐教。

该记事本包含创建新条⽬,数据库增删改查,条⽬可编辑,滑动删除与拖拽排序,简单闹钟实现(还有个简陋背景⾳乐开关就不提了太简单),接下来逐⼀介绍⼀下。

build.gradle导⼊apply plugin: 'kotlin-kapt''''implementation 'com.google.android.material:material:1.0.0'implementation 'de.hdodenhof:circleimageview:3.0.1'implementation 'com.android.support.constraint:constraint-layout:1.1.3'implementation 'androidx.room:room-runtime:2.1.0'implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'implementation 'androidx.recyclerview:recyclerview:1.0.0'kapt "androidx.room:room-compiler:2.1.0"没什么多说的。

Room数据库room数据库相⽐于sqlite来说对新⼈确实友好很多,在没有SQL基础的前提下,增删改查等实现都很简单,只需创建⼀个实例,便可在线程中进⾏。

基于Android的日记本的设计与实现

基于Android的日记本的设计与实现

基于Android的日记本的设计与实现本文将介绍一款基于Android的日记本的设计与实现,其重点包括功能需求分析、架构设计、实现过程以及测试验证。

该日记本将具备基本的日记编辑、查看和删除功能,并且将支持备份和恢复功能,让用户轻松管理自己的日记。

一、功能需求分析1. 日记编辑:用户可以在应用中创建新的日记,并可以设置标题和正文内容。

2. 日记查看:用户可以在应用中查看已经创建的日记,并且可以按时间或标题进行排序。

3. 日记删除:用户可以在应用中删除已经创建的日记,同时应该提供确认操作以避免误删。

4. 日记备份:用户可以将日记备份到本地存储中,并可以随时恢复备份的日记信息。

二、架构设计1. 数据存储:应用将使用SQLite数据库来存储日记信息,包括标题、正文内容和时间戳等信息。

2. 用户界面:应用将使用RecycleView控件来展示日记列表,可以支持分页和滚动式加载。

3. 备份恢复:应用将使用文件管理器和压缩文件来处理备份数据,进行本地存储。

三、实现过程1. 数据存储:应用开发过程中,将调用Android系统提供的SQLite数据库接口来创建相关表,并且完善表结构以存储日记信息。

2. 用户界面:应用展示日记列表使用了RecyclerView,列表项自定义布局采用LinearLayout,完善了日记编辑页面键值对参数。

3. 备份恢复:备份文件使用zip格式压缩,压缩文件存储在设备内部或外部存储媒介中,可以通过文件管理器进行备份并传输到其他设备或网络存储系统。

四、测试验证应用测试主要包括单元测试和系统测试两方面。

1. 单元测试:使用JUnit和Mockito两种测试框架,分别在本地模拟器和物理设备上进行测试,在数据存储、用户界面和备份恢复等各方面完成了基本的模块测试。

2. 系统测试:在VirtualBox虚拟机和多台不同品牌和型号的物理设备上进行了测试,检测了在不同设备上的兼容性和性能,也验证了备份恢复功能。

android移动开发基础案例教程第二版记事本案例

android移动开发基础案例教程第二版记事本案例

android移动开发基础案例教程第二版记事本案例Android移动开发基础案例教程第二版记事本案例是一个基于Android系统的应用程序开发案例,旨在帮助初学者了解Android应用程序的基本结构和开发流程。

以下是该案例的简要概述和关键步骤:案例概述记事本案例是一个简单的文本编辑器应用程序,用户可以在其中创建、编辑和保存文本文件。

该案例涵盖了Android开发中的基本概念,如活动(Activity)、布局(Layout)、意图(Intent)和数据存储等。

关键步骤1. 创建新项目:使用Android Studio创建一个新的Android项目。

2. 设计用户界面:使用XML布局文件设计应用程序的用户界面,包括文本输入框、保存按钮等。

3. 创建活动:创建一个新的活动(Activity),用于处理用户输入和应用程序逻辑。

4. 处理用户输入:在活动中编写代码,处理用户的输入,如文本编辑和保存操作。

5. 数据存储:实现数据存储功能,将用户输入的文本保存到本地文件中。

可以使用Android提供的文件存储API。

6. 测试应用程序:在模拟器或真实设备上测试应用程序,确保其正常运行并满足预期功能。

7. 调试和优化:根据测试结果调试代码,优化性能和用户体验。

注意事项在开发过程中,确保遵循良好的编程实践,如变量命名规范、代码注释等。

考虑用户界面设计的可用性和美观性,以提高用户体验。

学习和掌握Android开发的基本概念和API,以便更好地理解和应用它们。

通过这个案例,你可以逐步掌握Android开发的基础知识,并学会如何开发一个实用的应用程序。

这有助于你进一步探索更复杂的Android应用程序开发项目。

在Android Studio中开发一个简单的笔记应用

在Android Studio中开发一个简单的笔记应用

在Android Studio中开发一个简单的笔记应用Android Studio是一款功能强大的集成开发环境,专门用于Android应用的开发。

本文将介绍如何在Android Studio中开发一个简单的笔记应用,通过这个案例,读者将学习到Android应用的基本开发流程和一些常用的组件用法。

1. 应用功能需求分析在开始开发之前,我们需要明确应用的功能需求。

一个简单的笔记应用应该具备以下几个基本功能:- 笔记的增、删、改、查- 笔记的保存和读取- 笔记的列表展示和详情展示2. 创建Android项目打开Android Studio,选择 "Start a new Android Studio project" 来创建一个新的Android项目。

根据自己的喜好选择项目的名称和储存位置,并选择合适的SDK版本。

在下一步中,选择 "Empty Activity" 作为起始模板。

点击 "Finish" 完成项目的创建。

3. 设计应用界面在res/layout目录下找到activity_main.xml文件,双击打开该文件,我们可以使用Android Studio提供的可视化界面编辑器来设计应用界面。

在这个案例中,我们可以简单设计一个列表和详情展示的界面。

4. 添加笔记列表在activity_main.xml的设计视图中,向布局中添加一个RecyclerView组件来展示笔记列表。

RecyclerView是一种高级和可定制性强的列表视图,用于展示长列表数据。

我们可以通过xml或Java代码来配置RecyclerView的外观和行为。

5. 创建笔记数据实体类通过Java代码创建一个笔记数据实体类Note,该类包含了笔记的标题、内容和创建时间等属性。

在Android Studio中,可以通过右击项目目录 -> New -> Java Class 来创建一个Java类文件。

Android课程设计日记本程序

Android课程设计日记本程序

大连安博教育实训基地大连实训课程设计日记本程序xxx2011/12/261项目任务概述1.1项目背景要实现的日历除了常规的日历功能外,还可以显示与当前日期相关的信息,如当天气预报等信息。

1.2 项目任务本项目实现在Android移动设备上,查看万年历,查询天气,记录提醒定时。

方便人们生活,是人们记住做某事在预期的时间。

2需求分析用户可以使用该系统实现万年历的查看,天气预报的查看,添加备忘录,查看修改备忘功能。

2.1总体用例图图 12.2主界面用例图图22.3业务流程图3用户通过点击桌面“万年历”图标进入万年历系统,进入系统后首页会显示万年厉。

显示日期为当前日期,星期几,本月中的第几周,本年中的第几周。

按菜单键,有四项功能,分别是,“今日天气”、“指定日期”,“记录/提醒”和“关于”,单击选项选择功能。

2.4具体流程图4功能1.查询今日的天气,会显示天气信息,如温度,风力,穿衣指南等功能2.指定日期使主界面的显示信息定位。

功能3.添加提醒信息。

功能4.显示软件相关信息。

3 系统设计3.1 万年历UI——主界面图5 图6主界面,主要显示日历信息,有记录的在数字前面显示“*”,可以通过点击灰色的数字活着两个按钮切换月份。

本页面有4个菜单项。

3.2万年历UI——今日天气有一个EditView,一个Button等,能够清晰的显示当天的气温情况和少许的提醒信息,使用户一目了然。

3.3 万年历UI——指定日期图8此界面是一个对话框,包含一个DatePicker组件和确定取消按钮,比较清晰使用。

3.4 万年历UI——添加提醒这是一个ListActivity,有一个菜单项。

3.5 万年历UI——添加提醒具体页面图10这是添加提醒界面的功能具体页面,添加提醒的具体信息。

3.5 日记本UI——修改,删除提醒记录图113.6 日记本UI——关于图124数据库设计我们的系统采用的是SQLite嵌入式数据库,在这个数据库中有且只有一个表——t_emp表。

csdnandroid日记本课程设计

csdnandroid日记本课程设计

csdn android日记本课程设计一、课程目标知识目标:1. 学生能够理解Android开发的基本概念,掌握日记本应用的核心知识,如Activity的生命周期、数据存储和UI设计。

2. 学生能够运用Android Studio进行编程,实现日记本的增、删、改、查功能。

3. 学生了解并掌握Android开发中的异常处理和调试技巧。

技能目标:1. 学生能够运用所学知识独立设计并编写一个具备基本功能的日记本应用。

2. 学生具备使用Android Studio进行代码调试和优化的能力。

3. 学生能够通过查阅资料、与他人合作解决开发过程中遇到的问题。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,提高他们主动探索新知识的积极性。

2. 培养学生具备良好的团队协作精神,学会倾听、沟通和表达。

3. 培养学生具备良好的编程习惯,注重代码规范和程序优化。

本课程针对高年级学生,结合学科特点,注重理论与实践相结合,培养学生具备实际开发能力。

通过本课程的学习,学生能够掌握Android开发的基本技能,提高编程水平,培养解决问题的能力,同时树立正确的价值观和团队协作精神。

课程目标的设定旨在使学生在完成学习后能够达到预期的知识、技能和情感态度价值观的成果。

二、教学内容1. Android开发基础- Activity的生命周期- 布局管理器(线性布局、相对布局等)- 常用控件(文本框、按钮、列表等)2. 数据存储- 文件存储- SQLite数据库存储- 数据库操作(增、删、改、查)3. UI设计- 界面布局与排版- 资源文件的使用(如字符串、颜色、样式等)- 动画与过渡效果4. 编程实践- 日记本应用的设计与实现- 功能模块划分(添加日记、查看日记、修改日记、删除日记)- 代码编写与调试5. 代码优化与异常处理- 代码规范与优化- 常见异常处理- 调试技巧与实践教学内容依据课程目标,遵循科学性和系统性原则,结合教材相关章节进行组织。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验详细代码(1)布局的代码a.edit.xml代码<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/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"?><LinearLayoutxmlns:android="/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="/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;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.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 = newSimpleCursorAdapter(this,yout.row, mDiaryCursor, from, to);setListAdapter(notes);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, INSERT_ID, 0, "插入");menu.add(0, DELETE_ID, 0, "删除");return true;}@Overridepublic 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 可以找到那条数据。

相关文档
最新文档