毕加索在不同屏幕上调整大小

Picasso resize on different screens

我正在从服务器下载图片,但图片不一样(它们的分辨率),所以我想通过 error() 方法将它们硬化为图片(它是 50x50 像素)。但是当我测试这段代码时

Picasso.with(context)
            .load(url)
            .error(R.drawable.non_pic)
            .resize(100, 100)
            .into(holder.user_icon);

我注意到,在我的魅族 Pro 6 (diag = 5.2, PPI = 424, 1920x1080) 和模拟器上,基于 Nexus 4 (diag = 4.7, 1280×768) 调整大小后图像大小不同().在魅族上图片非常小,但在模拟器上它与来自 error() 的图片大小相同(这对我来说很奇怪,因为 non_pic 是 50x50 像素分辨率的 png 文件)。 那么,如何获得具有相同 non_pic 参数的硬集图像大小?

这是因为您使用像素作为度量单位。 尝试使用 Dp/Dpi 代替。这是一种将 px 转换为 DP

的方法
public static float convertPixelsToDp(float px, Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
return dp;
}

有关 px 和 dp 的更多信息,请参阅 here