屏幕尺寸百分比计算器返回错误的尺

时间:2012-06-09 11:26:26

标签: java math bitmap

我有一个函数,我用它来从drawable文件夹返回位图。 (我不使用可绘制的DPI文件夹,浪费时间)

无论如何,该函数检索位图,位图将以视口大小的指定百分比形式返回。

目前它的返回值低于指定的百分比,例如地面元素:

百分比应为宽度的100%,即480像素。显然这应该是480但它返回400?我必须在这里遗漏一些简单的数学或者无论如何代码如下:(我也应该使用createscaledbitmap吗?)

public Bitmap getBitmapSized(String name, int percentage, int screen_dimention, int frames, int rows)
{
    _tempInt = _context.getResources().getIdentifier(name, "drawable", _context.getPackageName());
    _tempbitmap = (BitmapFactory.decodeResource(_context.getResources(), _tempInt, _BM_options));

    _bmWidth = _tempbitmap.getWidth() / frames;
    _bmHeight = _tempbitmap.getHeight() / rows;

    _newWidth = (screen_dimention / 100) * percentage;
    _newHeight = (_newWidth / _bmWidth) * _bmHeight;

    //Round up to closet factor of total frames (Stops juddering within animation)
    _newWidth = _newWidth * frames;

    //Output the created item
    Log.w("Screen Width: ", Integer.toString(screen_dimention));
    Log.w(name, "Item");
    Log.w(Integer.toString((int)_newWidth), "new width");
    Log.w(Integer.toString((int)_newHeight), "new height");

    //Create new item and recycle bitmap
    Bitmap newBitmap = Bitmap.createScaledBitmap(_tempbitmap, (int)_newWidth, (int)_newHeight, false);
    _tempbitmap.recycle();
    System.gc();

    return newBitmap;
}

1 个答案:

答案 0 :(得分:3)

_newWidth = (screen_dimention / 100) * percentage;

正在进行整数除法。

你可能想要

_newWidth = (screen_dimention / 100.0) * percentage;

或者如果_newWidth实际上应该被截断为整数,那么您可能需要

_newWidth = (screen_dimention * percentage) / 100;

稍后进行截断。