RemoteViews的理解和应用

RemoteViews的介绍:

RemoteViews是一种远程View, 可以在其他进程中显示,可以跨进程更新界面;RemoteViews不能支持所有的View类型,也不能支持自定义View, 只支持如下类型:

layout:

FrameLayout  LinearLayout  RelativeLayout  GridLayout

View:

AnalogClock, button, Chronometer, ImageButton, ImageView ,ProgressBar ,TextView,  ViewFlipper ListView , GridView ,StackVie,AdapterViewFlipper,ViewStub;

RemoteViews没有提供findViewById方法;不能直接访问里面View的元素,必须要通过RemoteViews提供的set方法进行完成;


RemoteViews的set方法

对于点击事件 ,RemoteViews中只支持PendingIntent ,不支持onClicklistener

RemoteViews在Android中的使用场所有两种:通知栏桌面小部件


RemoteViews在通知栏上的应用:

定义Notification,会使用默认的布局,如果要使用自定的布局,需要给notification.contentView = remoteView指定remoteview,然后通过remoteView去更新界面

系统自带的布局:

// 创建通知消息对象

NotificationCompat.Builder builder = new NotificationCompat.Builder(YouRen.getContext());

builder.setTicker("您有一条新消息。");// 弹出的提示

builder.setContentTitle(appName);// 通知消息的标题

builder.setContentText(content);// 通知消息的内容

builder.setSmallIcon(smallIcon1);

builder.setLargeIcon(appIcon);

builder.setDefaults(Notification.DEFAULT_ALL);

builder.setWhen(System.currentTimeMillis());

builder.setAutoCancel(true); //注意不要设置setAutoCancel为true,否则监听器接收不到。

PendingIntent contentIntent = PendingIntent.getBroadcast(this, NOTIFY_REQUEST_CODE, intent_bro, PendingIntent.FLAG_UPDATE_CURRENT);//第一个参数是当前的类 , 第二个参数默认是0,第三个是intent ,可以用于手动清除通知时发送广播 , 第四个pendingIntent的属性

//显示通知

NotificationManager manger = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);

manger.notify((int) System.currentTimeMillis(), builder.build());

自定义布局:


自定义的消息通知栏


RemoteViews在桌面小部件的应用:

AppWidgetProvider 是Android用来实现桌面小部件的类;本质就是一个BroadcastReceiver, 实现功能需要继承AppWidgetProvider类,并重写onUpdate方法。AppWidgetProvider还有onEnabled,onDisabled,onDeleted以及onReceive ,而onReceive可以自动根据广播的Action来调用其余的几个方法。桌面小部件的更新也需要用到RemoteViews,更新方法主要是调用AppWidgetManager的updateAppWidget方法,传入appWidgetId跟RemoteViews。桌面小部件实现步骤如下:

1定义小部件界面:


layout下的布局

2、定义小部件配置信息:


xml文件夹下的配置信息

3、定义小部件的实现类:


上述方法可以进行删除,替换等操作
结合onreceive()

4、在AndroidManifest.xml中声明小部件:


两个action是自定义的

第一个action用于识别小部件的单击行为;

第二个action作为小部件的标识必须存在,这是系统的规范。


PendingIntent的四个属性:

FLAG_ONE_SHOT:

在当前的pendingIntent中只能被调用一次 , 然后它就会被自动cencel , 如果后续还有相同的pendingIntent , 那么它们的send方法就会调用失败。如果用了这个属性 , 那么同类的通知栏只能使用一次 , 后续的通知栏单击后将无法打开。

FLAG_NO_CREATE:

如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。(我没用过)

FLAG_CANCEL_CURRENT:

在当前的pendingIntent中如果已经存在 , 那么它们都会被cencel, 然后系统会创建一个新的pendingIntent 。对于通知栏中,那些被cencel的消息将无法打开。使用这个属性时你会发现,当你点击消息1时,没反应,当你点击第2条时就可以点击。

FLAG_UPDATE_CURRENT:(用的比较多)

在当前的pendingIntent中,如果已经存在那么它们都会被更新,即它们的intent中的extras会被替换成最新的;使用这个熟悉的时候 , 可以根据不同的变量来进行辩论,例如好友请求,判断是不是字段为“张三”,如果为张三,那么通知栏只会显示一条,否则会显示多条;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容