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)
技术支持是基础的,应用场景是充满无限想象力的。从现有的技术解决方案,创新和设计出新的产品或应用方式,是咱们最幸福的事。