Интеллектуальные возможности SmartRefreshLayout
Что такое интеллект? В чём его польза?
Интеллект в основном проявляется в умении SmartRefreshLayout автоматически распознавать неизвестный макет. Это позволяет нам более эффективно реализовывать необходимые функции, а также создавать необычные функции.
Давайте рассмотрим интеллектуальные особенности SmartRefreshLayout на примере пользовательского Header и вложенного макета в качестве содержимого.
Пользовательский Header
Рассмотрим пример псевдокода:
<SmartRefreshLayout>
<ClassicsHeader/>
<TextView/>
<ClassicsFooter/>
</SmartRefreshLayout>
В предварительном просмотре Android Studio эффект выглядит следующим образом:
Мы можем изменить код, заменив ClassicsHeader на простой TextView, чтобы увидеть, что произойдёт:
<SmartRefreshLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:background="#444"
android:textColor="#fff"
android:text="Посмотрим, станет ли он Header"/>
<TextView/>
<ClassicsFooter/>
</SmartRefreshLayout>
Предварительный просмотр и эффект выполнения в Android Studio выглядят следующим образом:
Теперь мы заменили TextView на Header, но он ещё не двигается. Как сделать так, чтобы он двигался? Это очень просто. Существует множество GIF-файлов, которые можно найти в интернете. Например, «Тяни-тяни-тяни ~~ C4D» или «Путешествие по Токио за 30 дней: путеводитель в формате GIF».
Выберем один из них:
Далее мы изменим код:
compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.3'//открытый исходный код gif-контрола
<SmartRefreshLayout xmlns:app="http://schemas.android.com/apk/res-auto"
app:srlDragRate="0.7"
app:srlHeaderMaxDragRate="1.3">
<pl.droidsonroids.gif.GifImageView
android:layout_width="match_parent"
android:layout_height="150dp"
android:scaleType="centerCrop"
android:src="@mipmap/gif_header_repast"
app:layout_srlSpinnerStyle="Scale"
app:layout_srlBackgroundColor="@android:color/transparent"/>
<ListView/>
<ClassicsFooter/>
</SmartRefreshLayout>
Эффект предварительного просмотра и выполнения в Android Studio выглядит следующим образом:
Ха-ха! Мы создали собственный Header без написания ни одной строки кода Java.
Вложенный макет как содержимое
Если босс требует добавить фиксированный рекламный блок перед списком, как это сделать? Это легко. Обычно мы пишем такой код:
<LinearLayout
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:text="Я именно тот рекламный блок, который требует босс"/>
<SmartRefreshLayout>
<ListView/>
</SmartRefreshLayout>
</LinearLayout>
Однако при выполнении операции с прокруткой вниз мы обнаруживаем, что Header находится под рекламным блоком, что выглядит неудобно. На самом деле мы можем попробовать другой способ — поместить рекламный блок внутрь RefreshLayout и посмотреть, что получится:
<SmartRefreshLayout>
<LinearLayout
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:text="Я именно тот рекламный блок, который требует босс"/>
<ListView/>
</LinearLayout>
</SmartRefreshLayout>
Поскольку псевдокод слишком прост, а эффект выполнения слишком уродлив, здесь мы представляем реальную ситуацию в реальном проекте:
Обратите внимание на правую картинку. Внимательно посмотрите на положение пальца при касании и эффект прокрутки. Можно заметить, что когда список уже прокручен до середины, лёгкое прокручивание списка не вызовет обновления, но если коснуться фиксированного макета, то оно может вызвать прокручивание. Из этого видно, что определение границ прокрутки SmartRefreshLayout является динамическим и интеллектуальным! Конечно, если интеллекта SmartRefreshLayout всё ещё недостаточно для вас, вы можете реализовать определение границ прокрутки самостоятельно через setListener, что будет более точным!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )