studio programacion para móviles libros gratis edición desarrollo desarrollar curso aprende aplicaciones android push-notification

programacion - ¿Cómo crear un diseño de notificación personalizado en Android?



programacion android pdf 2018 (4)

Este código me funcionó.

private static RemoteViews contentView; private static Notification notification; private static NotificationManager notificationManager; private static final int NotificationID = 1005; private static NotificationCompat.Builder mBuilder; private void RunNotification() { notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mBuilder = new NotificationCompat.Builder(getApplicationContext(), "notify_001"); contentView = new RemoteViews(getPackageName(), R.layout.my_notification_layout); contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); Intent switchIntent = new Intent(this, BackgroundService.switchButtonListener.class); PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 1020, switchIntent, 0); contentView.setOnClickPendingIntent(R.id.flashButton, pendingSwitchIntent); mBuilder.setSmallIcon(R.mipmap.newicon); mBuilder.setAutoCancel(false); mBuilder.setOngoing(true); mBuilder.setPriority(Notification.PRIORITY_HIGH); mBuilder.setOnlyAlertOnce(true); mBuilder.build().flags = Notification.FLAG_NO_CLEAR | Notification.PRIORITY_HIGH; mBuilder.setContent(contentView); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String channelId = "channel_id"; NotificationChannel channel = new NotificationChannel(channelId, "channel name", NotificationManager.IMPORTANCE_HIGH); channel.enableVibration(true); channel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); notificationManager.createNotificationChannel(channel); mBuilder.setChannelId(channelId); } notification = mBuilder.build(); notificationManager.notify(NotificationID, notification); }

este es mi diseño de notificación

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="#e9ebe9"> <ImageView android:id="@+id/flashButton" android:layout_width="180dp" android:layout_height="50dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="-20dp" android:src="@drawable/turnoff2" /> <ImageView android:layout_width="100dp" android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="-10dp" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:src="@mipmap/newicon" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="80dp"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:text="Flashlight" android:textColor="#000000" android:textSize="13sp" /> <TextView android:id="@+id/charging" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/title" android:layout_alignParentLeft="true" android:layout_marginTop="3dp" android:text="90% Charging" android:textColor="#000000" android:textSize="13sp" /> </RelativeLayout> </RelativeLayout>

Espero que esto te pueda ayudar

¿Cómo mostrar el contenido completo en la notificación al primer momento en Android con el uso del estilo de notificación o necesita un diseño personalizado?


Supongo que lo que estás buscando es .setSubText() . La notificación de flipkart que ha señalado definitivamente no es una vista personalizada.

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(icon) .setSubText("Limited Stocks, Don''t Wait!") <------- .setContentTitle("Custom Notification Title") notificationBuilder.notify(1, notificationBuilder.build());


Usé BitTextStyle () para agregar texto resaltado en la notificación.

return new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.ic_mono) .setContentTitle(title) .setContentText(message) .setLargeIcon(icon) .setColor(ContextCompat.getColor(context, R.color.notification_color)) .setStyle(new NotificationCompat.BigTextStyle().bigText(title)) .setStyle(new NotificationCompat.BigTextStyle().bigText(message).setSummaryText("#hashtag")) .setShowWhen(true) .setAutoCancel(true);


Use una vista de contenido personalizada en su contentView de notificaciones

Para definir un diseño de notificación personalizado, comience instanciando un objeto RemoteViews que infla un archivo de diseño XML. Luego, en lugar de llamar a métodos como setContentTitle (), llame a setContent() . Para establecer detalles de contenido en la notificación personalizada, use los métodos en RemoteViews para establecer los valores de los elementos RemoteViews de la vista:

Cree un diseño XML para la notificación en un archivo separado. Puede usar el nombre de archivo que desee, pero debe usar la extensión .xml. En su aplicación, use los métodos RemoteViews para definir los iconos y el texto de sus notificaciones. Coloque este objeto RemoteViews en su NotificationCompat.Builder llamando a setContent () . Evite establecer un fondo dibujable en su objeto RemoteViews, porque el color del texto puede volverse ilegible.

custom_push.xml tiene mis vistas personalizadas R.id.image, R.id.text, R.id.title

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="64dp" android:padding="10dp" > <ImageView android:src="@mipmap/ic_launcher" android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" /> <TextView android:textSize="13dp" android:textColor="#000" android:text="Testing" android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" /> <TextView android:textSize="13dp" android:textColor="#000" android:text="Testing is awecome" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" android:layout_below="@id/title" /> </RelativeLayout>

Instanciar un objeto RemoteViews y configurarlo,

RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_push); contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); contentView.setTextViewText(R.id.title, "Custom notification"); contentView.setTextViewText(R.id.text, "This is a custom layout"); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.icon) .setContent(contentView); Notification notification = mBuilder.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.defaults |= Notification.DEFAULT_SOUND; notification.defaults |= Notification.DEFAULT_VIBRATE; notificationManager.notify(1, notification);

comprobar: https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ApplyStyle