我最近看到了一则YouTube通知,其中图片显示在通知的折叠视图中。
现在我知道并且已经使用通知的BigPictureStyle在通知扩展时显示图像。但是在使用此模式时,折叠通知仅显示摘要文本,而不显示图像的小缩略图。
YouTube通知以折叠模式显示图像的缩略图,以及展开时通常的大图片样式大图像。这不是大图标,因为通知扩展时,大图标是YouTube频道缩略图,图片显示在大图片部分。
我将如何实现这样的目标?这是一个自定义远程视图,它扩展为一个大图片视图吗?
我不知道如何做到这一点。我目前的代码是:
try{
NotificationCompat.Builder builder = new NotificationCompat.Builder(this,UserRewardChannel);
builder.setAutoCancel(true);
builder.setContentTitle(remoteMessage.getData().get("messagetitle"));
builder.setContentText(remoteMessage.getData().get("messagebody"));
builder.setSmallIcon(R.drawable.ic_foodini_notif);
builder.setColor(ContextCompat.getColor(this,R.color.colorAccent));
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher2));
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
builder.setSound(defaultSoundUri);
builder.setVibrate(new long[]{0,100,100,100});
if(Boolean.parseBoolean(remoteMessage.getData().get("hasimage"))){
Bitmap image=null;
Response response = null;
try {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.readTimeout(10000,TimeUnit.MILLISECONDS)
.retryOnConnectionFailure(false)
.build();
Request request = new Request.Builder()
.url(remoteMessage.getData().get("imageurl"))
.build();
response = client.newCall(request).execute();
InputStream imageStream = response.body().byteStream();
image = BitmapFactory.decodeStream(imageStream);
} catch (Exception e) {
//Log.d("FragmentCreate","Some error occured while creating the notification in debug mode",e);
}finally {
try {
response.close();
}catch (Exception e){
//Do nothing
}
}
if(image!=null){
builder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(image).setSummaryText(remoteMessage.getData().get("messagebody")));
}else{
builder.setStyle(new NotificationCompat.BigTextStyle().setSummaryText(remoteMessage.getData().get("messagebody")).bigText(remoteMessage.getData().get("messagebody")));
}
}else{
builder.setStyle(new NotificationCompat.BigTextStyle().setSummaryText(remoteMessage.getData().get("messagebody")).bigText(remoteMessage.getData().get("messagebody")));
}
int notif_id=(int)(System.currentTimeMillis()%10000);
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(getApplicationContext());
notificationManagerCompat.notify(notif_id,builder.build());
} catch (Exception e) {
//Log it
}
答案 0 :(得分:0)
看起来他们使用自定义视图作为折叠视图,而使用扩展视图则使用本机大图像样式。
观看以下视频:https://youtu.be/U-XhYDWIpKE (请注意视图中的小时)。
答案 1 :(得分:0)
您将需要创建自定义通知布局。有关如何创建这些文件的指南,请访问:
https://developer.android.com/training/notify-user/custom-notification
此链接上的代码描述了如何设置通知的较小且扩展的布局