Pull to refresh

Comments 17

Вы загружаете картинки из сети в потоке UI? Не боитесь подвисаний приложения при медленном интернете?
Об этом подумал уже в процессе написания статьи. Хотя картинки фона весят очень и очень мало (в моем случае это картинка размером 1х64 пикселя), перепишу данный участок когда чтоб загрузка происходила в другом потоке. Спасибо за Ваш ответ.

Меня больше смущает количество кода которое у меня получилось. Не могу придумать как его уменьшить.
В 3g сети могут быть очень большие пинги — и 300 и 400 мс. Вес картинки слабо влияет на такую задержку. В таких местах лучше (читай необходимо) использовать AsyncTask.
а вы какие картинки из сети грузили? вроде на скрине ничего такого я не увидел
image
Сейчас прикреплю к статье.
Описывать в коде градиент, состоящий из 3-х компонетов это конечно true. Но я предпочитаю больше работать с 9-patch png-файлами. Особенно это актуально когда UI будет дизайнить профессионал-дизайнер
У нас данные о цвете заливки могут меняться на стороне сервера.
Приходят они в виде:
<bkg_grad_1>#e20000</bkg_grad_1>
<bkg_grad_2>#af0303</bkg_grad_2>



<bkg_grad_1>#e20000</bkg_grad_1>
<bkg_grad_2>#af0303</bkg_grad_2>

Извиняюсь, автоматически отправилось

<category>
<bkg_grad_1>#e20000</bkg_grad_1>
<bkg_grad_2>#af0303</bkg_grad_2>
</category>
<category>
<bkg_grad_1>#95BE16</bkg_grad_1>
<bkg_grad_2>#578202</bkg_grad_2>
</category>
...


В связи с этим есть необходимость постоянно описывать градиент в коде.
Ну первое на что хочется обратить внимание, вы правильно нашли много материала по градиентам в XML и я не вижу причин зачем делать градиент в коде.
Как вы правильно заметили собственный элемент SubcategoryScrollView и правда не нужен. Достаточно класса реализующего логику отображения ImageView, которые можно добавить в ваш RelativeLayout.
Третий момент это разметка Layout в коде, честно — очень ужасно. Вынесите все в xml и используйте LayoutInflater.
Ну и соответственно загрузка картинок в потоке UI, об этом писали выше.
Я бы еще посоветовал прочитать все таки соглашение по оформлению кода Android.
Уверен если вчитаться найдутся и другие замечания.
По поводу андроидовых соглашений по оформлению кода могу сказать, что они выглядят малость шизофренично. Никто меня не заставит в моем проекте использовать k&r стиль кода. А именовать закрытые члены класса с m — это просто клиника. Моя IDE может выделить такие члены класса как угодно, а в блокноте я не работаю.
мне тоже по началу было неудобно дописывать буквы m и s
1. Если добавить ImageView (которые с стрелочками) в RelativeLayout то отображение будет совершенно другим, и стрелочки будут тоже «двигаться» вместе с скролом вправо/влево.

2. Градиент в коде нужен для того, чтоб можно было им управлять. Данные в приложение поступают с стороннего ресурса в виде XML файла (пример привел в предыдущем ответе (выше)).

3. Можно пожалуйста ссылку на нормальное описание как использовать LayoutInflater? Хотел это использовать но ничего толкового не нашел. Пришлось писать так :(

4. По поводу соглашения о оформлении кода. Имеется ввиду вот это?

Спасибо за Ваш отзыв.
1. Смотря как разметить.
2. Теперь понятно.
3. Самый простой способ View v = View.inflate(context, R.layout.main, null); Потом используйте этот View как хотите.
4. Да, на хабре даже где то был перевод.
Вообще в вашем случае я бы просто немного перегрузил Gallery, это сложнее чем то что описано в статье но полученное решение позволяло бы по мимо прочего использовать анимации и стили.
У Вас интересная нотация. И подчеркивание и верблюжья, определитесь:) Или это новая такая?

Уменьшить количество кода существенно врят ли получится, ибо это Java, не Scala, Python, Ruby, а вообще просто придерживайтесь правила: все что можно вынести в разметку — выносите в разметку. Для обработчиков указывайте onClick атрибут.
Ну и конечно, можно поизвращаться со всякими паттернами, хотя не уверен, что поможет в данном случае.

Резюмируя: статья о том, как создать свой View. Полезно, но уже было не раз на Хабре. Интереснее почитать про создание своих атрибутов для вьюхи и использование кастомной схеме(атрибут xmlns). Я как-то такое встречал при беглом просмотре.

Провтыкал, спасибо ))) просто часть кода копипастил и еще не дошли руки привести в божеский вид (в куче есть переменные из двух букв)

Постараюсь учесть ваши пожелания в будущих статьях.

Статью поправлю вечером.
Поправил. Спасибо еще раз.
И уберите пожалуйста this. — мешает восприятию кода :)
Да и по самому коду много замечаний.
Про загрузку в UI потоке уже писали, а про установку visibility в методе onDraw() вроде еще нет — ей там совсем не место.
Sign up to leave a comment.

Articles