2012-06-09 173 views
0

我有一個功能,我用它來從可繪製文件夾返回位圖。 (我不使用可繪製的DPI文件夾,浪費時間)屏幕尺寸百分比計算器返回錯誤尺寸

無論如何,該函數檢索位圖,位圖以視圖端口大小的指定百分比形式返回。

目前它返回比例如接地元件的指定的百分比少:

百分比應該是480個像素的寬度的100%。顯然這應該是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; 
} 

回答

3
_newWidth = (screen_dimention/100) * percentage; 

做整數除法。

你可能想

_newWidth = (screen_dimention/100.0) * percentage; 

,或者如果_newWidth實際上應該被截斷成整數,你可能想

_newWidth = (screen_dimention * percentage)/100; 

以後有截斷。

+0

感謝這個修復它,我知道這是簡單的東西,只是無法弄清楚。 –