安卓沉浸式(透明)狀態欄學習小結
想做出好看的界面,看到扣扣界面狀態欄和toolbar(Actionbar)顏色一樣,就查了一下:
沉浸狀態欄
就是頂部狀態欄變得透明,背景變為activity的背景;
要求版本是5.0以上,不過現在應該沒有不符合的了(minsdk 21)
第一步
以下二選一
**一**
java文檔里改
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
這個需要在每一個activity里寫,在`setContentView(R.layout.XXX)`后面聲明就可以
**二**
在style里改,在style里增加一個新項
<item name="android:windowTranslucentStatus">true</item>
在style的theme里增加這一項,所有使用這個theme的activity都自動這樣
第二步
寫到這里運行就會發現一些問題,如圖
可以看到,狀態欄的顏色變了,但是actionbar卻被擠壓了,這是因為狀態欄透明后,整個布局向上平移,卻不能遮蓋狀態欄,因此就擠壓了actionbar里面的內容
改進方法,在activity布局里的第一個組件里增加一句
android:fitsSystemWindows="true"
這樣就會發現上部給狀態欄留出了空隙
## **第三步** ##
這時候會發現還是有bug,第一,當第一個布局是toolbar時,第二步無效;
第二,當有drawlayout時,只有drawlayout有這種效果,主界面沒有;第三,當含有include布局時,各種bug
所以直接來最終方法:第二部的就是為了給狀態欄留一個空間,可以直接在第一個布局上聲明狀態欄的高度是25dp,
我們直接留出25dp就可以了,所以只需1.3兩步就可以了
*然后又想起一個問題,當有抽屜布局時對于主界面這個效果是無法實現的,因為有drawlayout的通常只有一個,所以可以把theme的
colorparimydark設置成和這個activity的actionbar顏色一樣,也算投機取巧吧*
到此結束,感覺界面的坑好深好深
智能推薦
Android 沉浸式狀態欄的實現方法、狀態欄透明
現在越來越多的軟件都開始使用沉浸式狀態欄了,下面總結一下沉浸式狀態欄的兩種使用方法 注意!沉浸式狀態欄只支持安卓4.4及以上的版本 狀態欄:4.4上是漸變色,5.0上是完全透明,本文模擬器為4.4演示 效果圖: 注意!兩種方法的區別: 第一種:為頂部欄跟隨當前activity的布局文件的背景的顏色,使用方便,不過也有點問題就是,如果有底部虛擬導航鍵的話,導航鍵的背景跟頂部的顏色一樣,比如: 第二種...
Android沉浸式狀態欄(透明狀態欄)最佳實現
Android沉浸式狀態欄(透明狀態欄)最佳實現 在Android4.4之前,我們的應用沒法改變手機的狀態欄顏色,當我們打開應用時,會出現上圖中左側的畫面,在屏幕的頂部有一條黑色的狀態欄,和應用的風格非常不協調;為了提供更好的界面交互,google在Android4.4以后提供了設置沉浸式狀態欄的方法,對于沉浸式狀態欄這個名字存在爭議,我們不做討論,實際的效果其實就是透明的狀態欄,然后在狀態欄的位...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
猜你喜歡
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...