Android畢業(yè)設計記事本APP
前言
該設計是一款輕量級的便簽工具,使用Android Studio開發(fā),風格簡練,可實現(xiàn)便簽的添加、刪除、修改、查看功能。為保證一定的安全性,設置了進入口令,類似于應用鎖,用戶可以修改口令。主要使用的技術(shù)有共享參數(shù)、數(shù)據(jù)庫、SwipeRefreshLayout控件。
功能概述
用戶打開應用后,啟動頁會判斷用戶是否第一次打開,如果是第一次打開,跳轉(zhuǎn)至引導頁,引導用戶設置進入口令;如果不是第一次打開,則跳轉(zhuǎn)至口令確認界面,為保證應用干練簡潔,啟動頁不設布局,不設延時,用戶是感覺不到啟動頁的存在的。在口令確認界面,設置了“確認”和“更改”兩個按鈕,點擊確認,如果口令正確會進入主界面;點擊修改,則會跳轉(zhuǎn)到修改口令界面。主界面實現(xiàn)了便簽的預覽和添加功能,底部有一個“添加”按鈕,點擊會進入便簽編輯界面,編輯完成后點擊右上角保存,會退出編輯界面,回到主界面,然后下拉刷新,就會出現(xiàn)剛剛編輯過的便簽。再次點擊便簽,會進入編輯界面,可修改便簽或刪除便簽。
系統(tǒng)設計
啟動界面
啟動頁面的功能是用于判斷用戶是否第一次打開應用,如果是第一次打開應用,則跳轉(zhuǎn)至引導頁,引導用戶設置進入口令;如果不是第一次打開應用,則跳轉(zhuǎn)至口令確認界面。該設計是一款輕量級的便簽工具,旨在方便、快捷,因此啟動頁不設延時和布局,僅用于實現(xiàn)判斷用戶是否第一次進入這一個功能。
這一功能實現(xiàn)的思路是,用共享參數(shù)存儲一個布爾型變量,用true表示用戶第一次進入,false表示用戶不是第一次進入。每一次打開應用,都需要判斷一次布爾型變量的真假。
在第一次進入啟動頁面時,為該布爾型變量賦初值true,if語句判斷為真,執(zhí)行如下操作:修改布爾型變量的值為false;跳轉(zhuǎn)至引導頁面。在第二次進入時,該布爾型變量的值為false,執(zhí)行操作:跳轉(zhuǎn)至口令確認界面。這樣就實現(xiàn)了只在第一次打開應用時進入引導界面,不是第一次打開則進入口令確認界面。
代碼如下:
public class LaunchActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launch);
firstRun(); //用于判斷用戶是否第一次進入
}
private void firstRun(){
SharedPreferences sharedPreferences=getSharedPreferences("FirstRun",0);
Boolean first_run=sharedPreferences.getBoolean("First",true);
//第一次進入,修改布爾變量值,跳轉(zhuǎn)至引導頁
if(first_run){
sharedPreferences.edit().putBoolean("First",false).commit();
Intent intent=new Intent(LaunchActivity.this,GuideActivity.class);
startActivity(intent);
finish();
}
//不是第一次進入,跳轉(zhuǎn)至口令確認界面
else {
Intent intent=new Intent(LaunchActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
}
}
引導界面
引導界面的功能是,在用戶第一次使用應用時,引導用戶設置一個進入口令,也就是應用鎖,旨在提供一定的安全性、私密性。
這一功能實現(xiàn)的思路是,在布局頁面使用線性布局設置三個控件,第一個是TextView控件,設置文字“歡迎使用便簽 請為自己設置一個進入口令吧!”,用于提示用戶。第二個是EditText控件,設置提示文字“請輸入由4位數(shù)字組成的口令”,讓用戶輸入口令。第三個是Button控件,設置文字“確認”。在代碼文件中,新建共享參數(shù)變量,添加鍵值對,key命名為”password”,用以存儲用戶口令。設置Button控件的點擊事件,當用戶點擊確認按鈕時,獲取EditText控件的字符串并賦給共享參數(shù),然后跳轉(zhuǎn)至主界面。這樣就實現(xiàn)了引導用戶設置口令,并保存口令。
布局如下:

代碼如下:
public class LoginActivity extends AppCompatActivity {
//聲明控件
private Button mBtnConfirm;
private Button mBtnAlter;
private EditText mEt;
private SharedPreferences mSharePreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//找到控件
mBtnConfirm = findViewById(R.id.btn_Confirm);
mBtnAlter = findViewById(R.id.btn_Alter);
mEt = findViewById(R.id.et_main);
//獲取共享參數(shù)
mSharePreferences = getSharedPreferences("data",MODE_PRIVATE);
mBtnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//獲取輸入口令
String input = mEt.getText().toString();
//判斷口令正誤
if(input.equals(mSharePreferences.getString("password",""))) {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
Toast.makeText(LoginActivity.this, "歡迎進入!", Toast.LENGTH_SHORT).show();
LoginActivity.this.finish(); //跳轉(zhuǎn)到主界面后銷毀該界面
}
else{
Toast.makeText(LoginActivity.this, "口令錯誤!", Toast.LENGTH_SHORT).show();
}
}
});
//跳轉(zhuǎn)到修改口令界面
mBtnAlter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(LoginActivity.this,AlterActivity.class);
startActivity(intent);
LoginActivity.this.finish();
}
});
}
}
更改口令界面
該頁面實現(xiàn)的功能是更改口令。實現(xiàn)該功能的思路是,在布局中設置兩個EditText控件,第一個id為et_alter_1,并添加提示文字“請輸入原口令”,第二個id為et_alter_2,添加提示文字“請輸入修改后口令”,然后設置Button控件,添加文字“確認”。在代碼文件中,設置Button控件的點擊事件,當用戶點擊確認按鈕時,獲取et_alter_1的字符串并與共享參數(shù)password比較,相同說明原口令正確,然后獲取et_alter_2的字符串并賦給password,并跳轉(zhuǎn)至主界面;如果不同,說明原口令錯誤,彈出提示。
布局如下:

