羊皮書APP(Android版)開發(fā)系列(七)Android沉浸通知欄

為了我們的app看起來更漂亮,處理下通知欄是很有必要的寡键,下面是沉浸通知欄的一種實(shí)現(xiàn)方式。我們?cè)陧?xiàng)目中使用一些通用的方法時(shí)雪隧,要學(xué)會(huì)提煉出基礎(chǔ)類昌腰,供其他類來使用,減少代碼重復(fù)膀跌,增加程序健壯性和可讀性遭商。

  • Android沉浸通知欄,有一個(gè)開源庫SystemBarTint,效果如下:

    這里寫圖片描述

  • 使用方法:在Activity中添加相關(guān)代碼捅伤,Demo如下:

public class MatchActionBarActivity extends Activity {   
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_match_actionbar);  
  
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  
            setTranslucentStatus(true);  
        }  
  
        SystemBarTintManager tintManager = new SystemBarTintManager(this);  
        tintManager.setStatusBarTintEnabled(true);  
        tintManager.setStatusBarTintResource(R.color.statusbar_bg);//通知欄所需顏色  
  
    }  
  
    @TargetApi(19)   
    private void setTranslucentStatus(boolean on) {  
        Window win = getWindow();  
        WindowManager.LayoutParams winParams = win.getAttributes();  
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;  
        if (on) {  
            winParams.flags |= bits;  
        } else {  
            winParams.flags &= ~bits;  
        }  
        win.setAttributes(winParams);  
    }  
  
}  
  • 在APP中使用的時(shí)候劫流,我們不要在每個(gè)Activity中都重復(fù)寫這么一段代碼,而是要自己定義一個(gè)基礎(chǔ)的抽象Activity類丛忆,用于其他Activity繼承祠汇,減少代碼重復(fù)。這里給出我定義的一個(gè)基礎(chǔ)抽象Activity類BaseActivity.java,代碼如下:
package cn.studyou.parchment.activity;

import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
import android.view.WindowManager;

import com.readystatesoftware.systembartint.SystemBarTintManager;

import cn.studyou.parchment.R;

/**
 * 基本功能:基礎(chǔ)Activity類
 * 創(chuàng)建:王杰
 * 創(chuàng)建時(shí)間:16/3/9
 * 郵箱:w489657152@gmail.com
 */
public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setTranslucentStatus(true);
        }
        SystemBarTintManager tintManager = new SystemBarTintManager(this);
        tintManager.setStatusBarTintEnabled(true);
        tintManager.setStatusBarTintResource(R.color.green);//通知欄所需顏色
    }

    @TargetApi(19)
    private void setTranslucentStatus(boolean on) {
        Window win = getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        if (on) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
    }
}

  • 然后每個(gè)Activity中繼承BaseActivity即可熄诡,如下:
package cn.studyou.parchment.activity;

import android.os.Bundle;

import cn.studyou.parchment.R;

public class MainActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
  • 最后一步可很,要在布局文件中添加如下代碼:
android:fitsSystemWindows="true"
android:clipToPadding="false"
  • 添加后的布局文件代碼形式如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/green"
    android:fitsSystemWindows="true"
    android:clipToPadding="false"
    >
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登錄"
        android:textSize="@dimen/normal"/>
</RelativeLayout>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凰浮,隨后出現(xiàn)的幾起案子我抠,更是在濱河造成了極大的恐慌,老刑警劉巖袜茧,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菜拓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡笛厦,警方通過查閱死者的電腦和手機(jī)纳鼎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贱鄙,你說我怎么就攤上這事劝贸。” “怎么了逗宁?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵映九,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我疙剑,道長(zhǎng)氯迂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任言缤,我火速辦了婚禮嚼蚀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘管挟。我一直安慰自己轿曙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布僻孝。 她就那樣靜靜地躺著导帝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪穿铆。 梳的紋絲不亂的頭發(fā)上您单,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音荞雏,去河邊找鬼虐秦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凤优,可吹牛的內(nèi)容都是我干的悦陋。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼筑辨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼俺驶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棍辕,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤暮现,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后痢毒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體送矩,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年哪替,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇怀。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凭舶,死狀恐怖晌块,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帅霜,我是刑警寧澤匆背,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站身冀,受9級(jí)特大地震影響钝尸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搂根,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一珍促、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剩愧,春花似錦猪叙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锦积,卻和暖如春芒帕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丰介。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工背蟆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人基矮。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓淆储,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親家浇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子本砰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容