0號首頁,移動應用快捷門戶微信
咱們已有的應用,都將Android通知欄做爲「傳統的通知」用途,好比短信,微信,QQ都在這樣使用。不過,一樣的區域,也有創新的使用方式,好比最先的音樂播放控制,如今的360智鍵,百度搜索都開始佔領通知欄,做爲其應用的快捷入口,見附後圖。app
從移動應用的成功程度評價,「佔領手機的前三屏」,到如今安裝了大量應用App後,其實除了經常使用的幾個,其他都在沉睡冰藏,很難主動想起去「找到-點擊」的使用過程。工具
不過,Android3.0之後,有了Ongoing(運行中),能夠從技術角度佔領用戶手機的最快捷入口,實現「0號首頁」。做爲娛樂工具型應用,SoLoMo的簽到(Checkin),LBS類查詢,我的記帳,還能夠提供「富功能方式」的通知提醒和通知提醒的後向操做,一些快捷工具操做。做爲企業應用,工單提醒和快捷操做,考勤簽到等。佈局
固然,使用這種「佔領並強滯留」的方式,首先要保證本身的應用「可用、好用」,或者是工做/企業應用的「必須使用」,不然被人討厭的流氓類應用去佔領就拔苗助長,讓人更快速下載了。ui
Android在新版的通知提醒服務中,增長了Ongoing選項,Notification.FLAG_ONGOING_EVENT,實現「在運行」的通知提醒,也就是能夠常駐在通知欄,實現「永遠的通知」,並在通知上附加其它操做。this
關於「其它操做」,做爲信息系統經常使用的按鈕、文本、圖片、列表等均可以添加展現。使用RemoteViews機制在「0號首頁」區域實現自定義的視圖。設計
Notification的自定義佈局是RemoteViews,在自定義視圖佈局文件中,僅支持FrameLayout、LinearLayout、RelativeLayout三種佈局控件和AnalogClock、Chronometer、Button、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView和AdapterViewFlipper這些顯示控件,不支持這些類的子類或Android提供的其餘控件。blog
同時,Notification能夠組合使用聲音、三色燈、振動和屏幕提醒,實現更好的用戶體驗。圖片
一個參考樣例,代碼:ip
public void addOngoingNotify(){NotificationCompat.Builder mBuilder = new Builder(this);RemoteViews mRemoteViews = new RemoteViews(getPackageName(), R.layout.view_notify);
mRemoteViews.setImageViewResource(R.id.notify_ongoing_icon_1, R.drawable.notify_ongoing_icon_2); mRemoteViews.setTextViewText(R.id.txt_label, 「遠圖將來」); mRemoteViews.setViewVisibility(R.id._notify_button, View.VISIBLE); mRemoteViews.setImageViewResource(R.id.btn_notify_1, R.drawable.btn_notify_2); //按鈕動做處理 Intent buttonIntent = new Intent(ACTION_BUTTON); buttonIntent.putExtra(INTENT_BUTTONID_TAG, BUTTON_PREV_ID); PendingIntent intent_prev = PendingIntent.getBroadcast(this, 1, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT); mRemoteViews.setOnClickPendingIntent(R.id.btn_notify_1, intent_prev);
mBuilder.setContent(mRemoteViews) .setContentIntent(getDefalutIntent(Notification.FLAG_ONGOING_EVENT)) .setSmallIcon(R.drawable.notify_ongoing_icon_2) .setPriority(Notification.PRIORITY_DEFAULT) .setWhen(System.currentTimeMillis()) .setTicker(「常駐通知@蓄豐實驗艙」) .setOngoing(true); Notification notify = mBuilder.build(); notify.flags = Notification.FLAG_ONGOING_EVENT; mNotificationManager.notify(notifyId, notify); } |
設置振動:setVibrate(long[] pattern)
設置三色燈:setLights(intledARGB ,intledOnMS ,intledOffMS )
設置聲音:setSound(Uri sound)
技術支持是基礎的,應用場景是充滿無限想象力的。從現有的技術解決方案,創新和設計出新的產品或應用方式,是咱們最幸福的事。