代碼如下:
public class AlterActivity extends AppCompatActivity {
//聲明控件
private Button mBtn;
private EditText mEt_1;
private EditText mEt_2;
private EditText mEt_main;
private SharedPreferences mSharePreferences;//讀出
private SharedPreferences.Editor mEditor;//存入
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alter);
//找到控件
mBtn = findViewById(R.id.btn_alter_confirm);
mEt_1 = findViewById(R.id.et_alter_1);
mEt_2 = findViewById(R.id.et_alter_2);
mEt_main = findViewById(R.id.et_main);
//獲取共享參數(shù)
mSharePreferences = getSharedPreferences("data",MODE_PRIVATE);
mEditor = mSharePreferences.edit();
//修改口令
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//匹配原口令是否正確,如果正確,點擊修改后跳轉(zhuǎn)到主界面
String input = mEt_1.getText().toString(); //獲取輸入口令
if(mSharePreferences.getString("password","").equals(input)) {
mEditor.putString("password",mEt_2.getText().toString());//保存修改后口令
mEditor.commit();
Toast.makeText(AlterActivity.this, "修改成功! 歡迎進入!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(AlterActivity.this, MainActivity.class);
startActivity(intent);
AlterActivity.this.finish();
}
else{
Toast.makeText(AlterActivity.this, "原口令錯誤!", Toast.LENGTH_SHORT).show();
}
}
});
}
}
主界面和編輯界面
主界面的功能是添加便簽、查看便簽。點擊添加按鈕,會跳轉(zhuǎn)至編輯界面,編輯完成點擊保存會自動回到主界面,下拉刷新會出現(xiàn)剛剛編輯過的便簽。點擊該便簽會再次進入編輯界面,可以進行修改和刪除操作。
這兩個界面的功能實現(xiàn)起來比較復雜,需要多個控件組合以及數(shù)據(jù)庫的使用,并且功能之間相互聯(lián)系,不能分開敘述。下面以“添加便簽→在主界面顯示便簽→再次編輯該便簽”為主線介紹這兩個界面的功能實現(xiàn)。
1 建表
首先新建一個DatabaseHelper類,在這里定義建表語句:
public static final String CREATE_DIARY="create table Diary(" +
"id integer primary key autoincrement," +
"title text," +
"content text)";
表名為Diary,有兩列值,一列為title,表示便簽的標題,一列為content,表示便簽的內(nèi)容。同時重寫onCreate方法:
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DIARY);
}
2 添加便簽
首先設置添加按鈕的點擊事件:
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Detail.class);
intent.putExtra("TAG",TAG_INSERT);
startActivity(intent);
}
});
在編輯界面,設置保存按鈕的點擊事件,當用戶點擊保存時,要將兩個EditText控件的內(nèi)容保存到數(shù)據(jù)庫中,然后返回到主界面。注:編輯界面的布局用的menu布局。
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.save:
if(tag==TAG_INSERT) {
ContentValues values = new ContentValues();
values.put("title", title.getText().toString());
values.put("content", content.getText().toString());
db.insert(TABLE_NAME, null, values);
values.clear();
Toast.makeText(this, "Save", Toast.LENGTH_SHORT).show();
finish();
break;
}
3 在主界面顯示便簽
回到主界面后,需要把剛剛添加的便簽顯示出來。這里需要用到SwipeRefreshLayout控件、ListView控件和數(shù)組適配器ArrayAdapter。
首先需要查詢數(shù)據(jù)庫,將便簽的標題添加到列表項目中:
private void init(){
db=dbHelper.getWritableDatabase();
diary.clear();
//查詢數(shù)據(jù)庫,將title一列添加到列表項目中
Cursor cursor=db.query(TABLE_NAME,null,null,null,null,null,null);
if(cursor.moveToFirst()){
String diary_item;
do{
diary_item=cursor.getString(cursor.getColumnIndex("title"));
diary.add(diary_item);
}while(cursor.moveToNext());
}
cursor.close();
adapter=new ArrayAdapter<String>(
MainActivity.this,android.R.layout.simple_list_item_1,diary);
listView=(ListView)findViewById(R.id.list_item);
listView.setAdapter(adapter);
}
然后通過SwipeRefreshLayout控件下拉刷新,讓便簽標題在主界面顯示出來:
swipeRefresh=(SwipeRefreshLayout)findViewById(R.id.swipe_refresh);
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout
.OnRefreshListener() {
@Override
public void onRefresh() {
refresh();
}
});
private void refresh(){
new Thread(new Runnable(){
@Override
public void run() {
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
init();
swipeRefresh.setRefreshing(false);
}
});
}
}).start();
}
4 再次編輯該便簽
標題在主界面顯示之后,需要通過點擊標題,再次進入編輯界面,進行修改或刪除操作。
首先要設置列表項目點擊事件:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent=new Intent(MainActivity.this,Detail.class);
Id=getDiaryId(position);
// Log.d("MainActivity",""+id);
intent.putExtra("ID",Id);
intent.putExtra("TAG",TAG_UPDATE);
startActivity(intent);
}
});
}
private int getDiaryId(int position){
//獲取所點擊的日記的title
int Id;
select_item=diary.get(position);
//獲取id
db=dbHelper.getWritableDatabase();
Cursor cursor=db.query(TABLE_NAME,new String[]{"id"},"title=?",
new String[]{select_item},null,null,null);
cursor.moveToFirst();
Id=cursor.getInt(cursor.getColumnIndex("id"));
return Id;
}
}
然后在編輯界面,要呈現(xiàn)出用戶點擊的便簽對應的內(nèi)容,這一功能通過數(shù)據(jù)庫查詢id實現(xiàn)。在編輯界面代碼中,獲得主界面?zhèn)鬟^來的id,查詢該id對應的表,并將該表的title列和content列賦值給對應的兩個EditText控件:
id=intent.getIntExtra("ID",-1);
Cursor cursor=db.query(TABLE_NAME,null,"id=?",
new String[]{String.valueOf(id)},null,null,null);
if(cursor.moveToFirst()){
String select_title=cursor.getString(cursor.getColumnIndex("title"));
String select_content=cursor.getString(cursor.getColumnIndex("content"));
title.setText(select_title);
content.setText(select_content);
}
在編輯完成后,用戶點擊保存,即可保存修改后的內(nèi)容。因為保存按鈕實際上執(zhí)行了兩個功能,一個是新建便簽時,實際上執(zhí)行的是數(shù)據(jù)庫的insert功能,一個是修改便簽時,實際上執(zhí)行的是數(shù)據(jù)庫的update功能,所以保存按鈕的點擊事件需要用if語句來區(qū)分這兩種情況:
if(tag==TAG_INSERT) {
ContentValues values = new ContentValues();
values.put("title", title.getText().toString());
values.put("content", content.getText().toString());
db.insert(TABLE_NAME, null, values);
values.clear();
Toast.makeText(this, "Save", Toast.LENGTH_SHORT).show();
finish();
break;
}else if(tag==TAG_UPDATE){
//修改title和content
String update_title=title.getText().toString();
String update_content=content.getText().toString();
ContentValues values=new ContentValues();
values.put("title",update_title);
values.put("content",update_content);
db.update(TABLE_NAME,values,"id=?",new String[]{String.valueOf(id)});
finish();
break;
}
用戶點擊刪除,即可刪除便簽。實際上就是設置刪除按鈕的點擊事件,讓其執(zhí)行數(shù)據(jù)庫delete操作:
if(tag==TAG_UPDATE) {
db.delete(TABLE_NAME,"id=?",new String[]{String.valueOf(id)});
}
Toast.makeText(this,"Delete",Toast.LENGTH_SHORT).show();
finish();
這樣,就完成主界面和編輯界面的所有功能。
5 主界面和編輯界面布局


到此這篇關(guān)于Android畢業(yè)設計記事本APP的文章就介紹到這了,更多相關(guān)Android記事本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android Flutter圖片處理之高斯模糊的實現(xiàn)
這篇文章主要為大家詳細介紹了如何利用Android Flutter實現(xiàn)高斯模糊效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08
Flutter中實現(xiàn)交互式Webview的方法詳解
Flutter是一款強大的跨平臺移動應用開發(fā)框架,而Webview則是在應用中展示W(wǎng)eb內(nèi)容的重要組件,本文將介紹如何在Flutter應用中實現(xiàn)交互式的Webview,快跟隨小編一起學習一下吧2023-09-09
Android開發(fā)實現(xiàn)SubMenu選項菜單和子菜單示例
這篇文章主要介紹了Android開發(fā)實現(xiàn)SubMenu選項菜單和子菜單,結(jié)合實例形式分析了Android開發(fā)中SubMenu選項菜單和子菜單的功能、配置、布局等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
利用Warensoft Stock Service編寫高頻交易軟件
本文主要介紹了利用Warensoft Stock Service編寫高頻交易軟件的方法步驟,具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01

