我想在Android通知栏中显示大图片样式图片。但是我遇到了问题 - >当我使用以下代码在通知栏中设置图像时:
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setOngoing(false)
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(bitmap))
.setPriority(Notification.PRIORITY_HIGH)
//.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentIntent(resultPendingIntent);
// mId allows you to update the notification later on.
mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
NotificationManager mNotificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0 , mBuilder.build());
始终从左右角落裁剪。我不想使用远程视图。任何人都可以告诉我可以放在通知栏中的图像的大小和分辨率,不应该被裁剪。
由于
答案 0 :(得分:12)
因为它不是2:1的比例而被裁剪的原因 您为大图片提供的图片应该是2:1的比例,否则它会被裁剪或图像很小会变得拉伸。
查看https://documentation.onesignal.com/docs/android-customizations#section-big-picture
答案 1 :(得分:3)
为什么不使用布局而不是位图?这是一个如何操作的教程,http://codeversed.com/expandable-notifications-android/,在布局中你可以调整imageview属性来居中和缩放图像,还可以使用android的屏幕大小存储桶来获取针对特定屏幕优化的图像大小。如果有帮助,请告诉我。
编辑:是否有任何解决方案可以帮助您实现,您想要什么?如果是这样,请接受其中一个答案,因为它可能会帮助其他人。谢谢答案 2 :(得分:2)
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/notification_template_material_big_picture.xml和http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.0_r1/android/app/Notification.java#Notification.Builder.getBigPictureLayoutResource%28%29 - Android源代码。
我认为这可能有助于澄清为什么会出现问题。 ImageView行为取决于屏幕大小,因此您的图像将被裁剪为
android:scaleType="centerCrop"
在每个设备上的方式不同,我很害怕。
答案 3 :(得分:1)
尝试将图片视图放在布局中。因为有时它可以顺利运行。并尝试将scaletype = centerinside放入xml中。