RemoteViews的理解和使用
一、RemoteViews简介
作用:跨进程更新界面 使用场景:通知栏、桌面小部件
二、在通知栏上的应用
原理:通过RemoteViews加载布局,通过remoteViews的set方法,载入View动态改变布局
(一)、Notifaction的使用:Notification的使用
(二)、利用RemoteView来自定义布局
步骤①、创建layout布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/show_linear"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/show_iv_icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@mipmap/ic_launcher"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/show_tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World"/>
<TextView
android:id="@+id/show_tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="I am a super man"/>
</LinearLayout>
</LinearLayout>
notification_show
步骤②、利用RemoteViews动态修改布局
Intent intent = new Intent(this,OtherActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
//利用Notification.Builder创建Notification
Notification.Builder notification = new Notification.Builder(this);
notification.setAutoCancel(true);
notification.setSmallIcon(R.mipmap.ic_launcher);
notification.setContentTitle("Hello World");
notification.setContentText("I am a ET");
notification.setContentIntent(pendingIntent);
/*利用RemoteViews动态修改layout的内容*/
//通过包名,和自定义的layout创建RemoteViews
RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.notification_show);
//修改View的内容
remoteViews.setImageViewResource(R.id.show_iv_icon,R.mipmap.ic_launcher);
remoteViews.setTextViewText(R.id.show_tv_title,"This is fine day");
remoteViews.setTextViewText(R.id.show_tv_content,"Do you want to go with me");
//对RemoteViews设置跳转
remoteViews.setOnClickPendingIntent(R.id.show_linear,pendingIntent);
//将notification的View设置为RemoteViews
notification.setContent(remoteViews);
notification.setContentIntent(pendingIntent);
//配置完成后,将builder转化为Notification
Notification notification1 = notification.getNotification();
//放入Notification管理器中
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0,notification1);
问:为什么更新View需要用到RemoteViews类(稍后讲解)
为什么需要用到PendingIntent。(说明Intent中所包含的意图必须由用户触发)
三、RemoteViews在桌面小部件上的应用(放弃,以后再说)
AppWidgetProvider是Android用于实现桌面小部件的类,本质上是一个广播(BroadcastRecevier)
步骤:①、定义小部件(在res/layout/下新建一个XML文件) 自 定 义
②、定义小部件配置信息(res/xml/下新建一个xml文件)
RemoteViews的理解和使用的更多相关文章
- Android开发艺术探索第五章——理解RemoteViews
Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...
- Android自定义Notification并没有那么简单
背景 最近需要实现一个自定义Notification的功能.网上找了找代码,解决方案就是通过RemoteViews来实现.但是在实现过程中遇到不少问题,网上也没有很好的文章描述这些问题,所以在这里做个 ...
- Android开发艺术探索》读书笔记 (5) 第5章 理解RemoteViews
第5章 理解RemoteViews 5.1 RemoteViews的应用 (1)RemoteViews表示的是一个view结构,它可以在其他进程中显示.由于它在其他进程中显示,为了能够更新它的界面,R ...
- 完全理解Android中的RemoteViews
一.什么是RemoteViews RemoteViews翻译过来就是远程视图.顾名思义,RemoteViews不是当前进程的View,是属于SystemServer进程.应用程序与RemoteView ...
- 第五章:理解RemoteViews
RemoteView应该是一种远程View,表示的是一个View结构,他可以在其它进程中显示. 在android中使用场景有两种:通知栏和桌面小部件 5.1 RemoteView的应用 5.1.1 R ...
- Notification NotificationManager RemoteViews PendingIntent
Notification和NotificationManager :可以用来实现可视化的消息通知等,比如:下载进度显示,消息显示,广播的内容等 RemoteViews :用于创建自定义的Notific ...
- Android RemoteViews 11问11答
1.什么是RemoteView? 答:其实就是一种特殊的view结构,这种view 能够跨进程传输.并且这种remoteview 还提供了一些方法 可以跨进程更新界面.具体在android里面 一个是 ...
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews - 跨到对岸去
在之前的一篇博文( Android 之窗口小部件详解--App Widge t)中,已经介绍了App Widget的基本用法和简单实例.这篇主要讲解 App Widget 的高级内容,即通过 Remo ...
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews
Android 之窗口小部件高级篇--App Widget 之 RemoteViews 在之前的一篇博文(Android 之窗口小部件详解--App Widget)中,已经介绍了App Widget的 ...
随机推荐
- git操作流程
- web.xml中配置Spring中applicationContext.xml的方式
2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...
- 基于VMware的eCos应用程序测试(hello wold)
(1)脚本配置ecosconfig new pccdl_component CYG_HAL_STARTUP { # Flavor: data # No user value, uncomment th ...
- 解决MYSQL弃用模块错误Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future
今天使用了mysql 5.5版本,就出现了错误.错误提示如下: Deprecated: mysql_connect(): The mysql extension is deprecated and w ...
- 【4】项目结构+基本的Tornado服务
项目地址: Blog 简单的tornado服务分支: simple 项目结构 创建对应的文件夹并测试一个最简单的功能 main.py #!/usr/bin/env python # coding:ut ...
- python----特性001
特性001:python 中特性的一个例子: #!/usr/local/python3.5/bin/python3 class Person(object): def __init__(self,na ...
- sessionStorage 、localStorage 和 cookie 之间的区别(转)
essionStorage .localStorage 和 cookie 之间的区别(转) 2012-05-08 14:29:19| 分类: HTML5CSS3WEBAPP|举报|字号 订阅 ...
- zhihu spark集群,书籍,论文
spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...
- Eclipse上GIT插件EGIT使用手册ᄃ
Eclipse上GIT插件EGIT使用手册 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜 ...
- 2014.8.4我出的模拟赛【NTR酋长】
NTR酋长 (ntr.pas/.c/.cpp) 黄巨大终于如愿以偿的进入了czy的后宫中……但是czy很生气……他要在黄巨大走到他面前的必经之路上放上几个NTR酋长来阻挡黄巨大. 众所周知,NTR酋长 ...