編輯:關於Android編程
這節課將會介紹如何隱藏不同的版本的狀態條。隱藏狀態條可以使內容展示區域更大,因此可以提供一種更強的身臨其境的用戶體驗。
含有狀態條的APP:
隱藏狀態條的APP,注意這裡的ActionBar同樣也隱藏了。絕不要在沒有狀態條的時候還顯示ActionBar:
開發者可以通過設置WindowManager的標志來隱藏Android 4.0之前的狀態條。除此之外在清單文件中設置Activity的主題也可以達到同樣的效果。如果需要狀態條一直保持隱藏狀態,那麼在清單文件中設置主題是我們的首選方式:
...
使用Activity主題的優勢在於:
相對於動態設置來說更易於維護也減小了出錯的風險。 這會使得UI轉場更加平滑,因為系統在實例化Activity之前J就已經得到了它需要的UI渲染信息(狀態條隱藏等等)。開發者可以通過設置WindowManager的標志來達到同樣的目的。這種方法適合用戶與APP交互的時候使用。
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // If the Android version is lower than Jellybean, use this call to hide // the status bar. if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } setContentView(R.layout.activity_main); } ... }
當你設置了WindowManager標志(不論是通過Activity的主題還是動態的設置),那麼該標志則會一直保留,直到將該標志移除。
你可以通過使用setSystemUiVisibility()方法隱藏Android 4.1以上系統的狀態條。setSystemUiVisibility()為單個的View層級設置了UI標志;這些設置被整合進了Window層級。setSystemUiVisibility()比WindowManager的控制粒度更細。下面的代碼隱藏了狀態條:
View decorView = getWindow().getDecorView(); // Hide the status bar. int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); // Remember that you should never show the action bar if the // status bar is hidden, so hide that too if necessary. ActionBar actionBar = getActionBar(); actionBar.hide();
要注意以下幾個方面:
一旦UI的標志被清除(比如,通過導航的方式離開了Activity),那麼如果你想重新隱藏狀態條的話則需要重新設置這些標志。 在不同的地方設置UI標志還有些差異。如果在Activity的onCreate()方法中隱藏了系統條,這時用戶返回了桌面,那麼系統條則會再次出現。當用戶重新打開Activity時,onCreate()不會被再次調用,所以系統條會一直保持可見。如果你想使系統條還保持原來的狀態的話,則需要在onResume()中或onWindowFocusChanged()中設置相應的標志。 setSystemUiVisibility()只有在View可見的時候設置才有效。 由導航的方式離開View會使由setSystemUiVisibility()設置的標志被清除。在Android 4.1以上的版本中,你可以將應用的內容區域顯示在狀態條的後面,所以內容區域的尺寸並不會隨著狀態條的隱藏顯示而變化。通過使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN標志來實現這一點。你可能還需要使用SYSTEM_UI_FLAG_LAYOUT_STABLE標志來輔助APP維持一個穩定的布局狀態。
當你使用了這項方法,那麼你就有責任確保APP UI的邊界部分不會被系統條所遮蓋。在很多情況下,你可以通過在布局文件中添加android:fitsSystemWindows=true屬性來處理這種情況。它會調整父ViewGroup的內邊距來留出系統窗口的空間,這種方法足以應對大多數的應用。
在Android 4.1以上的版本中,為了避免重新調整布局的尺寸,當ActionBar顯示或隱藏時,你可以開啟ActionBar的Overlay Mode。當處於Overlay Mode下時,Activity的布局會使用所有的可用空間,就仿佛ActionBar不存在一樣,系統會將ActionBar繪制在布局的上面一層。這會使布局頂部的部分變的模糊,不過當ActionBar顯示或者隱藏時,系統並不會重寫調整布局的尺寸,這會使得轉場過程無縫對接。
為了可以使ActionBar開啟Overlay Mode,你需要創建一個自定義主題,並需要繼承已有的攜帶ActionBar的主題,並需要將android:windowActionBarOverlay屬性設置為true即可。
在做項目的時候,因為要用到我們自動獲取聯系人的姓名和電話,就想到了ContentProvider分享數據的功能,這樣做既節省了時間,也減少了我們輸入錯誤號碼的幾率,所以,
活動的啟動模式啟動模式一共有四種,分別是 standard、singleTop、singleTask 和singleInstance,可以在AndroidManifest
先看看效果: 首先,導入包:compile files(libs/nineoldandroids-2.4.0.jar)r然後在main中創建一個widget包。 c創建V
效果如下:BitmapShader 的簡單介紹關於 Shader是什麼,Shader的種類有哪幾種以及如何使用不屬於本文范疇,對這方面不是很了解的同學,建議先去學習一下