<commit_before># Android Smart Refresh Layout Framework

[![License](https://img.shields.io/badge/License%20-Apache%202-337ab7.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Arsenal](https://img.shields.io/badge/%20Arsenal%20-%20SmartRefresh%20-4cae4c.svg?style=flat)](https://android-arsenal.com/details/1/6001)
[![Jcenter](https://img.shields.io/badge/%20Jcenter%20-1.0.3-5bc0de.svg) ](https://bintray.com/scwang90/maven/SmartRefreshLayout/_latestVersion) 
[![MinSdk](https://img.shields.io/badge/%20MinSdk%20-%2012%2B%20-f0ad4e.svg?style=flat)](https://android-arsenal.com/api?level=12)
[![Methods](https://img.shields.io/badge/%20Methods%20%7C%20Size%20-%201251%20%7C%20129%20KB-d9534f.svg)](http://www.methodscount.com/?lib=com.scwang.smartrefresh%3ASmartRefreshLayout%3A1.0.2)

<!-- [![Platform](https://img.shields.io/badge/Platform-Android-f0ad4e.svg)](https://www.android.com) -->
<!-- [![Author](https://img.shields.io/badge/Author-scwang90-11bbff.svg)](https://github.com/scwang90) -->


## English | [中文](README.md)

As the name says, SmartRefreshLayout is a "smart" refresh layout，Because of its "smart", it does not just support all the View , but also support multi-layered nested view structures.  
It extends from ViewGroup rather than the other FrameLayout or LinearLayout, improving performance.  
It absorbs the advantages of various refresh layout in fashion now，Including Google official [SwipeRefreshLayout](https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html)、[TwinklingRefreshLayout](https://github.com/lcodecorex/TwinklingRefreshLayout) 、[Ultra-Pull-To-Refresh](https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh)。Also integrates various cool Header and Footer.  
SmartRefreshLayout's goal is to build a strong, stable and mature refresh layout framework, and integrate all kinds of cool and diverse, practical, beautiful Header and Footer.

## Features

 - Support all of the View 
 - Support multi-layered nested view structures.
 - Support custom Header and Footer, and has integrated a lot of cool Header and Footer.
 - Support synchronous scrolling with ListView and NestedScrolling width CoordinatorLayout.
 - Support automatic refresh, automatic loading (automatic detection list, scroll to the bottom without having to manually pull).
 - Support custom rebound animation interpolator, to achieve a variety of cool animation effects.
 - Support set the theme to fit any scene of App, won't appear cool but very awkward situation.
 - Support for setting a variety of transformations (Translation, stretching, behind the fixed, top fixed, full screen) for Header and Footer.
 - Support rewrite and extension, internal implementation without private methods and fields.
 - Support cross-border rebound (Listview、RecyclerView、ScrollView、WebView...View).
 
## Gateway

 - [Smart place](art/md_smart.md)
 - [Update log](art/md_update.md)
 - [Attribute method](art/md_property.md)
 - [Blog posts](https://segmentfault.com/a/1190000010066071) 
 - [Download the source code](https://github.com/scwang90/SmartRefreshLayout/releases) 
 - [Multi-touch](art/md_multitouch.md) 
## Demo
[Download APK-Demo](art/app-debug.apk)

![](art/png_apk_rqcode.png)

#### Practical
|Weibo|Feedlist|
|:---:|:---:|
|![](art/gif_practive_weibo.gif)|![](art/gif_practive_feedlist.gif)|

|Repast|Profile|
|:---:|:---:|
|![](art/gif_practive_repast.gif)|![](art/gif_practive_profile.gif)|

#### Style

|Style|Delivery|Dropbox|
|:---:|:---:|:---:|
|Demo|![](art/gif_Delivery.gif)|![](art/gif_Dropbox.gif)|
|Design|[Refresh-your-delivery](https://dribbble.com/shots/2753803-Refresh-your-delivery)|[Dropbox-Refresh](https://dribbble.com/shots/3470499-Dropbox-Refresh)|

The two above headers are implemented by my self, The following headers are collect and optimization from excellent Headers on github  

|Style|BezierRadar|BezierCircle|
|:---:|:---:|:---:|
|Demo|![](art/gif_BezierRadar.gif)|![](art/gif_BezierCircle.gif)|
|From|[TwinklingRefreshLayout](https://github.com/lcodecorex/TwinklingRefreshLayout/blob/master/art/gif_recyclerview2.gif)|[Pull Down To Refresh](https://dribbble.com/shots/1797373-Pull-Down-To-Refresh)|

|Style|FlyRefresh|Classics|
|:---:|:---:|:---:|
|Demo|![](art/gif_FlyRefresh.gif)|![](art/gif_Classics.gif)|
|From|[FlyRefresh](https://github.com/race604/FlyRefresh)|[ClassicsHeader](#1)|

|Style|Phoenix|Taurus|
|:---:|:---:|:---:|
|Demo|![](art/gif_Phoenix.gif)|![](art/gif_Taurus.gif)|
|From|[Yalantis/Phoenix](https://github.com/Yalantis/Phoenix)|[Yalantis/Taurus](https://github.com/Yalantis/Taurus)<commit_msg>Update README_EN.md<commit_after># Android Smart Refresh Layout Framework

[![License](https://img.shields.io/badge/License%20-Apache%202-337ab7.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Arsenal](https://img.shields.io/badge/%20Arsenal%20-%20SmartRefresh%20-4cae4c.svg?style=flat)](https://android-arsenal.com/details/1/6001)
[![Jcenter](https://img.shields.io/badge/%20Jcenter%20-1.0.3-5bc0de.svg) ](https://bintray.com/scwang90/maven/SmartRefreshLayout/_latestVersion) 
[![MinSdk](https://img.shields.io/badge/%20MinSdk%20-%2012%2B%20-f0ad4e.svg?style=flat)](https://android-arsenal.com/api?level=12)
[![Methods](https://img.shields.io/badge/%20Methods%20%7C%20Size%20-%201251%20%7C%20129%20KB-d9534f.svg)](http://www.methodscount.com/?lib=com.scwang.smartrefresh%3ASmartRefreshLayout%3A1.0.2)

<!-- [![Platform](https://img.shields.io/badge/Platform-Android-f0ad4e.svg)](https://www.android.com) -->
<!-- [![Author](https://img.shields.io/badge/Author-scwang90-11bbff.svg)](https://github.com/scwang90) -->


## English | [中文](README.md)

As the name says, SmartRefreshLayout is a "smart" refresh layout，Because of its "smart", it does not just support all the View , but also support multi-layered nested view structures.  
It extends from ViewGroup rather than the other FrameLayout or LinearLayout, improving performance.  
It absorbs the advantages of various refresh layout in fashion now，Including Google official [SwipeRefreshLayout](https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html)、[TwinklingRefreshLayout](https://github.com/lcodecorex/TwinklingRefreshLayout) 、[Ultra-Pull-To-Refresh](https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh)。Also integrates various cool Header and Footer.  
SmartRefreshLayout's goal is to build a strong, stable and mature refresh layout framework, and integrate all kinds of cool and diverse, practical, beautiful Header and Footer.

## Features

 - Support all of the View 
 - Support multi-layered nested view structures.
 - Support custom Header and Footer, and has integrated a lot of cool Header and Footer.
 - Support synchronous scrolling with ListView and NestedScrolling width CoordinatorLayout.
 - Support automatic refresh, automatic loading (automatic detection list, scroll to the bottom without having to manually pull).
 - Support custom rebound animation interpolator, to achieve a variety of cool animation effects.
 - Support set the theme to fit any scene of App, won't appear cool but very awkward situation.
 - Support for setting a variety of transformations (Translation, stretching, behind the fixed, top fixed, full screen) for Header and Footer.
 - Support rewrite and extension, internal implementation without private methods and fields.
 - Support cross-border rebound (Listview、RecyclerView、ScrollView、WebView...View).
 
## Gateway

 - [Smart place](art/md_smart.md)
 - [Update log](art/md_update.md)
 - [Attribute method](art/md_property.md)
 - [Blog posts](https://segmentfault.com/a/1190000010066071) 
 - [Download the source code](https://github.com/scwang90/SmartRefreshLayout/releases) 
 - [Multi-touch](art/md_multitouch.md) 
## Demo
[Download APK-Demo](art/app-debug.apk)

![](art/png_apk_rqcode.png)

#### Practical
|Weibo|Feedlist|
|:---:|:---:|
|![](art/gif_practive_weibo.gif)|![](art/gif_practive_feedlist.gif)|

|Repast|Profile|
|:---:|:---:|
|![](art/gif_practive_repast.gif)|![](art/gif_practive_profile.gif)|

#### Style

|Style|Delivery|Dropbox|
|:---:|:---:|:---:|
|Demo|![](art/gif_Delivery.gif)|![](art/gif_Dropbox.gif)|
|Design|[Refresh-your-delivery](https://dribbble.com/shots/2753803-Refresh-your-delivery)|[Dropbox-Refresh](https://dribbble.com/shots/3470499-Dropbox-Refresh)|

The two above headers are implemented by myself, The following headers are collected and optimized from excellent Headers on github

|Style|BezierRadar|BezierCircle|
|:---:|:---:|:---:|
|Demo|![](art/gif_BezierRadar.gif)|![](art/gif_BezierCircle.gif)|
|From|[TwinklingRefreshLayout](https://github.com/lcodecorex/TwinklingRefreshLayout/blob/master/art/gif_recyclerview2.gif)|[Pull Down To Refresh](https://dribbble.com/shots/1797373-Pull-Down-To-Refresh)|

|Style|FlyRefresh|Classics|
|:---:|:---:|:---:|
|Demo|![](art/gif_FlyRefresh.gif)|![](art/gif_Classics.gif)|
|From|[FlyRefresh](https://github.com/race604/FlyRefresh)|[ClassicsHeader](#1)|

|Style|Phoenix|Taurus|
|:---:|:---:|:---:|
|Demo|![](art/gif_Phoenix.gif)|![](art/gif_Taurus.gif)|
|From|[Yalantis/Phoenix](https://github.com/Yalantis/Phoenix)|[Yalantis/Taurus](https://github.com/Yalantis/Taurus)
{'fraction_non_alphanumeric': 0.16884105240269623, 'fraction_numerical': 0.030223961730811044, 'mean_word_length': 5.617985611510791, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 50, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1717096', 'n_tokens_mistral': 3422, 'n_tokens_neox': 3039, 'n_words': 561}