我已阅读有关支持多个屏幕的this文章。
因此,为了支持不同的密度,您应该将不同的可绘制位图放入正确的可绘制文件夹中。然后android应该根据当前的屏幕密度加载正确的图像。
但是,如果我理解正确,可以说你有一些低dpi(75x75px)和中等dpi(100x100px)的位图。因此,在较大的密度上,它将填充比较小的像素更多的像素。但是结果物理尺寸将是相同的,但是在更大的密度上,它比像更小的像素更多。将使用正确的图像,因此不同的dpis将具有良好的质量。
如果我想在更大的屏幕上放大图像怎么办?
让我们说我想填写屏幕的特定部分。例如,我希望ImageView
的大小为屏幕宽度的20%。我现在使用这个代码:
BitmapDrawable drawable = (BitmapDrawable) ResourcesCompat.getDrawable(getResources(), R.drawable.some_bitmap, null);
float ratio = (float)drawable.getIntrinsicHeight()/drawable.getIntrinsicWidth();
ImageView img = (ImageView) findViewById(R.id.imageview);
img.getLayoutParams().width = (int)(DISPLAY.widthPixels*0.2f);
img.getLayoutParams().height = (int)(ratio*DISPLAY.widthPixels*0.2f);
所以我得到比率因为不想“拉伸”位图。然后我使用DisplayMetrics
获取屏幕宽度,我设置了一些ImageView
的尺寸。
我已经读过我不应该使用“硬编码像素”,但这是所有dpis和所有物理尺寸的通用。我现在应该为不同的密度放置不同的抽屉吗?因为我现在不关心密度。我只是填充屏幕的某些空间。我不想使用dpi
,因为它是相同的aross屏幕尺寸,但我想让更大的屏幕更大的位图,所以我不希望在更大的屏幕上有“空”空格。谢谢你的任何建议。