我正在尝试使用相对布局调整3位图以填充屏幕高度(和宽度)。
我已经解决了大部分问题,但我仍然无法弄清楚它为什么会起作用!在我做之前我将无法放松......所以请尽量帮助我理解以下内容:
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;
ImageView imgTop= (ImageView) findViewById(R.id.boardTop);
ImageView imgMid= (ImageView) findViewById(R.id.boardMid);
ImageView imgBot= (ImageView) findViewById(R.id.boardBot);
top = BitmapFactory.decodeResource(getResources(), R.drawable.board_top);
mid = BitmapFactory.decodeResource(getResources(), R.drawable.board_mid);
bot = BitmapFactory.decodeResource(getResources(), R.drawable.board_bot);
top = Bitmap.createScaledBitmap(top, top.getWidth(), (int) (screenHeight*0.2), false);
mid = Bitmap.createScaledBitmap(mid, mid.getWidth(), (int) (screenHeight*0.6), false);
bot = Bitmap.createScaledBitmap(bot, screenWidth, (int) (screenHeight*0.2), false);
imgTop.setImageBitmap(top);
imgMid.setImageBitmap(mid);
imgBot.setImageBitmap(bot);
首先我使用了上面的代码并得到了(我隐藏了图片):
然后我将3“createScaledBitmap”行更改为以下内容:
top = Bitmap.createScaledBitmap(top, screenWidth, (int) (screenHeight*0.2), false);
mid = Bitmap.createScaledBitmap(mid, screenWidth, (int) (screenHeight*0.6), false);
bot = Bitmap.createScaledBitmap(bot, screenWidth, (int) (screenHeight*0.2), false);
(我已经更改了它们,以便所有人都收到了screenWidth值。)
在上面的更改后,我收到了这个(我给每个位图一个不同的颜色,所以更容易看到):
所以它以某种方式修复了位图以填满所有屏幕高度,尽管它仍然没有授予底部位图全屏宽度(因为我应该给它与上面其他两个位图相同的值 - 也在XML文件中。)
那怎么会发生这种情况?我相信我不知道这些位图类是如何工作的。请帮助我彻底了解这里发生的事情。
非常感谢!