2015-06-23 8 views
6

Desidero visualizzare un'immagine nella mia notifica utilizzando l'immagine grande in stile builder (e non utilizzando la visualizzazione personalizzata). L'immagine viene ritagliata sempre. Come dovrei visualizzare l'immagine corretta per dispositivi diversi a seconda dei rapporti dello schermo?Ridimensionamento dell'immagine in notifica stile bigpicture

Ho cercato e ho ottenuto che abbiamo bisogno di visualizzare la notifica ridimensionando l'immagine a seconda della larghezza dello schermo, ma non sono in grado di implementarlo e troppo confuso con ppi, dpi e tutti gli altri formati forniti per l'immagine . Qualcuno può fornirmi il codice per convertire la bitmap in modo che venga visualizzata nel formato corretto sui diversi dispositivi in ​​base alle dimensioni dello schermo?

risposta

0

Questo è il modo per scalare il bitmap ricevuto in cui 2 ° e 3 ° argomenti sono la larghezza e l'altezza, rispettivamente

Bitmap b = Bitmap.createScaledBitmap(receivedBitmap, 120, 120, false); 

Incase si desidera ridimensionare mantenendo il rapporto di formato in base al vostro larghezza, poi fare questo

public Bitmap getResizedBitmap(Bitmap bm, int width) { 
    float aspectRatio = bm.getWidth()/
      (float) bm.getHeight(); 
    height = Math.round(width/aspectRatio); 

    Bitmap resizedBitmap = Bitmap.createScaledBitmap(
      bm, width, height, false); 

    return resizedBitmap; 
} 

e per generare la notifica con bitmap in scala, utilizzare questo

NotificationManager notificationManager = (NotificationManager) 
mContext.getSystemService(Context.NOTIFICATION_SERVICE); 
Notification notification = new Notification.Builder(mContext) 
     .setContentTitle("set title") 
     .setContentText("Swipe Down to View") 
     .setSmallIcon(mContext.getApplicationInfo().icon) 
     .setLargeIcon(receivedBitmap) 
     .setContentIntent(pendingIntent) 
     .setDefaults(Notification.DEFAULT_SOUND) 
     .setStyle(new Notification.BigPictureStyle() 
       .bigPicture(b)) 
     .setPriority(Notification.PRIORITY_HIGH) 
     .setVibrate(new long[0]) 
     .build();