Я прочитал здесь о преобразовании единиц dp в единицы пикселей. Но я не могу понять 0.5f. Откуда взялось это число и какой от него смысл?

// The gesture threshold expressed in dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;

// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale

mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);

// Use mGestureThreshold as a distance in pixels...
2
Nick 24 Сен 2018 в 15:36

2 ответа

Лучший ответ

Его округлять вещи. Масштаб может быть десятичным (например, 1,5). Это означает, что продукт не может быть целым числом. Добавление .5 с последующим преобразованием в int гарантирует, что число округляется в большую сторону, если число больше чем на полпути между двумя целыми числами, и вниз, если оно меньше половины.

1
Gabe Sechan 24 Сен 2018 в 12:39

Преобразование чисел с плавающей запятой в целые приведет к их упаданию. Это 0.5f округляет число:

x = (int) 3.9
print x // 3



x = (int) 3.9 + 0.5f
print x // 4
3
Azad 24 Сен 2018 в 12:42