安卓 Activity總結

來源:互聯網
上載者:User

標籤:select   edittext   ice   add   store   介面   label   記憶體   擷取   

/*---------------------------------------- *-描述--Activity相關內容總結. *-描述--S1.Activity的7個生命週期 *  ☆☆☆☆☆單獨活動生命週期: *  1.Activity建立的時候:onCreate() => onStart() => onResume() *  2.按下home鍵或進入其他活動(失去焦點):onPause() => onStop() *  3.再進入(重擷取焦點):onRestart() => onStart() => onResume() *  4.退出:onPause() => onStop() => onDestroy() *  5.彈出對話方塊(失去焦點):沒走生命週期? *  6.橫豎屏切換:橫 => 豎或反過來 *      重走生命週期onPause() => onStop() => onDestroy() ... onResume() *  7.設定橫豎屏卻換不走生命週期:Activity註冊列表中添加屬性 *      android:configChanges="keyboardHidden|orientation|screenSize" *  ☆☆☆☆活動的7個生命週期描述: *  -1. void onCreate(Bundle savedInstanceState) Activity被建立的時候 *  -2. void onStart() activity變為在螢幕上對使用者可見時調用。 *  -3. void onResume() activity開始與使用者互動時調用(無論是啟動還是重新啟動一個 *      活動,該方法總是被調用的)。 *  -4. void onPause() activity被暫停時調用,該方法用於儲存活動狀態的,也是保護現場,壓棧等 *  -5. void onStop() activity被停止並轉為不可見階段及後續的生命週期事件時調用。 *  -6. void onRestart() 重新啟動activity時調用。該活動仍在棧中,而不是啟動新的活動。 *  -7. void onDestroy()    activity被完全從系統記憶體中移除時調用,該方法被調用可能是 *      因為有人直接調用onFinish()方法或者系統決定停止該活動以釋放資源 *  ☆其他相關方法 *  -1.視窗焦點變化 onWindowFocusChanged(boolean hasFocus) *  -2.當系統資源不足而銷毀活動時,會把View的狀態資訊儲存到Bundle savedInstanceState *      重新建立時又把參數載入出來,可以用於螢幕方向旋轉時資料儲存等操作 *      onCreate(Bundle savedInstanceState) *      onSaveInstanceState(Bundle outState) *      onRestoreInstanceState(Bundle savedInstanceState) *     參考: *      http://blog.csdn.net/shulianghan/article/details/38297083 *      http://blog.sina.com.cn/s/blog_618199e60101g1k5.html *-描述--S2.傳值與跳轉 *  ☆☆活動的註冊:設定name的屬性為包名+類名 *  -1.<activity android:name=".basic.dir.basic1.ModxBasic1Activity"/> *  -2.label屬性:值是Activity顯示的標題 android:label="ModxBasic1Activity" *  ☆☆Activity的跳轉: *  -1.從案頭表徵圖到APP的跳轉 *      <intent-filter> *          <action android:name="android.intent.action.MAIN" /> *          <category android:name="android.intent.category.LAUNCHER" /> *      </intent-filter> * -2.顯 直接跳轉到該APP的下一個活動 *      Intent intent = new Intent(BActivity.this, CActivity.class); *      startActivity(intent); * -3.隱式意圖 使用一個意圖跳轉到兩個已經配置了該意圖的應用 *      Intent intent = new Intent("com.example.activity"); *      startActivity(intent); *      !!需註冊 *          <intent-filter> *              <action android:name="com.example.activity" /> *              <category android:name="android.intent.category.DEFAULT" /> *          </intent-filter> *  ☆☆☆Activity的傳值方式 *  -1.在Intent 對象中,可以放入各種資料類型 *      value值可以是基礎資料型別 (Elementary Data Type)及字串、Bundle對象、實現Serializable介面或Parcelable介面的對象 *      intent還封裝了一些傳送數組、ArrayList集合的方法 *      intent.putExtra("key", value) *  -2.建立一個Bundle(資料包)對象,然後調用Bundle對象的put方法來來存入資料, *      最後把Bundle對象存入Intent中 *      !!bundle對象可以理解成一個Map索引值對 *      bundle傳送的資料類型與intent相同,但bundle封裝了更多方法 *  -3.startActivityForResult()傳值是前後兩個活動的資料交換 *      A活動啟動下一個活動並加上一個請求碼,B收到請求碼通過intent把資料回傳,並結束B活動, *      完成資料的互動。使用相對局限、麻煩 *      A startActivityForResult(intent,requestCode); *          onActivityResult(int requestCode, int resultCode, Intent data) *      B setResult(resultCode,intent) 返回資料     *      finish() *  -4.使用全域對象Application *      1).MyApplication extends Application; *      2).<application android:name=".MyApplication" manifest設定屬性 *      3).getApplication擷取Application對象,強轉MyApplication,擷取變數 *          強轉MyApplication.XXX *  -5.第三方封裝工具eventBus *-描述--S3.擴充 *  ☆☆☆活動與Fragment的生命週期: *  ☆☆☆活動與Service的生命週期: *  ☆☆☆活動的生命週期與View繪製方法: *-描述--S4.Activity的啟動模式 *  <!-- android:launchMode="singleTop" 處於棧頂時不重新建立  --> *  <!-- android:launchMode="singleInstance" 所在任務棧中,只有自己一個執行個體 --> *  <!-- android:launchMode="singleTask" 不重新建立,但會清除位於其上的任務 --> *  <!-- android:launchMode="standard" 每次跳轉重新建立  --> *-描述--None. *-描述--B1.None. *---------------------------------------------------------------------------*/
Activity常用設定Q1.設定Activity全屏/狀態列-導覽列透明

