標籤: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總結