Плотность экрана в Android

Задумался я как-то: разные устройства с разными размерами экрана (физические размеры) при одинаковом количестве пикселей отображают разное количество информации. Почему так происходит? Просто в устройстве указана плотность экрана, которая зависит от отношения физического размера экрана к размеру картинки. Например, у меня в HTC Desire используется значние 240. Мы его можем изменить, получив картинку планшетника с большим экраном (например, при значении 140), или картинку бюджетника с маленьким экраном (при значении 300). Хотя всё это крайности, но в действительности, значение 200 вместо стандартных 240 на экране Desire, на мой взгляд, выглядит более приятно: умещается больше информации, элементы управления (выпадающие списки и пр.) не занимают так много места на экране и т.д. Меняя значение в бóльшую сторону, можно, например, облегчить работу с аппаратом для людей с ослабленным зрением.

Само значение хранится в файле /system/build.prop, в строчке «ro.sf.lcd_density=240», при наличии полного доступа к файловой системе (рута) можно просто изменить значение и перезаписать файл.

С другой стороны, это значение можно записать во временную память, даже без рут-доступа. Изменение будет сохранено до первой перезагрузки. Это и плюс (безопасно), и минус (после перезагрузки надо снова производить действия), но меня устраивает. Для получения и записей подобных значений используется команда getprop и setprop, соответственно, но писать надо не в ro.* (на то он и ro — read only), а в qemu:
setprop qemu.sf.lcd_density 200

После этого надо перезагрузить «графическую оболочку» для получения результата (помним, что при полной перезагрузке теряем изменения?). При наличии рута можно воспользоваться командой killall system_server, без рута можно выполнить остановку с последующим запуском оболочки последовательными командами stop и start (или adb stop и adb start, если аппарат позволит :) ).

Конечно, для подобных действий есть и готовые программы, например, платная и бесплатная, но им тоже нужен рут.

Ниже можно увидеть три окна (экран настроек, главный экран маркета и список приложений) при различных настройках плотности: 140, 160, 180, 200, 220, 240, 300. Напомню, что все резульаты получены на экране моего HTC Desire с диагональю экрана 3,7″ при разрешении 480×800 точек.

Но у всего есть пределы. Например, при density=100 можно представить, что держишь в руках огромный планшет, но работать в таком режиме некоторые программы уже отказываются :(

Андроид ,

24 comments


Добавить комментарий для Red Planet Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *