Xamarin.android 是图像长度和宽度的两倍,为什么?

Xamarin.android 是图像长度和宽度的两倍,为什么?,xamarin.android,android-bitmap,Xamarin.android,Android Bitmap,我有以下代码: BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.add1); int height = bd.Bitmap.Height; int width = bd.Bitmap.Width; Toast.MakeText(this, width.ToString() + " " + height.ToString(), ToastLength.Long).Show(); a

我有以下代码:

BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.add1);
int height = bd.Bitmap.Height;
int width = bd.Bitmap.Width;
Toast.MakeText(this, width.ToString() + "  " + height.ToString(), ToastLength.Long).Show();

add1.png的宽度和高度是55*55像素,但Toast显示的是110*110像素,为什么?

这个问题是由设备的分辨率引起的。位图返回的值。宽度将根据不同的dpi进行调整,不同型号的dpi可能不同。如果设备具有更高的分辨率,此处可能会打印更高的数字

要获得图像文件的原始大小,需要将大小除以dpi值

var density = Resources.DisplayMetrics.Density;

BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.test);
var the_original_height = bd.Bitmap.Height / density;
var the_orignial_width = bd.Bitmap.Width / density;

Toast.MakeText(this, the_original_height.ToString() + "*" + the_original_height.ToString(), ToastLength.Long).Show();

嗨,我创建了一个基本的演示来测试代码,宽度和高度的值都是正确的。你用其他图像文件测试代码了吗?例如,我使用您的配置文件的文件测试functino,结果是32*32。请在你这边测试一下,确认一下。你好,谢谢。我的个人资料图像是64*64像素,Toast显示128*128像素。它使每个图像的长度和宽度加倍。