欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android畢業(yè)設(shè)計(jì)記事本APP

 更新時(shí)間:2021年08月20日 15:13:10   作者:付漢三  
這篇文章主要介紹了一個(gè)Android畢業(yè)設(shè)計(jì)記事本APP,它是一款輕量級(jí)的便簽工具,使用Java語(yǔ)言開(kāi)發(fā),風(fēng)格簡(jiǎn)練,可實(shí)現(xiàn)便簽的添加、刪除、修改、查看功能

前言

該設(shè)計(jì)是一款輕量級(jí)的便簽工具,使用Android Studio開(kāi)發(fā),風(fēng)格簡(jiǎn)練,可實(shí)現(xiàn)便簽的添加、刪除、修改、查看功能。為保證一定的安全性,設(shè)置了進(jìn)入口令,類(lèi)似于應(yīng)用鎖,用戶可以修改口令。主要使用的技術(shù)有共享參數(shù)、數(shù)據(jù)庫(kù)、SwipeRefreshLayout控件。

功能概述

用戶打開(kāi)應(yīng)用后,啟動(dòng)頁(yè)會(huì)判斷用戶是否第一次打開(kāi),如果是第一次打開(kāi),跳轉(zhuǎn)至引導(dǎo)頁(yè),引導(dǎo)用戶設(shè)置進(jìn)入口令;如果不是第一次打開(kāi),則跳轉(zhuǎn)至口令確認(rèn)界面,為保證應(yīng)用干練簡(jiǎn)潔,啟動(dòng)頁(yè)不設(shè)布局,不設(shè)延時(shí),用戶是感覺(jué)不到啟動(dòng)頁(yè)的存在的。在口令確認(rèn)界面,設(shè)置了“確認(rèn)”和“更改”兩個(gè)按鈕,點(diǎn)擊確認(rèn),如果口令正確會(huì)進(jìn)入主界面;點(diǎn)擊修改,則會(huì)跳轉(zhuǎn)到修改口令界面。主界面實(shí)現(xiàn)了便簽的預(yù)覽和添加功能,底部有一個(gè)“添加”按鈕,點(diǎn)擊會(huì)進(jìn)入便簽編輯界面,編輯完成后點(diǎn)擊右上角保存,會(huì)退出編輯界面,回到主界面,然后下拉刷新,就會(huì)出現(xiàn)剛剛編輯過(guò)的便簽。再次點(diǎn)擊便簽,會(huì)進(jìn)入編輯界面,可修改便簽或刪除便簽。

系統(tǒng)設(shè)計(jì)

啟動(dòng)界面

啟動(dòng)頁(yè)面的功能是用于判斷用戶是否第一次打開(kāi)應(yīng)用,如果是第一次打開(kāi)應(yīng)用,則跳轉(zhuǎn)至引導(dǎo)頁(yè),引導(dǎo)用戶設(shè)置進(jìn)入口令;如果不是第一次打開(kāi)應(yīng)用,則跳轉(zhuǎn)至口令確認(rèn)界面。該設(shè)計(jì)是一款輕量級(jí)的便簽工具,旨在方便、快捷,因此啟動(dòng)頁(yè)不設(shè)延時(shí)和布局,僅用于實(shí)現(xiàn)判斷用戶是否第一次進(jìn)入這一個(gè)功能。
這一功能實(shí)現(xiàn)的思路是,用共享參數(shù)存儲(chǔ)一個(gè)布爾型變量,用true表示用戶第一次進(jìn)入,false表示用戶不是第一次進(jìn)入。每一次打開(kāi)應(yīng)用,都需要判斷一次布爾型變量的真假。
在第一次進(jìn)入啟動(dòng)頁(yè)面時(shí),為該布爾型變量賦初值true,if語(yǔ)句判斷為真,執(zhí)行如下操作:修改布爾型變量的值為false;跳轉(zhuǎn)至引導(dǎo)頁(yè)面。在第二次進(jìn)入時(shí),該布爾型變量的值為false,執(zhí)行操作:跳轉(zhuǎn)至口令確認(rèn)界面。這樣就實(shí)現(xiàn)了只在第一次打開(kāi)應(yīng)用時(shí)進(jìn)入引導(dǎo)界面,不是第一次打開(kāi)則進(jìn)入口令確認(rèn)界面。
代碼如下:

