下面列出了android.app.Notification#BigPictureStyle ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Gets Notification.BigPictureStyle with 2 lines text.
*
* @param message Push notification Bundle.
* @param bigPicture Bitmap for BigPictureStyle notification.
* @param title String with title for push notification.
* @param messageText String with text for push notification.
* @return Notification.BigPictureStyle or null.
*/
@TargetApi(16)
static Notification.BigPictureStyle getBigPictureStyle(Bundle message, Bitmap bigPicture,
String title, final String messageText) {
if (Build.VERSION.SDK_INT < 16 || message == null || bigPicture == null) {
return null;
}
Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle() {
@Override
protected RemoteViews getStandardView(int layoutId) {
RemoteViews remoteViews = super.getStandardView(layoutId);
if (messageText != null && messageText.length() >= MAX_ONE_LINE_TEXT_LENGTH) {
// Modifications of standard push RemoteView.
try {
int id = Resources.getSystem().getIdentifier("text", "id", "android");
remoteViews.setBoolean(id, "setSingleLine", false);
remoteViews.setInt(id, "setLines", 2);
if (Build.VERSION.SDK_INT < 23) {
// Make text smaller.
remoteViews.setViewPadding(id, 0, BIGPICTURE_TEXT_TOP_PADDING, 0, 0);
remoteViews.setTextViewTextSize(id, TypedValue.COMPLEX_UNIT_SP, BIGPICTURE_TEXT_SIZE);
}
} catch (Throwable throwable) {
Log.e("Cannot modify push notification layout.");
}
}
return remoteViews;
}
};
bigPictureStyle.bigPicture(bigPicture)
.setBigContentTitle(title)
.setSummaryText(message.getString(Constants.Keys.PUSH_MESSAGE_TEXT));
return bigPictureStyle;
}
public void addBigPictureStyle(CharSequence bigContentTitle, boolean useSummary,
CharSequence summaryText, Bitmap bigPicture, Bitmap bigLargeIcon,
boolean bigLargeIconSet) {
Notification.BigPictureStyle style = new Notification.BigPictureStyle(b)
.setBigContentTitle(bigContentTitle)
.bigPicture(bigPicture);
if (bigLargeIconSet) {
style.bigLargeIcon(bigLargeIcon);
}
if (useSummary) {
style.setSummaryText(summaryText);
}
}
public static void addBigPictureStyle(NotificationBuilderWithBuilderAccessor b,
CharSequence bigContentTitle, boolean useSummary,
CharSequence summaryText, Bitmap bigPicture, Bitmap bigLargeIcon,
boolean bigLargeIconSet) {
Notification.BigPictureStyle style = new Notification.BigPictureStyle(b.getBuilder())
.setBigContentTitle(bigContentTitle)
.bigPicture(bigPicture);
if (bigLargeIconSet) {
style.bigLargeIcon(bigLargeIcon);
}
if (useSummary) {
style.setSummaryText(summaryText);
}
}
public void addBigPictureStyle(CharSequence bigContentTitle, boolean useSummary,
CharSequence summaryText, Bitmap bigPicture, Bitmap bigLargeIcon,
boolean bigLargeIconSet) {
Notification.BigPictureStyle style = new Notification.BigPictureStyle(b)
.setBigContentTitle(bigContentTitle)
.bigPicture(bigPicture);
if (bigLargeIconSet) {
style.bigLargeIcon(bigLargeIcon);
}
if (useSummary) {
style.setSummaryText(summaryText);
}
}
public void addBigPictureStyle(CharSequence bigContentTitle, boolean useSummary,
CharSequence summaryText, Bitmap bigPicture, Bitmap bigLargeIcon,
boolean bigLargeIconSet) {
Notification.BigPictureStyle style = new Notification.BigPictureStyle(b)
.setBigContentTitle(bigContentTitle)
.bigPicture(bigPicture);
if (bigLargeIconSet) {
style.bigLargeIcon(bigLargeIcon);
}
if (useSummary) {
style.setSummaryText(summaryText);
}
}
@Override
public Notification build() {
// Note: this is not a NotificationCompat builder so be mindful of the
// API level of methods you call on the builder.
Notification.Builder builder = new Notification.Builder(mContext);
builder.setContentTitle(mTitle);
builder.setContentText(mBody);
builder.setSubText(mOrigin);
builder.setTicker(mTickerText);
if (mImage != null) {
Notification.BigPictureStyle style =
new Notification.BigPictureStyle().bigPicture(mImage);
if (Build.VERSION.CODENAME.equals("N")
|| Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
// Android N doesn't show content text when expanded, so duplicate body text as a
// summary for the big picture.
style.setSummaryText(mBody);
}
builder.setStyle(style);
} else {
// If there is no image, let the body text wrap only multiple lines when expanded.
builder.setStyle(new Notification.BigTextStyle().bigText(mBody));
}
builder.setLargeIcon(getNormalizedLargeIcon());
setSmallIconOnBuilder(builder, mSmallIconId, mSmallIconBitmap);
builder.setContentIntent(mContentIntent);
builder.setDeleteIntent(mDeleteIntent);
for (Action action : mActions) {
addActionToBuilder(builder, action);
}
if (mSettingsAction != null) {
addActionToBuilder(builder, mSettingsAction);
}
builder.setDefaults(mDefaults);
builder.setVibrate(mVibratePattern);
builder.setWhen(mTimestamp);
builder.setOnlyAlertOnce(!mRenotify);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Notification.Builder.setPublicVersion was added in Android L.
builder.setPublicVersion(createPublicNotification(mContext));
}
return builder.build();
}
@Override
public Notification build() {
// Note: this is not a NotificationCompat builder so be mindful of the
// API level of methods you call on the builder.
// TODO(crbug.com/697104) We should probably use a Compat builder.
ChromeNotificationBuilder builder =
NotificationBuilderFactory.createChromeNotificationBuilder(
false /* preferCompat */, mChannelId);
builder.setContentTitle(mTitle);
builder.setContentText(mBody);
builder.setSubText(mOrigin);
builder.setTicker(mTickerText);
if (mImage != null) {
Notification.BigPictureStyle style =
new Notification.BigPictureStyle().bigPicture(mImage);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// Android N doesn't show content text when expanded, so duplicate body text as a
// summary for the big picture.
style.setSummaryText(mBody);
}
builder.setStyle(style);
} else {
// If there is no image, let the body text wrap only multiple lines when expanded.
builder.setStyle(new Notification.BigTextStyle().bigText(mBody));
}
builder.setLargeIcon(getNormalizedLargeIcon());
setSmallIconOnBuilder(builder, mSmallIconId, mSmallIconBitmap);
builder.setContentIntent(mContentIntent);
builder.setDeleteIntent(mDeleteIntent);
for (Action action : mActions) {
addActionToBuilder(builder, action);
}
if (mSettingsAction != null) {
addActionToBuilder(builder, mSettingsAction);
}
builder.setDefaults(mDefaults);
builder.setVibrate(mVibratePattern);
builder.setWhen(mTimestamp);
builder.setOnlyAlertOnce(!mRenotify);
setGroupOnBuilder(builder, mOrigin);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Public versions only supported since L, and createPublicNotification requires L+.
builder.setPublicVersion(createPublicNotification(mContext));
}
return builder.build();
}
@Override
public ChromeNotificationBuilder setStyle(Notification.BigPictureStyle style) {
assert false; // unused
return this;
}
@Override
public ChromeNotificationBuilder setStyle(Notification.BigPictureStyle style) {
mBuilder.setStyle(style);
return this;
}
ChromeNotificationBuilder setStyle(Notification.BigPictureStyle style);