Pull to refresh

Comments 15

Замечательная статья!
Почитал бы аналогичное по созданию своих собственных controls.

Пока что из достижений только приведенный вертикальный прогресс бар. Но проблема в том, что он не рисуется, а является композицией картинок, что увеличивает общее количество элементов управления на экране, то бишь не является best practices. Ну и простой уж он очень. Поэтому даже не знаю, писать или нет. Думаю, у сообщества найдутся более хорошие примеры.
Годный preference, я задумывался, как сделать некоторые настройки более дружелюбными и SeekBar удобно ограничивает вводимые значения.
Ваша статья была первой статьей об Андроиде, которую я прочитал на русском языке. С кодом я не игрался, потому как начал с гугловских примеров, но вдохновение получил.
Например, в игре Replica Island сделано даже чуть удобнее:


Исходники открыты.
Я пару раз наталкивался на такие приложения в маркете. Думаю, делается все аналогично, на основе базового Preference. Нужно применить свой Layout и привязать обработчик изменений.

Один только недостаток у данного подхода — уж слишком маленький бар. Уже при среднем диапазоне значений (минуты от 1 до 60) будет невозможно выставить нужное значение. Кроме того, бар отъедает место у текста. Недаром скриншот приведен в такой ориентации. И если английский интерфейс кое-как влезет, то русский вариант будет частично перекрыт.

Даже если нет никаких дополнительных контролов в строке, порой очень трудно подобрать заголовки, подходящие по ширине, особенно в многоязычном приложении.
Что вам мешает сделать вот так:

image
Вот это уже лучше!

Ну а вообще на вкус и цвет, как говорится… Мое дело — привести пример, а дальше уже каждый сам решит что делать. Думаю, с таким же успехом любые настройки на основе диалога (там, для выбора даты, для ввода значения) могут быть вынесены подобным образом на главный экран. Кто-то сделает так, кто-то нет.

В общем, на вопрос «что мешает» лично мне, могу ответить — манера исполнения виджетов, поставляемых с SDK. Все они поднимают диалоги. Наверное это best practices.

А так мне ваш вариант очень даже нравится.
Диалог часто удобнее тем, что у него есть либо кнопка «ОК», либо его можно закрыть кнопкой назад. Это важно, например, для регулировки громкости, чтобы прекратить проигрывание, когда диалог закрыт.

Маленькие бары в Replica Island очень неудобные.

За статью и исходники спасибо, как раз пригодилось в проект!
Приведите пример кода пожалуйста. Мне как новичку например, интересно как это реализовать. Можна в личку, а лучше здесь, чтобы все использовали. Спасибо заранее.
вот сорсы: dl.dropbox.com/u/1134234/zip/Widget.zip

А если в кратце, preference у нас это:
LinearLayout
RelativeLayout
<LinearLayout android:id="@+android:id/widget_frame" />
/LinearLayout


и главный LinearLayout имеет горизинтальную ориентацию.
Все что нам нужно, это поменять ее на вертикальную.

Например, вот как то так:

@Override
protected void onBindView(View view) {
super.onBindView(view);

if (view instanceof LinearLayout) {
LinearLayout ll = (LinearLayout) view;
ll.setOrientation(LinearLayout.VERTICAL);
}
}
<irony>
Блин, походу я забыл добавить в топик самые важные слова «код из моего первого приложения под андроид». Видимо, без них не получается нормально обсуждать плюсы и минусы…
</irony>
Интересная статья, однако создание контролов с нуля интереснее :)
Классный пример на эту тему можно найти в книге Professional Android Development.

К Вам одно пожелание — оформляйте javadoc-комментарии, так намного удобнее и приятнее читать код, и что самое главное — всегда можно сгенерировать html версию документации к коду.
Думаю со временем дойду и до контролов. Я вообще пока ни одной книги не прочитал, все документация, форумы, опыт других платформ.

Если честно, то я себя еле заставляю придерживаться Java-конвенции по именам и расположению скобочек, уж очень тяжело после C# (точнее параллельно). В Visual Studio заготовка к комментариям сама генерируется, а в Eclipse нашел (особо не искал) заготовку только к классу.
Sign up to leave a comment.

Articles