Activity全屏@link

/*set it to be no title*/

requestWindowFeature(Window.FEATURE_NO_TITLE);

/*set it to be full screen*/

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   

WindowManager.LayoutParams.FLAG_FULLSCREEN);

狀態列-導覽列背景透明@link

        // 隱藏標題列        requestWindowFeature(Window.FEATURE_NO_TITLE);        View root = LayoutInflater.from(this).inflate(R.layout.activity_main, null);        // 或者 在介面的根層加入 android:fitsSystemWindows=”true”         // 這個屬性,這樣就可以讓內容介面從 狀態列 下方開始。        ViewCompat.setFitsSystemWindows(root, true);        setContentView(root);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            // Android 5.0 以上 全透明            Window window = getWindow();            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            // 狀態列(以上幾行代碼必須,參考setStatusBarColor|setNavigationBarColor方法源碼)            window.setStatusBarColor(Color.TRANSPARENT);            // 虛擬導航鍵            window.setNavigationBarColor(Color.TRANSPARENT);        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            // Android 4.4 以上 半透明            Window window = getWindow();            // 狀態列            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            // 虛擬導航鍵            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);        }
Q2.PreferenceActivity

PreferenceActivity UI組件

CheckBoxPreference

單選框

 

SwitchPreference

開關選項

 

EditTextPreference

文本輸入框選項

 

RingtonePreference

鈴聲選項

 

ListPreference

列表框

 

MultiSelectListPreference

複選列表框

 

PreferenceCategory

組合框

 

基本屬性與方法:

公有屬性:android:defaultValue="false" // 預設值android:key="check_box_preference_1" // 相當於IDandroid:title="Check box preference" // 標題android:summary="aaa" // 概述android:persistent="true" // 表示Preference元素所對應的值是否寫入sharedPreferen檔案中android:dependency="check_box_preference_0" // 表示一個Preference(用A表示)的可用狀態依賴另外一個Preference(用B表示)ListPreference/MultiSelectListPreference:android:entries="@array/list_preference_entries" // 列表內容android:entryValues="@array/list_preference_entries" // 列表內容對應值事件:// 設定改變事件checkBoxPreference1.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {            @Override            public boolean onPreferenceChange(Preference preference, Object newValue) {                LogUtils.e(newValue.toString());                return true;            }        });// 基本方法        listPreference1.setSummary("str");        listPreference1.getSummary();        listPreference1.setValue("");        listPreference1.getValue();        listPreference1.setEntries();        listPreference1.getEntry();        listPreference1.setEntryValues();        listPreference1.getEntryValues();        listPreference1.setTitle();        listPreference1.getTitle();        listPreference1.setIcon();        listPreference1.getIcon();// 點擊事件checkBoxPreference1.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {            @Override            public boolean onPreferenceClick(Preference preference) {                return true;            }        });

其他方法

// SharedPreferences設定變化

SharedPreferences.registerOnSharedPreferenceChangeListener(listener);

新API

版本高於Android 3.0(API 10),可以在普通的Activity中使用PreferenceFragment來顯示,也可以使用PreferenceActivity。link

參考:

     PreferenceActivity developer.android

     Android之PreferenceActivity 基本使用

     Android中Preference的使用以及監聽事件分析 API分析

     Android實戰技巧之六:PreferenceActivity使用詳解 簡例

 

Q3. Activity manifest屬性配置

其他方法

// 設定APP切換到後台在最近項目中不可見 link

android:excludeFromRecents="true"

安卓 Activity總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.