2012-06-09 2 views
0

У меня есть функция, которую я использую, чтобы возвращать растровые изображения из выпадающей папки. (Я не использую доступные папки 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; 
} 

ответ

3
_newWidth = (screen_dimention/100) * percentage; 

делает целочисленное деление.

Вы можете

_newWidth = (screen_dimention/100.0) * percentage; 

или если _newWidth на самом деле должен быть усечен до целого, вы можете

_newWidth = (screen_dimention * percentage)/100; 

иметь усечение позже.

+0

Спасибо, что это исправлено, я знал, что это просто так, просто невозможно понять. –

Смежные вопросы