使用
RemoteViews 的作用是在其他进程中显示并更新 View 界面。主要用于通知栏和桌面小部件上。
1 通知栏的使用
我们使用 NotificationCompat.Builder.build() 来创建一个通知,然后调用 NotificationManager.notify() 来显示通知栏,在需要自定义通知栏 UI 时,就需要 RemoteViews 来帮忙了。
第一步:设置通知栏的 UI 布局文件
第二步:使用 RemoteViews 绑定布局
注意:Android 8.0 (API 26) 以上的手机需要 NotificationChannel 实现通知栏。
@TargetApi(26)
void testRemoteViewsInNotification() {
Intent intent = new Intent(this, NotiActivity.class);
PendingIntent pendingIntent = PendingIntent
.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
String id = "my_channel_01";
CharSequence name = "channel";
String description = "description";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(id, name, importance);
channel.setDescription(description);
channel.enableLights(true);
channel.setLightColor(Color.RED);
channel.enableVibration(true);
// 偶数表示静止时间,奇数表示振动时间
channel.setVibrationPattern(new long[]{
100, 200, 300, 400, 500, 400, 300, 200, 400});
NotificationManager manager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.createNotificationChannel(channel);
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_notification);
remoteViews.setTextViewText(R.id.msg, "demo");
remoteViews.setOnClickPendingIntent(R.id.notification, pendingIntent);
Notification notificaton = new Notification.Builder(this, id)
.setAutoCancel(false)
.setContentTitle("title")