Android布局 - 调整位图以填充屏幕尺寸 - 奇怪的现象

时间:2014-08-30 21:42:01

标签: android layout bitmap screen

我正在尝试使用相对布局调整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);

首先我使用了上面的代码并得到了(我隐藏了图片):

enter image description here

然后我将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值。)

在上面的更改后,我收到了这个(我给每个位图一个不同的颜色,所以更容易看到):

enter image description here

所以它以某种方式修复了位图以填满所有屏幕高度,尽管它仍然没有授予底部位图全屏宽度(因为我应该给它与上面其他两个位图相同的值 - 也在XML文件中。)

那怎么会发生这种情况?我相信我不知道这些位图类是如何工作的。请帮助我彻底了解这里发生的事情。

非常感谢!

0 个答案:

没有答案