Category Archives: Android

Выложил datepicker для Android

Written by elwood

Ссылка на проект в Bitbucket: https://bitbucket.org/igor_kostromin/android-wheel-datepicker
Контрол был написан для того, чтобы можно было удобно выбирать дату рождения. Выглядит он вот так:

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) Проверить поведение контрола в более сложных сценариях размещения – когда от него ожидают заполнения всей доступной области по горизонтали / вертикали, или доступный размер меньше необходимого.

Установка midnight commander на Android

Written by elwood

Предварительно необходимо

Рутованный телефон с установленным 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 с работающим вьювером (редактор глючит, видимо надо что-то пофиксить в конфигах или добавить). Остальные плагины пока не смотрел.