public class LaunchActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launch);
        firstRun();  //用于判斷用戶是否第一次進(jìn)入
    }
    private void firstRun(){
        SharedPreferences sharedPreferences=getSharedPreferences("FirstRun",0);
        Boolean first_run=sharedPreferences.getBoolean("First",true);
//第一次進(jìn)入,修改布爾變量值,跳轉(zhuǎn)至引導(dǎo)頁(yè)
        if(first_run){
            sharedPreferences.edit().putBoolean("First",false).commit();
            Intent intent=new Intent(LaunchActivity.this,GuideActivity.class);
            startActivity(intent);
            finish();
        }
//不是第一次進(jìn)入,跳轉(zhuǎn)至口令確認(rèn)界面
        else {
            Intent intent=new Intent(LaunchActivity.this, LoginActivity.class);
            startActivity(intent);
            finish();
        }
    }
}

引導(dǎo)界面

引導(dǎo)界面的功能是,在用戶第一次使用應(yīng)用時(shí),引導(dǎo)用戶設(shè)置一個(gè)進(jìn)入口令,也就是應(yīng)用鎖,旨在提供一定的安全性、私密性。
這一功能實(shí)現(xiàn)的思路是,在布局頁(yè)面使用線性布局設(shè)置三個(gè)控件,第一個(gè)是TextView控件,設(shè)置文字“歡迎使用便簽 請(qǐng)為自己設(shè)置一個(gè)進(jìn)入口令吧!”,用于提示用戶。第二個(gè)是EditText控件,設(shè)置提示文字“請(qǐng)輸入由4位數(shù)字組成的口令”,讓用戶輸入口令。第三個(gè)是Button控件,設(shè)置文字“確認(rèn)”。在代碼文件中,新建共享參數(shù)變量,添加鍵值對(duì),key命名為”password”,用以存儲(chǔ)用戶口令。設(shè)置Button控件的點(diǎn)擊事件,當(dāng)用戶點(diǎn)擊確認(rèn)按鈕時(shí),獲取EditText控件的字符串并賦給共享參數(shù),然后跳轉(zhuǎn)至主界面。這樣就實(shí)現(xiàn)了引導(dǎo)用戶設(shè)置口令,并保存口令。
布局如下:

在這里插入圖片描述

代碼如下:

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, "歡迎進(jìn)入!", Toast.LENGTH_SHORT).show();
                    LoginActivity.this.finish();  //跳轉(zhuǎn)到主界面后銷(xiāo)毀該界面
                }
                else{
                    Toast.makeText(LoginActivity.this, "口令錯(cuò)誤!", 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();
            }
        });
    }
}

更改口令界面

該頁(yè)面實(shí)現(xiàn)的功能是更改口令。實(shí)現(xiàn)該功能的思路是,在布局中設(shè)置兩個(gè)EditText控件,第一個(gè)id為et_alter_1,并添加提示文字“請(qǐng)輸入原口令”,第二個(gè)id為et_alter_2,添加提示文字“請(qǐng)輸入修改后口令”,然后設(shè)置Button控件,添加文字“確認(rèn)”。在代碼文件中,設(shè)置Button控件的點(diǎn)擊事件,當(dāng)用戶點(diǎn)擊確認(rèn)按鈕時(shí),獲取et_alter_1的字符串并與共享參數(shù)password比較,相同說(shuō)明原口令正確,然后獲取et_alter_2的字符串并賦給password,并跳轉(zhuǎn)至主界面;如果不同,說(shuō)明原口令錯(cuò)誤,彈出提示。
布局如下:

在這里插入圖片描述

