我在android(纵向模式)中设置了Imageview的背景,其尺寸为400 X 400像素。这张图片在10" WXGA MDPI片剂(尺寸800×1280)。我碰巧使用相同的布局而没有修改7" Nexus 7(TVDPI 800 X 1280)平板电脑。图像看起来很紧张。我可以通过编程方式找出Nexus 7布局中背景的尺寸吗?我想在数学上缩小背景的尺寸,使其看起来像一个正方形。我觉得图像背景的宽度看起来超过400像素(比如X),高度也超过400像素(比如说Y)。还是Y> X使它看起来像一个矩形。如何在Nexus 7上以编程方式在Android中找到X和Y?请帮忙。是否有一套公式可以缩小或放大图像,以便所有Android手机上的外观保持一致。谢谢
答案 0 :(得分:0)
波纹管代码可让您拍摄图像的宽度并相应地缩放图像
try {
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
SCREEN_WIDTH = displaymetrics.widthPixels;
Drawable ob = new BitmapDrawable(getResources(), bm);
float h = ob.getMinimumHeight();
float w = ob.getMinimumWidth();
float Hight = (h / w) *SCREEN_WIDTH;
imageView.setVisibility(View.VISIBLE);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, (int) Hight);
// imageView.setImageBitmap(bitmap);
params.setMargins(5, 5, 5, 5);
imageView.setLayoutParams(params);
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
imageView.setBackgroundDrawable(ob);
} else {
imageView.setBackground(ob);
}
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:0)
您是否尝试在xml中使用android:scaleType="centerInside"
,而不是手动计算图像的大小?您可以以dp为单位设置ImageView
的大小,以便在不同的屏幕上保持一致的大小。 scaleType
将确保在缩放时保持纵横比。如果您想阻止缩放并在drawables-xxx文件夹中放置不同大小的图像,也可以使用android:scaleType="center"
。