Notificación de pantalla de bloqueo de Android Vista personalizada con ripple y doble toque

Estoy trabajando en una aplicación de Android. Esta última hace uso de una notificación con una vista personalizada que se muestra en la pantalla de bloqueo. Desafortunadamente, no puedo obtener el efecto de ondulación y elevación cuando toco en él como otras notificaciones. Además, un solo toque dispara la intención que he configurado, mientras que otras notificaciones requieren doble toque.

He puesto un ejemplo de proyecto mínimo en Github:

Https://github.com/lpellegr/android-notification-custom-example

El ejemplo de la aplicación ofrece dos botones para publicar notificaciones: uno que utiliza una vista personalizada y que padece los problemas mencionados anteriormente y otra notificación que utiliza la vista predeterminada del sistema con el comportamiento esperado.

Introduzca aquí la descripción de la imagen

Cualquier idea acerca de cómo obtener el efecto de ondulación y elevación, pero también el comportamiento de doble toque (manteniendo la vista personalizada) es bienvenida.

PS: Estoy apuntando a la API 19+ y quiero usar un diseño de vista personalizado para la notificación, junto con setOnClickPendingIntent ya que solo este listener permite abrir una actividad cualquiera que sea el modo de seguridad del dispositivo.

Quite setOnClickPendingIntent del método publishNotificationWithCustomView y agregue setContentIntent al constructor de notificaciones:

 private void publishNotificationWithCustomView() { String title = "Notification Custom View"; String content = "No ripple effect, no elevation, single tap trigger"; Context context = getApplicationContext(); NotificationCompat.Builder builder = new NotificationCompat.Builder(context) .setWhen(System.currentTimeMillis()) .setDefaults(DEFAULT_ALL) .setSmallIcon(R.mipmap.ic_launcher) .setPriority(NotificationCompat.PRIORITY_HIGH) .setOnlyAlertOnce(true) .setAutoCancel(false) .setColor(ContextCompat.getColor(context, R.color.colorAccent)) .setContentTitle(title) .setContentText(content) .setOngoing(true) .setCategory(NotificationCompat.CATEGORY_ALARM) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setContentIntent(createLockscreenNotificationPendingIntent(context)); int notificationLayoutResId = R.layout.lock_screen_notification; // using folder layout-vX is having issue with LG devices if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { notificationLayoutResId = R.layout.lock_screen_notification_android_n; } RemoteViews remoteView = new RemoteViews( context.getPackageName(), notificationLayoutResId); remoteView.setTextViewText(R.id.title, title); remoteView.setTextViewText(R.id.text, content); builder.setCustomContentView(remoteView); Notification notification = builder.build(); publishNotification(context, notification, 7); } 

A continuación, quite android:clickable="true" de lock_screen_notification.xml y lock_screen_notification_android_n.xml :

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="64dp"> .... 
  • Android OpenGL que extiende las excepciones de puntero nulo de GLSurfaceView
  • ¿Cómo puede detectar la vista que está pasando cuando realiza un evento táctil?
  • FindViewById devuelve null - Android - setContentView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.