代碼如下:

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) {
                //匹配原口令是否正確,如果正確,點(diǎn)擊修改后跳轉(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, "修改成功! 歡迎進(jìn)入!", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(AlterActivity.this, MainActivity.class);
                    startActivity(intent);
                    AlterActivity.this.finish();
                }
                else{
                    Toast.makeText(AlterActivity.this, "原口令錯(cuò)誤!", Toast.LENGTH_SHORT).show();
                }

            }
        });
    }
}

主界面和編輯界面

主界面的功能是添加便簽、查看便簽。點(diǎn)擊添加按鈕,會(huì)跳轉(zhuǎn)至編輯界面,編輯完成點(diǎn)擊保存會(huì)自動(dòng)回到主界面,下拉刷新會(huì)出現(xiàn)剛剛編輯過(guò)的便簽。點(diǎn)擊該便簽會(huì)再次進(jìn)入編輯界面,可以進(jìn)行修改和刪除操作。
這兩個(gè)界面的功能實(shí)現(xiàn)起來(lái)比較復(fù)雜,需要多個(gè)控件組合以及數(shù)據(jù)庫(kù)的使用,并且功能之間相互聯(lián)系,不能分開(kāi)敘述。下面以“添加便簽→在主界面顯示便簽→再次編輯該便簽”為主線介紹這兩個(gè)界面的功能實(shí)現(xiàn)。

1 建表

首先新建一個(gè)DatabaseHelper類(lèi),在這里定義建表語(yǔ)句:

public static final String CREATE_DIARY="create table Diary(" +
        "id integer primary key autoincrement," +
        "title text," +
        "content text)";

表名為Diary,有兩列值,一列為title,表示便簽的標(biāo)題,一列為content,表示便簽的內(nèi)容。同時(shí)重寫(xiě)onCreate方法:

public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_DIARY);
}

2 添加便簽

首先設(shè)置添加按鈕的點(diǎn)擊事件:

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

在編輯界面,設(shè)置保存按鈕的點(diǎn)擊事件,當(dāng)用戶點(diǎn)擊保存時(shí),要將兩個(gè)EditText控件的內(nèi)容保存到數(shù)據(jù)庫(kù)中,然后返回到主界面。注:編輯界面的布局用的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 在主界面顯示便簽

回到主界面后,需要把剛剛添加的便簽顯示出來(lái)。這里需要用到SwipeRefreshLayout控件、ListView控件和數(shù)組適配器ArrayAdapter。
首先需要查詢數(shù)據(jù)庫(kù),將便簽的標(biāo)題添加到列表項(xiàng)目中:

private void init(){
    db=dbHelper.getWritableDatabase();
    diary.clear();
    //查詢數(shù)據(jù)庫(kù),將title一列添加到列表項(xiàng)目中
    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);
}
然后通過(guò)SwipeRefreshLayout控件下拉刷新,讓便簽標(biāo)題在主界面顯示出來(lái):
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 再次編輯該便簽

標(biāo)題在主界面顯示之后,需要通過(guò)點(diǎn)擊標(biāo)題,再次進(jìn)入編輯界面,進(jìn)行修改或刪除操作。
首先要設(shè)置列表項(xiàng)目點(diǎn)擊事件:

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){
        //獲取所點(diǎn)擊的日記的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)出用戶點(diǎn)擊的便簽對(duì)應(yīng)的內(nèi)容,這一功能通過(guò)數(shù)據(jù)庫(kù)查詢id實(shí)現(xiàn)。在編輯界面代碼中,獲得主界面?zhèn)鬟^(guò)來(lái)的id,查詢?cè)搃d對(duì)應(yīng)的表,并將該表的title列和content列賦值給對(duì)應(yīng)的兩個(gè)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);
}

在編輯完成后,用戶點(diǎn)擊保存,即可保存修改后的內(nèi)容。因?yàn)楸4姘粹o實(shí)際上執(zhí)行了兩個(gè)功能,一個(gè)是新建便簽時(shí),實(shí)際上執(zhí)行的是數(shù)據(jù)庫(kù)的insert功能,一個(gè)是修改便簽時(shí),實(shí)際上執(zhí)行的是數(shù)據(jù)庫(kù)的update功能,所以保存按鈕的點(diǎn)擊事件需要用if語(yǔ)句來(lái)區(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;
}

