Category Archives: Android
Ссылка на проект в Bitbucket: https://bitbucket.org/igor_kostromin/android-wheel-datepicker
Контрол был написан для того, чтобы можно было удобно выбирать дату рождения. Выглядит он вот так:
Поддерживаются 2 локали: английская (дефолтная, “en-US”) и русская (“ru-RU”). По сути, это был эксперимент на тему того, можно ли по-простому выделять куски xml-layout в отдельные user control’ы по аналогии с тем, как это принято в WPF. Оказалось, что это довольно просто, но к сожалению, нужно вручную создавать классы и разметку, причем эта разметка ничем не отличается от разметки обычных view, и перемешивается в папке layouts. То же самое и с идентификаторами элементов управления, хотя, тут наверное есть способ выносить их в отдельные ids.xml файлы, но опять же – придется всё это делать ручками, и потом при необходимости использовать такой контрол в другом проекте нужно будет копировать файлы из разных директорий и следить за тем, чтобы ничего не потерялось. В общем, можно, но неудобно. Хотелось бы нативной поддержки этого механизма аналогично тому, как это сделано в Windows Presentation Foundation. Напомню, там есть класс UserControl – базовый для всех таких compound control’ов (то есть состоящих из других контролов – в терминологии android-разработки) и его можно описывать в XAML, а потом включать его в другие XAML-файлы, причем идентификаторы дочерних элементов хранятся там же. Как правило, такие контролы помещаются целиком каждый в свою папку, и скопировать их для реюза очень просто.
Из технического – что можно было бы улучшить конкретно в этом элементе управления.
1) Добавить возможность задавать специфические свойства этого контрола в XML (Day, Month, Year, VisibleItems)
2) Убрать некоторые свойства, доставшиеся от базового LinearLayout (например, Orientation, которую мы всегда устанавливаем в Horizontal), чтобы их нельзя было задать как в XML, так и в коде
3) Проверить поведение контрола в более сложных сценариях размещения – когда от него ожидают заполнения всей доступной области по горизонтали / вертикали, или доступный размер меньше необходимого.
Предварительно необходимо
Рутованный телефон с установленным BusyBox и один из SSH серверов (я использую SSH/SFTP Daemon).
Алгоритм
Скачиваем архив с собранным под ARM бинарником, запускаем SSH сервер на телефоне, подключаемся к нему через Putty, разблокируем файловую систему /system для записи:
su -
busybox mount -o remount,rw /system
Подключаемся через WinSCP, раскидываем файлы так, как они размещены в архиве.
Добавляем +x на файлы /data/xbin/* :
chmod +x /data/xbin/*
Также устанавливаем права тут (хотя вроде и без этого работает):
busybox chmod -R 0755 /system/etc/terminfo
busybox chmod -R 0644 /system/etc/terminfo/?/*
После этого проверяем, что /data/xbin/mc стартует в сеансе Putty, и возвращаем read-only на /system:
busybox mount -o remount,ro /system
Результат
Вполне рабочий mc с работающим вьювером (редактор глючит, видимо надо что-то пофиксить в конфигах или добавить). Остальные плагины пока не смотрел.
0