一、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的理解和使用的更多相关文章

  1. Android开发艺术探索第五章——理解RemoteViews

    Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...

  2. Android自定义Notification并没有那么简单

    背景 最近需要实现一个自定义Notification的功能.网上找了找代码,解决方案就是通过RemoteViews来实现.但是在实现过程中遇到不少问题,网上也没有很好的文章描述这些问题,所以在这里做个 ...

  3. Android开发艺术探索》读书笔记 (5) 第5章 理解RemoteViews

    第5章 理解RemoteViews 5.1 RemoteViews的应用 (1)RemoteViews表示的是一个view结构,它可以在其他进程中显示.由于它在其他进程中显示,为了能够更新它的界面,R ...

  4. 完全理解Android中的RemoteViews

    一.什么是RemoteViews RemoteViews翻译过来就是远程视图.顾名思义,RemoteViews不是当前进程的View,是属于SystemServer进程.应用程序与RemoteView ...

  5. 第五章:理解RemoteViews

    RemoteView应该是一种远程View,表示的是一个View结构,他可以在其它进程中显示. 在android中使用场景有两种:通知栏和桌面小部件 5.1 RemoteView的应用 5.1.1 R ...

  6. Notification NotificationManager RemoteViews PendingIntent

    Notification和NotificationManager :可以用来实现可视化的消息通知等,比如:下载进度显示,消息显示,广播的内容等 RemoteViews :用于创建自定义的Notific ...

  7. Android RemoteViews 11问11答

    1.什么是RemoteView? 答:其实就是一种特殊的view结构,这种view 能够跨进程传输.并且这种remoteview 还提供了一些方法 可以跨进程更新界面.具体在android里面 一个是 ...

  8. Android 之窗口小部件高级篇--App Widget 之 RemoteViews - 跨到对岸去

    在之前的一篇博文( Android 之窗口小部件详解--App Widge t)中,已经介绍了App Widget的基本用法和简单实例.这篇主要讲解 App Widget 的高级内容,即通过 Remo ...

  9. Android 之窗口小部件高级篇--App Widget 之 RemoteViews

    Android 之窗口小部件高级篇--App Widget 之 RemoteViews 在之前的一篇博文(Android 之窗口小部件详解--App Widget)中,已经介绍了App Widget的 ...

随机推荐

  1. 记录一下C#+Oracle批量插入的一个方法

    public bool insertOracle(DataTable dataTable, string sql) // Oracle sql 查询的是表头 { string ConnStr = Wi ...

  2. 菜单之一:Menu基础内容

    参考<疯狂android讲义>2.10节P168 1.重要接口 Android菜单相关的重要接口共有以下四个: 其中Menu为普通菜单,SubMenu包含子项,ContextMenu当长时 ...

  3. HTML5简单入门系列(四)

    前言 今天这篇内容主要讲述HTML 5 Web Worker(一种支持前端js多线程的技术). 工作线程(Web Worker) web worker介绍 W3C 在 HTML5 的规范中提出了工作线 ...

  4. css样式书写顺序

    这里推荐先写显示属性,再写自身属性,再写文字属性:并不代表非得按这个顺序写,但这种写法可以使css结构更清晰易读,修改起来比较方便. 而且在团队项目中能更好地提高效率. //显示属性 display ...

  5. PHP怎么实现网站中,同一个用户不能同时在线?

    先上图,看个大概: 一般的原则就是,后一个用户登录时会把前一个用户踢下线. 在用户首次登录时,我们会把用户的sessionid保存到数据库,这个是用户的唯一标识.方便后边操作. 用户只有在登录时才会和 ...

  6. poj 1177 picture

    题目链接:http://poj.org/problem?id=1177 分析:这道题主要用到了线段树.扫描线以及离散化的相关算法. 离散化 离散化是当数字不多但是范围很大时采用的一种方法,将大区间的数 ...

  7. [转]从数据库中导出用友U8的现存量数据到Excel表

    转载自:http://www.czerp.com.cn/page/Default.asp?ID=372 可通过Excel获取外部数据的方式与SQL数据库创建查询连接,并导入到Excel中: Selec ...

  8. javascript之Arguments

    一.Arguments.callee //获取当前正在执行的函数,也就是这个函数自身,常用于获取匿名函数自身 语法:arguments.callee var factorial = function ...

  9. C语言中指针的指针是如何工作的?

      我们有时看到这样地饿代码: int *ptr = &x; 这里,ptr是一个指向x在内存中的地址的指针. 假设有另外一条语句是这样地的: int **ptr2 = &ptr; 我们 ...

  10. JAVA Grammar Corrector

    1. Integer.MAX_VALUE, Integer.MIN_VALUE 2. int[] res = {1,2} can only be used in the initialization, ...