Подтвердить что ты не робот

Может ли Android поддерживать dp менее 1dp?

Я делаю календарь, и мне нужна сетка. Проблема заключается в том, что границы, или, скорее, пространство между каждой сеткой, которое я использую для моделирования симуляции сетки, составляет 1 дп. Но его довольно толстая. Я смотрю другие приложения календаря, у которых есть границы, и они очень тонкие. Даже если бы я использовал форму drawable и сделал ее 1dp, она все еще имеет такую ​​толщину. Я попытался использовать .5, но это, похоже, не сработало. Разве это невозможно?

4b9b3361

Ответ 1

Android позволяет вводить дробные значения для dp в XML, хотя я не уверен, что рекомендую его, потому что результаты становятся менее простыми для прогнозирования/вычисления. Устройства преобразуют значения dp в пиксели, используя (в основном) следующую формулу:

px = (int)(scale * dp + 0.5)

(т.е. масштаб плотности устройства округлен до значения ближайшего целого пикселя)

Значение scale будет основано на плотности экрана устройства:

  • MDPI = 1
  • HDPI = 1.5
  • XHDPI = 2
  • XXHDPI = 3

Итак, 0.5dp приведет к {1px, 1px, 1px, 2px} для вышеуказанных плотностей, тогда как 1dp будет {1px, 2px, 2px, 3px}. Крошечное значение, подобное 0.1dp, разрешило бы {1px, 1px, 1px, 1px}, потому что все, что меньше 1 в приведенной выше формуле, разрешается одному пикселю, если значение не было явно 0dp (невозможно нарисовать что-то более тонкое, чем ширина одного пикселя).

Если вы хотите убедиться, что используется самая тонкая ширина, лучше всего явно определить ширину с помощью px вместо масштабированного устройства, например dp. Установка значения 1px будет рисоваться с одним пикселем на всех устройствах и гораздо читаема, чем надеется 0.5dp или 0.1dp делает то же самое.

Ответ 2

Да.

Я установил 0.1dp и меньше 1dp на моем 4 "ME860 DRIOD.