2015-06-23 13 views
6

Chcę wyświetlić obraz w moim powiadomieniu przy użyciu dużego obrazu w stylu budowniczego (a nie przy użyciu widoku niestandardowego). Obraz jest przycinany zawsze. Jak wyświetlić właściwy obraz dla różnych urządzeń w zależności od współczynników ekranu?Zmiana rozmiaru obrazu w powiadomieniu w stylu bigpicture

Mam wyszukiwane i mam, że musimy wyświetlić powiadomienie przez skalowanie obrazu w zależności od szerokości ekranu, ale nie jestem w stanie zaimplementować tego i zbyt mylić z ppi, dpi i wszystkich innych formatów przewidzianych dla obrazu . Czy każdy może mi podać kod do konwersji bitmapy, która będzie wyświetlana w odpowiednim formacie na różnych urządzeniach w zależności od rozmiaru ekranu?

Odpowiedz

0

ten sposób można skalować otrzymane bitmapy, gdzie 2 i 3 argumenty są szerokość i wysokość odpowiednio

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

Okrywać chcesz skalować, zachowując proporcje, według swojej szerokości, a następnie zrobić to

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; 
} 

i generować powiadomienia z skalowane bitmapy, użyj tego

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();