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

Пока что из достижений только приведенный вертикальный прогресс бар. Но проблема в том, что он не рисуется, а является композицией картинок, что увеличивает общее количество элементов управления на экране, то бишь не является best practices. Ну и простой уж он очень. Поэтому даже не знаю, писать или нет. Думаю, у сообщества найдутся более хорошие примеры.
Годный preference, я задумывался, как сделать некоторые настройки более дружелюбными и SeekBar удобно ограничивает вводимые значения.
Я пару раз наталкивался на такие приложения в маркете. Думаю, делается все аналогично, на основе базового Preference. Нужно применить свой Layout и привязать обработчик изменений.
Один только недостаток у данного подхода — уж слишком маленький бар. Уже при среднем диапазоне значений (минуты от 1 до 60) будет невозможно выставить нужное значение. Кроме того, бар отъедает место у текста. Недаром скриншот приведен в такой ориентации. И если английский интерфейс кое-как влезет, то русский вариант будет частично перекрыт.
Даже если нет никаких дополнительных контролов в строке, порой очень трудно подобрать заголовки, подходящие по ширине, особенно в многоязычном приложении.
Один только недостаток у данного подхода — уж слишком маленький бар. Уже при среднем диапазоне значений (минуты от 1 до 60) будет невозможно выставить нужное значение. Кроме того, бар отъедает место у текста. Недаром скриншот приведен в такой ориентации. И если английский интерфейс кое-как влезет, то русский вариант будет частично перекрыт.
Даже если нет никаких дополнительных контролов в строке, порой очень трудно подобрать заголовки, подходящие по ширине, особенно в многоязычном приложении.
Что вам мешает сделать вот так:


Вот это уже лучше!
Ну а вообще на вкус и цвет, как говорится… Мое дело — привести пример, а дальше уже каждый сам решит что делать. Думаю, с таким же успехом любые настройки на основе диалога (там, для выбора даты, для ввода значения) могут быть вынесены подобным образом на главный экран. Кто-то сделает так, кто-то нет.
В общем, на вопрос «что мешает» лично мне, могу ответить — манера исполнения виджетов, поставляемых с SDK. Все они поднимают диалоги. Наверное это best practices.
А так мне ваш вариант очень даже нравится.
Ну а вообще на вкус и цвет, как говорится… Мое дело — привести пример, а дальше уже каждый сам решит что делать. Думаю, с таким же успехом любые настройки на основе диалога (там, для выбора даты, для ввода значения) могут быть вынесены подобным образом на главный экран. Кто-то сделает так, кто-то нет.
В общем, на вопрос «что мешает» лично мне, могу ответить — манера исполнения виджетов, поставляемых с SDK. Все они поднимают диалоги. Наверное это best practices.
А так мне ваш вариант очень даже нравится.
Диалог часто удобнее тем, что у него есть либо кнопка «ОК», либо его можно закрыть кнопкой назад. Это важно, например, для регулировки громкости, чтобы прекратить проигрывание, когда диалог закрыт.
Маленькие бары в Replica Island очень неудобные.
За статью и исходники спасибо, как раз пригодилось в проект!
Маленькие бары в Replica Island очень неудобные.
За статью и исходники спасибо, как раз пригодилось в проект!
Приведите пример кода пожалуйста. Мне как новичку например, интересно как это реализовать. Можна в личку, а лучше здесь, чтобы все использовали. Спасибо заранее.
вот сорсы: dl.dropbox.com/u/1134234/zip/Widget.zip
А если в кратце, preference у нас это:
и главный LinearLayout имеет горизинтальную ориентацию.
Все что нам нужно, это поменять ее на вертикальную.
Например, вот как то так:
А если в кратце, 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>
Блин, походу я забыл добавить в топик самые важные слова «код из моего первого приложения под андроид». Видимо, без них не получается нормально обсуждать плюсы и минусы…
</irony>
Интересная статья, однако создание контролов с нуля интереснее :)
Классный пример на эту тему можно найти в книге Professional Android Development.
К Вам одно пожелание — оформляйте javadoc-комментарии, так намного удобнее и приятнее читать код, и что самое главное — всегда можно сгенерировать html версию документации к коду.
Классный пример на эту тему можно найти в книге Professional Android Development.
К Вам одно пожелание — оформляйте javadoc-комментарии, так намного удобнее и приятнее читать код, и что самое главное — всегда можно сгенерировать html версию документации к коду.
Думаю со временем дойду и до контролов. Я вообще пока ни одной книги не прочитал, все документация, форумы, опыт других платформ.
Если честно, то я себя еле заставляю придерживаться Java-конвенции по именам и расположению скобочек, уж очень тяжело после C# (точнее параллельно). В Visual Studio заготовка к комментариям сама генерируется, а в Eclipse нашел (особо не искал) заготовку только к классу.
Если честно, то я себя еле заставляю придерживаться Java-конвенции по именам и расположению скобочек, уж очень тяжело после C# (точнее параллельно). В Visual Studio заготовка к комментариям сама генерируется, а в Eclipse нашел (особо не искал) заготовку только к классу.
Sign up to leave a comment.
SeekBar в настройках приложения