android狀態欄圖標
Ⅰ Android 和 iOS 的狀態欄 各有什麼特點,哪個更好
Android的狀態欄在左邊會顯示新通知的圖標,所以不用下拉就能大體知道有什麼通知。並且Android的通知圖標類似OSX Dock上的圖標是可以實時更新的,比如說Shadowsocks就可以實時地顯示網路速度。
iOS的狀態欄在有網路訪問的時候會顯示一個Loading的Indicator,與之對應Android在ICS和JB時代會在網路連接的圖標上顯示小箭頭表示數據活動。但是這個小箭頭一般的用戶很難察覺並且會消耗一些系統資源,所以在Kitkat上被移到了快速設置面板里頭。此外原生Android系統在無法正常訪問Google伺服器的時候網路連接的圖標會變顏色。
iOS的狀態欄有一個特性就是當前運行的應用可以在上頭顯示任何文字,比如讀知乎會在狀態欄上顯示緩存進度,QQ會在狀態欄上顯示未讀消息。iOS 7更是允許應用定製狀態欄主題把狀態欄作為與應用合為一體的一部分,不過這個特性沒過幾個月就被Kitkat山寨過去了。(准確來說Kitkat只是提供了這個API,第三方應用願意做成這樣是可行的,但是Google自家的應用還是保留了傳統的黑色狀態欄)
iOS有一個全局的,相當鍵盤上的Home鍵的手勢——觸模狀態欄。
當收到新通知的時候,Android的狀態欄會短暫地顯示預覽,而iOS則可以在通知中心中設定是否啟用橫幅通知。Android這一設計的優點是對用戶的干擾小,缺點是相對來說沒那麼醒目,並且在全屏應用中不會顯示。希望以後Android有辦法實現在全屏應用中收到新通知自動顯示狀態欄。
還有一個功能在我第一次用iOS 5就覺得很好,但其實應該是屬於通知中心的范疇而不是狀態欄,那就是在全屏的應用中也可以在屏幕頂端呼出通知中心的下拉把手,之手各種定製Android和一些第三方工具都開始模仿這個功能,但直到Kitkat才正式把這個功能山寨。
補充一條,iOS的狀態欄上有個屏幕旋轉方向鎖定的圖標,Android沒有,我覺得這個圖標對於平板還是有用的。
就我個人而言,Android狀態欄能顯示通知圖標是一項更實用的功能,但是iOS狀態欄的一些細節確實不錯。
Ⅱ android notification怎麼在狀態欄顯示圖標
根據activity的生命周期,在activity不顯示時,會執行onStop函數,所以你在onStop函數(按退出鍵除外)裡面把notification放在通知欄里,再此顯示時,把notification從通知欄里去掉。
或者,只要程序在運行就一直顯示通知欄圖標,這樣簡單點。
privatevoid showNotification() {
// 創建一個NotificationManager的引用
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
// 定義Notification的各種屬性
Notification notification =new Notification(R.drawable.icon,
天籟之音播放器, System.currentTimeMillis());
notification.flags |= Notification.FLAG_ONGOING_EVENT; // 將此通知放到通知欄的Ongoing即正在運行組中
notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在點擊了通知欄中的清除通知後,此通知不清除,經常與FLAG_ONGOING_EVENT一起使用
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.defaults = Notification.DEFAULT_LIGHTS;
notification.ledARGB = Color.BLUE;
notification.ledOnMS =5000;
// 設置通知的事件消息
CharSequence contentTitle =天籟之音正在播放……; // 通知欄標題
CharSequence contentText =ameyume; // 通知欄內容
Intent notificationIntent =new Intent(context, MusicDemo.class); // 點擊該通知後要跳轉的Activity
PendingIntent contentItent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText,
contentItent);
// 把Notification傳遞給NotificationManager
notificationManager.notify(0, notification);}
去掉通知欄通知的方法
// 啟動後刪除之前我們定義的通知
NotificationManager notificationManager = (NotificationManager) this
Ⅲ Android設置狀態欄顏色和狀態欄文字、圖標顏色
Android開發中,經常需要實現下圖狀態欄的效果,類似於沉浸式狀態欄,但這里僅僅是討論設置狀態欄的顏色和狀態欄上面文字、圖標的顏色的方法。
Android 4.4(API 19)之後,就提供了修改狀態欄顏色的方法,但是在 Android 6.0(API 23)之後,才支持修改狀態欄上面的文字和圖標顏色,默認是白色的。所以會導致一個問題,在 4.4 到 6.0 之間的系統,狀態欄設置為淺色的話,狀態欄上面白色的文字和圖標會看不清,像下面這樣:
有一些第三方的系統提供了設置狀態欄和狀態欄文字、圖標顏色的方法,比如小米的MIUI和魅族的Flyme,所以考慮了下比較好的實現方式是:
當然,這裡面也會有坑,比如 MIUI 提供的修改狀態欄字體顏色方法會跟 Android 系統自帶的方法沖突,官方說明如下: 關於MIUI狀態欄字元顏色邏輯調整說明
經過網上的資料和自己的嘗試,MIUI 系統還是同時使用 MIUI 提供的方法和 Android 系統自帶的方法來修改狀態欄字體顏色比較保險。
基於上面的思考,封裝了設置 Android 4.4 以上系統狀態欄顏色和狀態欄字體、圖標顏色的方法:
要在 Application Theme 加上 <item name="android:fitsSystemWindows">true</item> ,不然頁面會頂到狀態欄上面,或者在 Activity 的布局裡面加上 android:fitsSystemWindows="true" 和 android:clipToPadding="false" 也可以。
最終實現的效果如下:
大家有更好的方案可以告訴我~