我有同样的问题.这是我如何解决的:
首先,您需要知道通知图标的最大尺寸,具体取决于设备分辨率.搜索,我发现这个:
> ldpi:48×48 px * 0.75
> mdpi:64×64 px * 1.00
> hdpi:96×96 px * 1.50
> xhdpi:128×128 px * 2.00
> xxhdpi:192×192 px * 3.00
有两种方法:
>一个在服务器中具有这些维度的一组图像,并根据您的设备分辨率获得它们.
>另一个在服务器中具有较大的图像,并根据您的设备分辨率在应用程序中调整其大小.
我会向你解释我实施的第二个.
首先从URL获取图像我使用它:
public Bitmap getBitmapFromURL(String strURL) {
try {
URL url = new URL(strURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
然后我需要知道新图像大小的因素.我知道在服务器上我的xxhdpi图像的因子为* 3.00,我用它来获得全局因子:
public static float getImageFactor(Resources r){
DisplayMetrics metrics = r.getDisplayMetrics();
float multiplier=metrics.density/3f;
return multiplier;
}
现在我必须调整图像大小,并在通知图标中设置新的位图:
Bitmap bmURL=getBitmapFromURL(largeIcon);
float multiplier= getImageFactor(getResources());
bmURL=Bitmap.createScaledBitmap(bmURL,(int)(bmURL.getWidth()*multiplier),(int)(bmURL.getHeight()*multiplier),false);
if(bmURL!=null){
mBuilder.setLargeIcon(bmURL);
}
这工作对我来说我希望你能使用它.