show code block

2017年3月9日 星期四

Android元件 ─ 第一次進入app的引導畫面

前言:


如何讓一個畫面只有首次進入app的時候開啟。
今日實作影片:




你必須先看過如何儲存資料:http://nikeru8.blogspot.tw/2017/02/androidsharedpreferences.html

然後我們直接用 boolean來判斷是否第一次進入。
如果是第一次設定成True
然後在下面把boolean直設定成false
儲存這個設定!
完成!
夠簡單吧。


大部分的內容都寫在如何儲存資料內了,這邊就不再贅述
以下是我完整的程式碼:



完整程式碼:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.chat.a015865.firstwork.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>



MainActivity.java



public class MainActivity extends AppCompatActivity {

    private SharedPreferences mSharedPreferences;
    private boolean firstOpenApp = true;
    private static final String DATA = "DATA";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSharedPreferences = getSharedPreferences(DATA, MODE_PRIVATE);
        readData();
        CheckFirstIn();
    }

    private void readData() {//讀取
        firstOpenApp = mSharedPreferences.getBoolean("Open", firstOpenApp);
    }

    private void saveData() {//儲存
        mSharedPreferences.edit()
                .putBoolean("Open", false)
                .apply();
    }

    private void CheckFirstIn() {
        if (firstOpenApp) {
            new AlertDialog.Builder(this)
                    .setMessage("這是第一次開啟App")
                    .setPositiveButton("確定進入", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            dialogInterface.dismiss();//關閉Dialog
                        }
                    }).show();
            firstOpenApp = false;
        }
    }

    @Override
    protected void onPause() {//在onPause內儲存
        super.onPause();
        saveData();
    }
}








影片內有用到的功能:

Dialog: http://nikeru8.blogspot.tw/2016/07/androiddialog-button.html

Demo: https://drive.google.com/open?id=0Byk75IYx-dKXRU44Tk1jNGdlVzQ


















沒有留言:

張貼留言

協程(coroutine) - 協程為什麼要學它?

 Coroutine 協程 再強調一次 協程就是由kotlin官方所提供的線程api //Thread Thread { }.start() //Executor val execu...