欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android實(shí)現(xiàn)狀態(tài)欄(statusbar)漸變效果的示例

前言

為沈河等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及沈河網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、沈河網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

qq最近更新搞了漸變式狀態(tài)欄.然后...新需求就是要加這個(gè).唉

先來(lái)張效果圖:

Android實(shí)現(xiàn)狀態(tài)欄(statusbar)漸變效果的示例

常見(jiàn)的方式:

設(shè)置Theme,狀態(tài)欄透明.

 <item name="android:windowTranslucentStatus">true</item>

實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單.

比如:SystemBarTint

幾行代碼搞定了.

但是.我要潑冷水,這種方式會(huì)引起這些問(wèn)題:

1.軟鍵盤(pán)彈起bug
2.fragment不適應(yīng)

這種方式的優(yōu)點(diǎn):

兼容到4.4

我的看法:

1.用全屏模式或者狀態(tài)欄透明的方式去實(shí)現(xiàn),感覺(jué)很勉強(qiáng)
2.為了一個(gè)statusbar的效果,然后去處理一大堆不適應(yīng),我認(rèn)為是不值得的.特別是軟鍵盤(pán)彈出的問(wèn)題
3.如果為了適配4.4,要費(fèi)這么大功夫的話...

我的實(shí)現(xiàn)方式:

1.拿到StatusBar:

很簡(jiǎn)單,翻翻DecorView源碼,就能知道,是通過(guò)ColorViewState 配置創(chuàng)建的View.

Android實(shí)現(xiàn)狀態(tài)欄(statusbar)漸變效果的示例

Android實(shí)現(xiàn)狀態(tài)欄(statusbar)漸變效果的示例

由于是私有成員,要拿到對(duì)應(yīng)的參數(shù),一般做法是使用反射.

這里我取了點(diǎn)巧,既然是View,那么就能findviewbyId找到

只要想辦法拿到com.android.internal.R.id.statusBarBackground這個(gè)id值就行了

 private void initStatusBar() {
    if (statusBarView == null) {
      //android系統(tǒng)級(jí)的資源id得這么拿,不然拿不到
      int identifier = getResources().getIdentifier("statusBarBackground", "id", "android");
      statusBarView = getWindow().findViewById(identifier);
    }
    if (statusBarView != null) {
      statusBarView.setBackgroundResource("你的漸變drawable資源id");
    }
  }

2.等StatusBar繪制完成

如果你直接在onCreate中調(diào)用上面的方法,你會(huì)發(fā)現(xiàn),拿到的是null.

這是因?yàn)镾tatusbar還沒(méi)繪制完成.

所以,可以在onCreate()中使用Looper.myQueue().addIdleHandler()來(lái)保證Statusbar繪制完成后再findview.

然后對(duì)DecorView設(shè)置addOnLayoutChangeListener監(jiān)聽(tīng)

當(dāng)布局發(fā)生變化,就設(shè)置statusbar的背景

    Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
      @Override
      public boolean queueIdle() {
        if (isStatusBar()) {
          initStatusBar();
          getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
              initStatusBar();
            }
          });
        }
        return false;
      }
    });

3.為什么要addOnLayoutChangeListener:

其實(shí)不加監(jiān)聽(tīng),也能實(shí)現(xiàn)改變statusbar顏色的效果..但是會(huì)出現(xiàn)問(wèn)題

比如彈軟鍵盤(pán)后,彈popwindow后,引起window狀態(tài)改變時(shí),statusbar的顏色就會(huì)復(fù)原...

基本完整的代碼

  private View statusBarView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    //延時(shí)加載數(shù)據(jù).
    Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
      @Override
      public boolean queueIdle() {
        if (isStatusBar()) {
          initStatusBar();
          getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
              initStatusBar();
            }
          });
        }
        //只走一次
        return false;
      }
    });
  }
  private void initStatusBar() {
    if (statusBarView == null) {
      int identifier = getResources().getIdentifier("statusBarBackground", "id", "android");
      statusBarView = getWindow().findViewById(identifier);
    }
    if (statusBarView != null) {
        statusBarView.setBackgroundResource("你的漸變drawable資源id");
    }
  }

   protected boolean isStatusBar() {
    return true;
  }

這種方式的缺點(diǎn):

1.因?yàn)闆](méi)有使用全屏的模式,所以適配4.4是沒(méi)戲了.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章題目:Android實(shí)現(xiàn)狀態(tài)欄(statusbar)漸變效果的示例
文章路徑:http://aaarwkj.com/article6/jeihog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃自適應(yīng)網(wǎng)站、App開(kāi)發(fā)、網(wǎng)站營(yíng)銷(xiāo)、商城網(wǎng)站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作

網(wǎng)站設(shè)計(jì)公司知識(shí)

日韩一二三四区免费观看| 亚洲大乳大丰满中文字幕| 国产91日韩欧美在线观看 | 丝袜亚洲激情欧美日韩偷拍| 一区二区三区福利视频在线观看| 日本精品亚洲一区二区三区| 亚洲av在线视频免费播放| 91九色在线视频观看| 在线午夜免费视频观看| 欧美日韩亚洲国产专区精品| 欧美色精品人妻视频在线| 欧美日韩国内在线视频| 日韩欧美一区二区三区| 亚洲国产成人精品女人久久久′| 日韩人妻精品在线一区二区| 性感美女国产精品一区二区 | 久久久久久国产精彩视频| 色婷婷av一区二区三区张| 一区二区在线视频中文字幕| 欧美日韩性视频播放器| av小说亚洲激情乱| 日本午夜福利免费在线播放| 99久在线观看精品视频| 午夜夫妻生活视频在线观看| 免费看av网站一区二区| 亚洲欧洲日韩另类在线| 国产精品日本一区二区| 国产精品日韩欧美一区二区| 国产91黑丝在线视频| 给我搜一个一级黄色片| 日韩三级精品一区二区| 亚洲欧美日韩国产一区二区三区| 欧美日韩三级性生活水平| 欧美亚洲午夜精品久久久| 日韩精品高清视频在线观看| 国产亚洲欧美日韩中文字幕| 欧美日本黄色一级视频| 国产a级一区二区三区| 日韩在线欧美在线一区二区| 日韩不卡免费在线视频| 成年女人大片免费观看版|