资源描述:
《完全理解顶峰APP开发Android系列中的RemoteViews》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、完全理解顶峰APP开发Android系列中的RemoteViews一、什么是RemoteViewsRemoteViews翻译过来就是远程视图.顾名思义,RemoteViews不是当前进程的View,是属于SystemServer进程.应用程序与RemoteViews之间依赖Binder实现了进程间通信.二、RemoteViews的用法RemoteViews使用最多的场合是通知栏和桌面小插件.以通知栏为例,讲解下它的用法.1、新建一个Notification这里要注意是在android3.0之前都是使用如下的形式构建一个Notifica
2、tion//1.新建一个Notification对象NotificationmNotification=newNotification();//2.添加属性,比如标题、内容、优先级、图片等mNotification.tickerText="这是通知栏的标题";mNotification.icon=R.drawable.ic_launcher;mNotification.flags=Notification.FLAG_NO_CLEAR;mNotification.setLatestEventInfo(this,"这是内容","这是标题"
3、,null);在3.0之后官方推荐使用建造者模式创建Notification.NotificationmNotification=newNotification.Builder(this).setContentTitle("这是标题").setContentText("这是内容").setSmallIcon(R.drawable.ic_launcher).build();Notification有很多属性,这里列举一些-setContentTitle设置标题-setContentText设置内容-setLargeIcon设置通知栏大图
4、标-setSmallIcon设置通知栏小图标-setContent设置RemoteViews-setContentIntent当通知条目被点击,就执行这个被设置的Intent.-setDeleteIntent当用户点击"ClearAllNotifications"按钮区删除所有的通知的时候,这个被设置的Intent被执行-setLights设置闪光灯-setSound设置声音-setPriority设置优先级2、设置Notification的RemoteViews如果要给通知栏使用自定义布局就要使用RemoteViews了,传入包名和
5、相应的布局.RemoteViewsmRemoteViews=newRemoteViews("com.example.remoteviewdemo",R.layout.remoteview_layout);然后通过setContent()传入RemoteViews对象即可.这里顺便讲一下PendingIntent,PendingIntent是”延迟意图”的意思,就是当满足某一条件时出触发这个Intent.通过PendingIntent的getActivity、getBroadcast、getService等分别构建一个打开对应组件的延迟
6、Intent.传入四个参数,context、intent、requestCode(自定义)、flag.Intentintent=newIntent(MainActivity.this,MainActivity.class);PendingIntentmPendingIntent=PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);PendingIntent有4种flag.-FLAG_ONE_SHOT只执行一次-F
7、LAG_NO_CREATE若描述的Intent不存在则返回NULL值-FLAG_CANCEL_CURRENT如果描述的PendingIntent已经存在,则在产生新的Intent之前会先取消掉当前的-FLAG_UPDATE_CURRENT总是执行,这个flag用的最多3、获取通知管理者NotificationManagermanager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);4、弹出通知调用notify方法,传入一个id(自定义)和通知实
8、例即可.manager.notify(1,mNotification);5、例子我用一个按钮弹出通知,点击这个通知时进入到该ActivitypublicclassMainActivityextendsActivity{p