用戶點(diǎn)擊刪除,即可刪除便簽。實(shí)際上就是設(shè)置刪除按鈕的點(diǎn)擊事件,讓其執(zhí)行數(shù)據(jù)庫(kù)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è)設(shè)計(jì)記事本APP的文章就介紹到這了,更多相關(guān)Android記事本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android Flutter圖片處理之高斯模糊的實(shí)現(xiàn)

    Android Flutter圖片處理之高斯模糊的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用Android Flutter實(shí)現(xiàn)高斯模糊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Flutter中實(shí)現(xiàn)交互式Webview的方法詳解

    Flutter中實(shí)現(xiàn)交互式Webview的方法詳解

    Flutter是一款強(qiáng)大的跨平臺(tái)移動(dòng)應(yīng)用開(kāi)發(fā)框架,而Webview則是在應(yīng)用中展示W(wǎng)eb內(nèi)容的重要組件,本文將介紹如何在Flutter應(yīng)用中實(shí)現(xiàn)交互式的Webview,快跟隨小編一起學(xué)習(xí)一下吧
    2023-09-09
  • Android懸浮窗的實(shí)現(xiàn)步驟

    Android懸浮窗的實(shí)現(xiàn)步驟

    最近想做一個(gè)懸浮窗秒表的功能,所以看下懸浮窗具體的實(shí)現(xiàn)步驟,接下來(lái)通過(guò)本文給大家介紹Android懸浮窗的實(shí)現(xiàn),需要的朋友可以參考下
    2024-01-01
  • Android開(kāi)發(fā)實(shí)現(xiàn)SubMenu選項(xiàng)菜單和子菜單示例

    Android開(kāi)發(fā)實(shí)現(xiàn)SubMenu選項(xiàng)菜單和子菜單示例

    這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)SubMenu選項(xiàng)菜單和子菜單,結(jié)合實(shí)例形式分析了Android開(kāi)發(fā)中SubMenu選項(xiàng)菜單和子菜單的功能、配置、布局等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Kotlin類(lèi)型安全構(gòu)建器的一次運(yùn)用記錄

    Kotlin類(lèi)型安全構(gòu)建器的一次運(yùn)用記錄

    這篇文章主要給大家介紹了關(guān)于Kotlin類(lèi)型安全構(gòu)建器的一次運(yùn)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Android計(jì)時(shí)器控件Chronometer應(yīng)用實(shí)例

    Android計(jì)時(shí)器控件Chronometer應(yīng)用實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Android計(jì)時(shí)器控件Chronometer應(yīng)用實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Jetpack?Compose入門(mén)基礎(chǔ)全面精講

    Jetpack?Compose入門(mén)基礎(chǔ)全面精講

    開(kāi)始布局部分。這部分我個(gè)人感覺(jué)沒(méi)有必要每個(gè)組件、屬性都詳細(xì)說(shuō)到,否則篇幅會(huì)很長(zhǎng)。建立起Compose中的組件與?Android?Views的一個(gè)對(duì)應(yīng)關(guān)系就夠了。具體還是需要在實(shí)際的使用中去熟悉
    2022-10-10
  • Android Studio3.2中導(dǎo)出jar包的過(guò)程詳解

    Android Studio3.2中導(dǎo)出jar包的過(guò)程詳解

    這篇文章主要介紹了Android Studio3.2中導(dǎo)出jar包的過(guò)程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 利用Warensoft Stock Service編寫(xiě)高頻交易軟件

    利用Warensoft Stock Service編寫(xiě)高頻交易軟件

    本文主要介紹了利用Warensoft Stock Service編寫(xiě)高頻交易軟件的方法步驟,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • Android控件系列之ImageView使用方法

    Android控件系列之ImageView使用方法

    Android控件系列之ImageView使用方法,學(xué)習(xí)android的朋友可以參考下
    2012-11-11

最新評(píng)論