編輯:關於android開發
學了一下Chris Banes大神的項目。總結一下theme相關的小知識點。先看個定義主題的不錯的小case:
在values目錄下建立兩個命名為themes的文件:
//這裡體會一下 設置狀態欄透明,設置windowDrawsSystemBarBackgrounds true
層次非常清晰,是個不錯的建主題的樣例,基本各種需要的主題就都有了。
主題的源頭是系統的Theme.AppCompat.Light.NoActionBar和Theme.AppCompat.NoActionBar。兼容包裡沒有ActionBar的淺色和深色主題,用這組主題方便我們後續自由的使用toolbar。
另外點進去看到appcompat源碼裡的:
overlays 是覆蓋物的意思。
and the actionmode will be shown over the action bar instead of pushing it down.It basically lets AppCompat know that you have a toolbar located in the top of the screen and that it should draw the ActionMode on top of it.
ActionMode顯示在頂欄,而不是屏幕中的菜單。告訴appcompat你有個toolbar在屏幕頂上,它應該把ActionMode畫到toolbar上面。
定義contentoverlay的背景的,ContentOverlay背景為null 和actionbar下面的陰影有關
- @color/primary_color_translucent
- @android:color/black
- true
- @android:color/transparent
設置狀態欄透明
android:icontoolbar右邊的三個點是 操作欄右側的操作溢出菜單,與手機物理菜單按鍵作用一樣
需要支持快速訪問的重要操作,可以在相應的 中添加 android:showAsAction=”ifRoom” ,從而將此項提升到操作欄中。
android:showAsAction總共有五個屬性。
never:永遠不會顯示。只會在溢出列表中顯示。 ifRoom:會顯示在Item中,但是如果已經有4個或者4個以上的Item時會隱藏在溢出列表中。 always:無論是否溢出,總會顯示。 withText:Title會顯示。 collapseActionView:可拓展的Item。Android 2.3.x 及更低版本的系統,則當用戶首次打開選項菜單時,系統會調用 onCreateOptionsMenu() 來創建該菜單。如果您開發的應用是用於 Android 3.0 及更高版本的系統,則系統將在啟動 Activity 時調用 onCreateOptionsMenu(),以便向操作欄顯示項目。
在 Activity 生命周期中發生的事件修改選項菜單,則可通過 onPrepareOptionsMenu() 方法執行此操作。
在 Android 2.3.x 及更低版本中,每當用戶打開選項菜單時(按“菜單”按鈕),系統均會調用 onPrepareOptionsMenu()。
在 Android 3.0 及更高版本中,當菜單項顯示在操作欄中時,選項菜單被視為始終處於打開狀態。發生事件時,如果您要執行菜單更新,則必須調用 invalidateOptionsMenu() 來請求系統調用 onPrepareOptionsMenu()。
要想長按(或者選中復選框或視圖內的類似 UI 組件)顯示出來上下文操作模式,如網易新聞長按頂部出現的復制粘貼等。有的控件webview會默認實現。
為單個視圖啟用上下文操作模式
如果希望僅當用戶選擇特定視圖時才調用上下文操作模式,則應:
實現 ActionMode.Callback 接口。在其回調方法中,您既可以為上下文操作欄指定操作,又可以響應操作項目的點擊事件,還可以處理操作模式的其他生命周期事件。
當需要顯示操作欄時(例如,用戶長按視圖),請調用 startActionMode()。
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
return true;
}
// Called each time the action mode is shown. Always called after onCreateActionMode, but
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_share:
shareCurrentItem();
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}
// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
};
android Gui系統之WMS(2)----窗口的添加,androidwmsAndroid系統很多,但是最常用的就兩類,一類是有系統進場管理的,系統窗口。還有一類就是
算法—比較兩種排序算法:選擇排序和插入排序,排序算法現在我們已經實現了兩種排序算法,我們很自然地想知道選擇排序和插入排序哪種更快。這裡我們第一次用實踐說明我們解決這個問題
活動的生命周期系列(一)返回棧,生命周期系列 生命周期對程序員很重要,特別當我們了解,就可以寫出更流暢的程序,更好的來
ListView的CheckBox實現全部選中/不選中,listviewcheckbox在Adapter類中定義一個HashMap列表,保存每一行是否被選中: priv