diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..1f8ff36e
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,3 @@
+# These are supported funding model platforms
+
+custom: ['https://www.paypal.me/scwang90']
diff --git a/.github/ISSUE_TEMPLATE/------.md b/.github/ISSUE_TEMPLATE/------.md
new file mode 100644
index 00000000..c7ec1ee5
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/------.md
@@ -0,0 +1,94 @@
+---
+name: 提交错误报告
+about: 提交一份详细错误报告,方便我们更好到改进
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**详细描述**
+对问题进行清晰而简明的描述,把握问题的关键点。
+
+**使用版本**
+```gradle
+implementation 'com.scwang.smartrefresh:SmartRefreshLayout:x.x.x'
+implementation 'com.scwang.smartrefresh:SmartRefreshHeader:x.x.x'
+```
+**使用代码**
+```java
+SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
+ @Override
+ public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
+ return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.Translate);
+ }
+ });
+ SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
+ @Override
+ public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
+ return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.Translate);
+ }
+ });
+RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+ @Override
+ public void onRefresh(RefreshLayout refreshlayout) {
+ refreshlayout.finishRefresh(2000);
+ }
+});
+refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+ @Override
+ public void onLoadMore(RefreshLayout refreshlayout) {
+ refreshlayout.finishLoadMore(2000);
+ }
+});
+```
+
+**布局代码**
+```xml
+
+
+
+
+
+```
+
+**问题重现**
+问题重现操作不走:
+1. 进入主页 '...'
+2.点击按钮 '....'
+3.滚动列表 '....'
+4.发现问题
+
+**预期行为**
+对你期望发生的事情的清晰而简明的描述。
+
+**屏幕截图**
+如果适用,添加屏幕截图以帮助解释您的问题。
+
+**设备信息**
+请填写一下你运行设备的信息,信息越全越有助于我理解问题
+ - 设备名: [e.g. 华为P20]
+ - Android版本: [e.g. Android 7.0]
+ - 设备型号 [e.g. ]
+ - 系统版本(手机厂商定制rom)
+
+**附加信息**
+在此处添加任何有关该问题的任何其他说明。
diff --git a/.github/ISSUE_TEMPLATE/-----.md b/.github/ISSUE_TEMPLATE/-----.md
new file mode 100644
index 00000000..e7889b77
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/-----.md
@@ -0,0 +1,14 @@
+---
+name: 自定义提交
+about: 自定义没有固定的格式,不过希望提供足够多的信息
+title: "[提问不要在这里请加群,有疑问请先查看常见问题、提问历史、阅读源码。]"
+labels: invalid
+assignees: ''
+
+---
+
+**具体说下**
+...
+
+**为什么**
+...
diff --git a/.github/ISSUE_TEMPLATE/--bug--.md b/.github/ISSUE_TEMPLATE/--bug--.md
new file mode 100644
index 00000000..b65fbf2c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/--bug--.md
@@ -0,0 +1,94 @@
+---
+name: 提交BUG报告
+about: 创建一个bug详情报告,以方便我们更好地改进
+title: "[不是bug或者不确定是bug,请使用错误报告模板]"
+labels: bug
+assignees: ''
+
+---
+
+**详细描述**
+对问题进行清晰而简明的描述,把握问题的关键点。
+
+**使用版本**
+```gradle
+implementation 'com.scwang.smartrefresh:SmartRefreshLayout:x.x.x'
+implementation 'com.scwang.smartrefresh:SmartRefreshHeader:x.x.x'
+```
+**使用代码**
+```java
+SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
+ @Override
+ public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
+ return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.Translate);
+ }
+ });
+ SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
+ @Override
+ public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
+ return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.Translate);
+ }
+ });
+RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+ @Override
+ public void onRefresh(RefreshLayout refreshlayout) {
+ refreshlayout.finishRefresh(2000);
+ }
+});
+refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+ @Override
+ public void onLoadMore(RefreshLayout refreshlayout) {
+ refreshlayout.finishLoadMore(2000);
+ }
+});
+```
+
+**布局代码**
+```xml
+
+
+
+
+
+```
+
+**问题重现**
+问题重现操作不走:
+1. 进入主页 '...'
+2.点击按钮 '....'
+3.滚动列表 '....'
+4.发现问题
+
+**预期行为**
+对你期望发生的事情的清晰而简明的描述。
+
+**屏幕截图**
+如果适用,添加屏幕截图以帮助解释您的问题。
+
+**设备信息**
+请填写一下你运行设备的信息,信息越全越有助于我理解问题
+ - 设备名: [e.g. 华为P20]
+ - Android版本: [e.g. Android 7.0]
+ - 设备型号 [e.g. ]
+ - 系统版本(手机厂商定制rom)
+
+**附加信息**
+在此处添加任何有关该问题的任何其他说明。
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..c8afd174
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,89 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: help wanted
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**Version**
+```gradle
+implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
+implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0' //If you use the special Header
+```
+
+**Layout**
+```xml
+
+
+
+
+```
+
+**Config**
+```java
+SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
+ @Override
+ public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
+ return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.Translate);
+ }
+ });
+ SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
+ @Override
+ public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
+ return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.Translate);
+ }
+ });
+RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+ @Override
+ public void onRefresh(RefreshLayout refreshlayout) {
+ refreshlayout.finishRefresh(2000);
+ }
+});
+refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+ @Override
+ public void onLoadMore(RefreshLayout refreshlayout) {
+ refreshlayout.finishLoadMore(2000);
+ }
+});
+```
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
new file mode 100644
index 00000000..3071e5de
--- /dev/null
+++ b/.github/workflows/android.yml
@@ -0,0 +1,17 @@
+name: Android CI
+
+on: [push]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v1
+ - name: set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build with Gradle
+ run: ./gradlew build
diff --git a/.gitignore b/.gitignore
index 4909f7d0..4cd31e44 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,10 @@
*.iml
-.gradle
-gradle
+*.txt
+.*
+build
+release
+/art
+/repo
/local.properties
-/.idea
-/build
-/gradlew
-/gradlew.bat
-/gradle.properties
/bintrayUpload-key.bat
+
diff --git a/.idea/dictionaries/Administrator.xml b/.idea/dictionaries/Administrator.xml
new file mode 100644
index 00000000..a6d1a3bc
--- /dev/null
+++ b/.idea/dictionaries/Administrator.xml
@@ -0,0 +1,7 @@
+
+
+
+ footerke
+
+
+
\ No newline at end of file
diff --git a/.idea/dictionaries/SCWANG.xml b/.idea/dictionaries/SCWANG.xml
new file mode 100644
index 00000000..0e048c25
--- /dev/null
+++ b/.idea/dictionaries/SCWANG.xml
@@ -0,0 +1,7 @@
+
+
+
+ scwang
+
+
+
\ No newline at end of file
diff --git a/.idea/dictionaries/mi.xml b/.idea/dictionaries/mi.xml
new file mode 100644
index 00000000..0e51291e
--- /dev/null
+++ b/.idea/dictionaries/mi.xml
@@ -0,0 +1,9 @@
+
+
+
+ clinit
+ refreshlayout
+ smartrefresh
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 00000000..92f6ef2d
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..8e44652c
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 6f898f5f..7542ad29 100644
--- a/README.md
+++ b/README.md
@@ -2,32 +2,48 @@
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://android-arsenal.com/details/1/6001)
-[](https://bintray.com/scwang90/maven/SmartRefreshLayout/_latestVersion)
+[](https://bintray.com/scwang90/maven/SmartRefreshLayout/_latestVersion)
[](https://android-arsenal.com/api?level=12)
-[](http://www.methodscount.com/?lib=com.scwang.smartrefresh%3ASmartRefreshLayout%3A1.0.4)
+[](http://www.methodscount.com/?lib=com.scwang.smartrefresh%3ASmartRefreshLayout%3A1.0.4)
## [English](https://github.com/scwang90/SmartRefreshLayout/blob/master/README_EN.md) | 中文
-正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。
-也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 [SwipeRefreshLayout](https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html),其他第三方的 [Ultra-Pull-To-Refresh](https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh)、[TwinklingRefreshLayout](https://github.com/lcodecorex/TwinklingRefreshLayout) 。还集成了各种炫酷的 Header 和 Footer。
-SmartRefreshLayout的目标是打造一个强大,稳定,成熟的下拉刷新框架,并集成各种的炫酷、多样、实用、美观的Header和Footer。
+SmartRefreshLayout以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的Header和Footer。
+正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。
+它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。
+也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 [SwipeRefreshLayout](https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html),
+其他第三方的 [Ultra-Pull-To-Refresh](https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh)、[TwinklingRefreshLayout](https://github.com/lcodecorex/TwinklingRefreshLayout) 。
+还集成了各种炫酷的 Header 和 Footer。
+
+注:本库也在开源中国上开源,如果有时候github出现下载缓慢问题可以转到[开源中国](https://gitee.com/scwang90/SmartRefreshLayout)下载或clone,记得star哦.
## 特点功能:
+ - 支持[横向刷新](https://github.com/scwang90/SmartRefreshHorizontal)
- 支持多点触摸
- 支持淘宝二楼和二级刷新
- 支持嵌套多层的视图结构 Layout (LinearLayout,FrameLayout...)
- 支持所有的 View(AbsListView、RecyclerView、WebView....View)
- 支持自定义并且已经集成了很多炫酷的 Header 和 Footer.
- - 支持和ListView的无缝同步滚动 和 CoordinatorLayout 的嵌套滚动 .
+ - 支持和 ListView 的无缝同步滚动 和 CoordinatorLayout 的嵌套滚动 .
- 支持自动刷新、自动上拉加载(自动检测列表惯性滚动到底部,而不用手动上拉).
- 支持自定义回弹动画的插值器,实现各种炫酷的动画效果.
- - 支持设置主题来适配任何场景的App,不会出现炫酷但很尴尬的情况.
+ - 支持设置主题来适配任何场景的 App,不会出现炫酷但很尴尬的情况.
- 支持设多种滑动方式:平移、拉伸、背后固定、顶层固定、全屏
- 支持所有可滚动视图的越界回弹
+ - 支持 Header 和 Footer 交换混用
+ - 支持AndroidX
+
+## 每天领红包
+
+最近开通了支付宝商家,生成了个红包二维码,经常用支付宝的童鞋可有扫码领优惠红包,扫码只会拿红包,不会有任何损失,每天都可以扫码哦!
+
+
+
+> 你也可以在支付宝中直接搜索 **553866294** 来获取红包。如果得到的是花呗红包,也不用失望。如果你经常使用信用卡的话那么使用花呗红包非常适合你,它也和信用卡一样先消费后还款,关键是每天都能扫红包省钱!
## 传送门
@@ -102,17 +118,20 @@ SmartRefreshLayout的目标是打造一个强大,稳定,成熟的下拉刷
## 简单用例
#### 1.在 build.gradle 中添加依赖
+
+[【V2.0.0】](https://github.com/scwang90/SmartRefreshLayout/tree/master#%E7%AE%80%E5%8D%95%E7%94%A8%E4%BE%8B) 版本已经在开发,主要是对各个功能类进行分包,比如不用二级刷新就不依赖,避免代码冗余,欢迎大家来体验
+
+```
+implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.3' //1.0.5及以前版本的老用户升级需谨慎,API改动过大
+implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.3' //没有使用特殊Header,可以不加这行
+
```
-//1.1.0 API改动过大,老用户升级需谨慎
-compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
-compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//没有使用特殊Header,可以不加这行
-compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)
-
-//1.0.5 当1.1.0出现问题可以回退到1.0.5.1
-compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
-compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行
-compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)
-compile 'com.android.support:design:25.3.1'//版本随意(非必须,引用可以解决无法预览问题)
+如果使用 AndroidX 在 gradle.properties 中添加
+
+```
+android.useAndroidX=true
+android.enableJetifier=true
+
```
#### 2.在XML布局文件中添加 SmartRefreshLayout
@@ -197,7 +216,7 @@ public class App extends Application {
如果希望捐赠之后能获得相关的帮助,可以选择加入下面的付费群来取代普通捐赠,付费群可以直接获得作者的直接帮助,与问题反馈。
如果在捐赠留言中备注名称,将会被记录到列表中~ 如果你也是github开源作者,捐赠时可以留下github项目地址或者个人主页地址,链接将会被添加到列表中起到互相推广的作用
[捐赠列表](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_donationlist.md)
#### 友情链接
+[github/Loror](https://github.com/Loror)
+[github/faith-hb/WidgetCase](https://github.com/faith-hb/WidgetCase)
+[github/Bamboy120315/Freedom](https://github.com/Bamboy120315/Freedom)
+[github/TommyLemon/APIJSON](https://github.com/TommyLemon/APIJSON)
+[github/dengyuhan](https://github.com/dengyuhan)
[github/zrp2017](https://github.com/zrp2017)
[github/fly803/BaseProject](https://github.com/fly803/BaseProject)
[github/razerdp](https://github.com/razerdp)
@@ -246,11 +278,11 @@ SmartRefreshLayout 没有使用到:序列化、反序列化、JNI、反射,
[github/addappcn](https://github.com/addappcn)
[github/RainliFu](https://github.com/RainliFu)
[github/sugarya](https://github.com/sugarya)
-[github/stormzhang](https://github.com/stormzhang)
+[github/stormzhang](https://github.com/stormzhang)
## 讨论
-### QQ解决群 - 602537182 (付费)
+### QQ解决群 - 602537182 (付费)
#### 进群须知
自开群以来,还是有很多的朋友提出了很多问题,我也解决了很多问题,其中有大半问题是本库的Bug导致,也有些是使用者项目本
身的环境问题,这花费了我大量的时间,经过我的观察和测试,到目前为止,本库的bug已经越来越少,当然不能说完全没有,但是
@@ -259,7 +291,7 @@ SmartRefreshLayout 没有使用到:序列化、反序列化、JNI、反射,
我也有自己的工作和娱乐时间,只有大家理解和支持我,我才能专心的为大家解决问题。不过用担心,我已经建立了另一个可以免费
进入的QQ讨论群。
-### QQ讨论群 - 477963933 (新) 538979188 (满)
+### QQ讨论群 - 914275312 (新) 477963933 (满) 538979188 (满)
#### 进群须知
这个群,免费进入,大家可以相互讨论本库的相关使用和出现的问题,群主也会在里面解决问题,如果提出的问题,群成员不能帮助
解决,需要群主解决,但是要花费群主五分钟以上的时间(本库Bug除外),群主将不会解决这个问题,如果项目紧急,请付费进入解
diff --git a/README_EN.md b/README_EN.md
index 363ca196..17cfdf55 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -2,14 +2,12 @@
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://android-arsenal.com/details/1/6001)
-[](https://bintray.com/scwang90/maven/SmartRefreshLayout/_latestVersion)
+[](https://bintray.com/scwang90/maven/SmartRefreshLayout/_latestVersion)
[](https://android-arsenal.com/api?level=12)
-[](http://www.methodscount.com/?lib=com.scwang.smartrefresh%3ASmartRefreshLayout%3A1.1.0)
+[](http://www.methodscount.com/?lib=com.scwang.smartrefresh%3ASmartRefreshLayout%3A1.1.0)
## English | [中文](README.md)
-As the name says, SmartRefreshLayout is a "smart" or "intelligent" pull-down refresh layout,because of its "smart", it does not just support all the Views , but also support multi-layered nested view structures.
-It extends from ViewGroup rather than FrameLayout or LinearLayout, this not only improves its performance, but also enables it to absorb the advantages of various refresh layouts 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 it integrates various cool Headers and Footers.
SmartRefreshLayout's goal is to build a strong, stable and mature pull-down refresh layout framework, and to integrate all kinds of cool, diverse, practical and beautiful Headers and Footers.
## Features
@@ -25,6 +23,9 @@ SmartRefreshLayout's goal is to build a strong, stable and mature pull-down refr
- Support setting a variety of transformations (Translation, stretching, behind fixed, top fixed, full screen view) for Headers and Footers.
- Support rewrite and extension, internal implementation without private methods and fields.
- Support automatically cross-border rebound for all rolling Views (Listview、RecyclerView、ScrollView、WebView...View).
+ - Support the interchange of Header and Footer
+ - Support AndroidX
+ - Support [HorizontalRefresh](https://github.com/scwang90/SmartRefreshHorizontal)
## Gateway
@@ -97,12 +98,20 @@ Please rest assured that I have divided it into three packages, when used to ref
## Usage
#### 1.Add a gradle dependency.
-```
-compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
-compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//If you use the special Header
-compile 'com.android.support:appcompat-v7:25.3.1'
+[【V2.0.0】](https://github.com/scwang90/SmartRefreshLayout/blob/master/README_EN.md#1add-a-gradle-dependency)
+main change is to subcontract SmartRefreshLayout to reduce unnecessary dependencies and avoid code redundancy.
+welcome to experience.
+```
+implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.3'
+implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.3' //If you use the special Header
+```
+If you use AndroidX, add it to gradle.properties
+
+```
+android.useAndroidX=true
+android.enableJetifier=true
```
#### 2.Add SmartRefreshLayout in the layout xml.
@@ -183,7 +192,7 @@ Note: this method is the lowest priority.
-
+
@@ -150,6 +150,9 @@
+
\ No newline at end of file
diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png
index f34d7e7f..9af9a7a2 100644
Binary files a/app/src/main/ic_launcher-web.png and b/app/src/main/ic_launcher-web.png differ
diff --git a/app/src/main/java/com/scwang/refreshlayout/App.java b/app/src/main/java/com/scwang/refreshlayout/App.java
index 2f6beb97..c01f1c5b 100644
--- a/app/src/main/java/com/scwang/refreshlayout/App.java
+++ b/app/src/main/java/com/scwang/refreshlayout/App.java
@@ -1,51 +1,36 @@
package com.scwang.refreshlayout;
import android.app.Application;
-import android.content.Context;
-import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatDelegate;
import com.scwang.refreshlayout.util.DynamicTimeFormat;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
-import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
-import com.scwang.smartrefresh.layout.api.DefaultRefreshInitializer;
-import com.scwang.smartrefresh.layout.api.RefreshHeader;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.squareup.leakcanary.LeakCanary;
/**
*
- * Created by SCWANG on 2017/6/11.
+ * Created by scwang on 2017/6/11.
*/
-
public class App extends Application {
static {
//启用矢量图兼容
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
//设置全局默认配置(优先级最低,会被其他设置覆盖)
- SmartRefreshLayout.setDefaultRefreshInitializer(new DefaultRefreshInitializer() {
- @Override
- public void initialize(@NonNull Context context, @NonNull RefreshLayout layout) {
- //全局设置(优先级最低)
- layout.setEnableLoadMore(false);
- layout.setEnableAutoLoadMore(true);
- layout.setEnableOverScrollDrag(false);
- layout.setEnableOverScrollBounce(true);
- layout.setEnableLoadMoreWhenContentNotFull(true);
- layout.setEnableScrollContentWhenRefreshed(true);
- }
+ SmartRefreshLayout.setDefaultRefreshInitializer((context, layout) -> {
+ //全局设置(优先级最低)
+ layout.setEnableAutoLoadMore(true);
+ layout.setEnableOverScrollDrag(false);
+ layout.setEnableOverScrollBounce(true);
+ layout.setEnableLoadMoreWhenContentNotFull(true);
+ layout.setEnableScrollContentWhenRefreshed(true);
+ layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);
+ layout.getLayout().setTag("close egg");
});
- SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
- @NonNull
- @Override
- public RefreshHeader createRefreshHeader(@NonNull Context context, @NonNull RefreshLayout layout) {
- //全局设置主题颜色(优先级第二低,可以覆盖 DefaultRefreshInitializer 的配置,与下面的ClassicsHeader绑定)
- layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);
-
- return new ClassicsHeader(context).setTimeFormat(new DynamicTimeFormat("更新于 %s"));
- }
+ SmartRefreshLayout.setDefaultRefreshHeaderCreator((context, layout) -> {
+ //全局设置主题颜色(优先级第二低,可以覆盖 DefaultRefreshInitializer 的配置,与下面的ClassicsHeader绑定)
+ return new ClassicsHeader(context).setTimeFormat(new DynamicTimeFormat("更新于 %s"));
});
}
@@ -59,4 +44,5 @@ public void onCreate() {
}
LeakCanary.install(this);
}
+
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/FragmentActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/FragmentActivity.java
index 7ff43e72..2a5346c9 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/FragmentActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/FragmentActivity.java
@@ -18,9 +18,8 @@
/**
* Fragment 容器页面
- * Created by SCWANG on 2017/10/10.
+ * Created by scwang on 2017/10/10.
*/
-
@SuppressWarnings({"UnusedParameters", "unused"})
public class FragmentActivity extends AppCompatActivity {
@@ -93,7 +92,6 @@ private Class> getFragmentClass() throws ClassNotFoundException {
public Fragment getFragment() {
return mFragment;
}
-
//
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/IndexMainActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/IndexMainActivity.java
index 331f7308..0f984df3 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/IndexMainActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/IndexMainActivity.java
@@ -68,10 +68,10 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index_main);
- final BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
+ final BottomNavigationView navigation = findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(this);
- ViewPager viewPager = (ViewPager) findViewById(R.id.content);
+ ViewPager viewPager = findViewById(R.id.content);
viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
@@ -101,7 +101,7 @@ protected void onDestroy() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
- ((ViewPager) findViewById(R.id.content)).setCurrentItem(TabFragment.from(item.getItemId()).ordinal());
+ ((ViewPager)findViewById(R.id.content)).setCurrentItem(TabFragment.from(item.getItemId()).ordinal());
// getSupportFragmentManager()
// .beginTransaction()
// .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignCodeExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignCodeExampleActivity.java
index 72d0d186..26144f84 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignCodeExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignCodeExampleActivity.java
@@ -26,7 +26,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_assign_code);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -35,11 +35,11 @@ public void onClick(View v) {
});
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
//设置 Header 为 Material风格
refreshLayout.setRefreshHeader(new MaterialHeader(this).setShowBezierWave(true));
//设置 Footer 为 球脉冲
- refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));
+ refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.FixedBehind));
/*
* 以下代码仅仅为了演示效果而已,不是必须的
@@ -50,7 +50,7 @@ public void onClick(View v) {
if (isFirstEnter) {
isFirstEnter = false;
// //触发上拉加载
-// refreshLayout.autoLoadMore(250, 250, 1.5f);
+// mRefreshLayout.autoLoadMore(250, 250, 1.5f);
//通过多功能监听接口实现 在第一次加载完成之后 自动刷新
refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener(){
@Override
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignDefaultExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignDefaultExampleActivity.java
index 247e9845..6df3964c 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignDefaultExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignDefaultExampleActivity.java
@@ -35,7 +35,7 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_example_assign_default);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -47,11 +47,11 @@ public void onClick(View v) {
* 以下代码仅仅为了演示效果而已,不是必须的
* 关键代码在构造函数中
*/
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
// //触发上拉加载
-// refreshLayout.autoLoadMore();
+// mRefreshLayout.autoLoadMore();
//通过多功能监听接口实现 在第一次加载完成之后 自动刷新
refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener(){
@Override
@@ -103,7 +103,7 @@ public RefreshFooter createRefreshFooter(@NonNull Context context, @NonNull Refr
layout.setEnableLoadMoreWhenContentNotFull(true);//内容不满一页时候启用加载更多
ClassicsFooter footer = new ClassicsFooter(context);
footer.setBackgroundResource(android.R.color.white);
- footer.setSpinnerStyle(SpinnerStyle.Scale);//设置为拉伸模式
+ footer.setSpinnerStyle(SpinnerStyle.FixedBehind);//设置为拉伸模式
return footer;//指定为经典Footer,默认是 BallPulseFooter
}
});
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignXmlExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignXmlExampleActivity.java
index 05b507e3..f7b70e71 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignXmlExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/AssignXmlExampleActivity.java
@@ -23,7 +23,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_assign_xml);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -35,11 +35,11 @@ public void onClick(View v) {
* 以下代码仅仅为了演示效果而已,不是必须的
* 关键代码在 activity_example_assign_xml 中
*/
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
// //触发上拉加载
-// refreshLayout.autoLoadMore(250, 250, 1.5f);
+// mRefreshLayout.autoLoadMore(250, 250, 1.5f);
//通过多功能监听接口实现 在第一次加载完成之后 自动刷新
refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener(){
@Override
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/BasicExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/BasicExampleActivity.java
index c45c40d8..77daa6ad 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/BasicExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/BasicExampleActivity.java
@@ -1,7 +1,6 @@
package com.scwang.refreshlayout.activity.example;
import android.os.Bundle;
-import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
@@ -9,7 +8,7 @@
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AbsListView;
-import android.widget.AdapterView;
+import android.widget.ListView;
import android.widget.Toast;
import com.scwang.refreshlayout.R;
@@ -18,11 +17,12 @@
import com.scwang.smartrefresh.layout.api.RefreshFooter;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Random;
+
+import ezy.ui.layout.LoadingLayout;
import static android.R.layout.simple_list_item_2;
@@ -31,22 +31,20 @@
*/
public class BasicExampleActivity extends AppCompatActivity {
+ private Random random = new Random();
private BaseRecyclerAdapter mAdapter;
+ private LoadingLayout mLoadingLayout;
+ private RefreshLayout mRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_basic);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
+ final Toolbar toolbar = findViewById(R.id.toolbar);
+ toolbar.setNavigationOnClickListener(v -> finish());
- AbsListView listView = (AbsListView) findViewById(R.id.listView);
+ ListView listView = findViewById(R.id.listView);
listView.setAdapter(mAdapter = new BaseRecyclerAdapter(simple_list_item_2) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Void model, int position) {
@@ -55,64 +53,69 @@ protected void onBindViewHolder(SmartViewHolder holder, Void model, int position
holder.textColorId(android.R.id.text2, R.color.colorTextAssistant);
}
});
-
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
- refreshLayout.setEnableAutoLoadMore(true);//开启自动加载功能(非必须)
- refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+ //todo SCROLL_STATE_IDLE
+ listView.setOnScrollListener(new AbsListView.OnScrollListener() {
+ int SCROLL_STATE_IDLE = 0;
+ int SCROLL_STATE_TOUCH_SCROLL = 1;
+ int SCROLL_STATE_FLING = 2;
@Override
- public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
- refreshLayout.getLayout().postDelayed(new Runnable() {
- @Override
- public void run() {
- mAdapter.refresh(initData());
- refreshLayout.finishRefresh();
- refreshLayout.setNoMoreData(false);
- }
- }, 2000);
+ public void onScrollStateChanged(AbsListView view, int scrollState) {
+ if (scrollState == SCROLL_STATE_IDLE) {
+ System.out.println("SCROLL_STATE_IDLE");
+ } else if (scrollState == SCROLL_STATE_TOUCH_SCROLL) {
+ System.out.println("SCROLL_STATE_TOUCH_SCROLL");
+ } else if (scrollState == SCROLL_STATE_FLING) {
+ System.out.println("SCROLL_STATE_FLING");
+ }
}
- });
- refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
- public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
- refreshLayout.getLayout().postDelayed(new Runnable() {
- @Override
- public void run() {
- if (mAdapter.getItemCount() > 30) {
- Toast.makeText(getApplication(), "数据全部加载完毕", Toast.LENGTH_SHORT).show();
- refreshLayout.finishLoadMoreWithNoMoreData();//将不会再次触发加载更多事件
- } else {
- mAdapter.loadMore(initData());
- refreshLayout.finishLoadMore();
- }
- }
- }, 2000);
+ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+
}
});
+ mLoadingLayout = findViewById(R.id.loading);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
+ mRefreshLayout.setEnableAutoLoadMore(true);//开启自动加载功能(非必须)
+ mRefreshLayout.setOnRefreshListener(this::refresh);
+ mRefreshLayout.setOnLoadMoreListener(this::loadMore);
+ mLoadingLayout.setRetryListener(v -> {
+ mLoadingLayout.showContent();
+ mRefreshLayout.autoRefresh();
+ });
+
+ toolbar.setOnClickListener(v->{
+ boolean ret = mRefreshLayout.autoRefresh();
+ System.out.println("auto-autoRefresh="+ret);
+ mRefreshLayout.getLayout().postDelayed(()->{
+ System.out.println("auto-1-finishRefresh-"+mRefreshLayout.getState());
+ mRefreshLayout.finishRefresh();
+ System.out.println("auto-2-finishRefresh-"+mRefreshLayout.getState());
+ },600);
+ });
+
//触发自动刷新
- refreshLayout.autoRefresh();
+ mLoadingLayout.showContent();
+ mRefreshLayout.autoRefresh();
//item 点击测试
- mAdapter.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- BottomSheetDialog dialog=new BottomSheetDialog(BasicExampleActivity.this);
- View dialogView = View.inflate(getBaseContext(), R.layout.activity_example_basic, null);
- RefreshLayout refreshLayout = (RefreshLayout) dialogView.findViewById(R.id.refreshLayout);
- RecyclerView recyclerView = new RecyclerView(getBaseContext());
- recyclerView.setLayoutManager(new LinearLayoutManager(getBaseContext()));
- recyclerView.setAdapter(mAdapter);
- refreshLayout.setEnableRefresh(false);
- refreshLayout.setEnableNestedScroll(false);
- refreshLayout.setRefreshContent(recyclerView);
- dialog.setContentView(dialogView);
- dialog.show();
- }
+ mAdapter.setOnItemClickListener((parent, view, position, id) -> {
+ BottomSheetDialog dialog=new BottomSheetDialog(BasicExampleActivity.this);
+ View dialogView = View.inflate(getBaseContext(), R.layout.activity_example_basic, null);
+ RefreshLayout refreshLayout1 = dialogView.findViewById(R.id.refreshLayout);
+ RecyclerView recyclerView = new RecyclerView(getBaseContext());
+ recyclerView.setLayoutManager(new LinearLayoutManager(getBaseContext()));
+ recyclerView.setAdapter(mAdapter);
+ refreshLayout1.setEnableRefresh(false);
+ refreshLayout1.setEnableNestedScroll(false);
+ refreshLayout1.setRefreshContent(recyclerView);
+ dialog.setContentView(dialogView);
+ dialog.show();
});
//点击测试
- RefreshFooter footer = refreshLayout.getRefreshFooter();
- if (footer != null) {
- refreshLayout.getRefreshFooter().getView().findViewById(ClassicsFooter.ID_TEXT_TITLE).setOnClickListener(new View.OnClickListener() {
+ RefreshFooter footer = mRefreshLayout.getRefreshFooter();
+ if (footer instanceof ClassicsFooter) {
+ mRefreshLayout.getRefreshFooter().getView().findViewById(ClassicsFooter.ID_TEXT_TITLE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(), "点击测试", Toast.LENGTH_SHORT).show();
@@ -121,7 +124,56 @@ public void onClick(View v) {
}
}
- private Collection initData() {
- return Arrays.asList(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null);
+ private void loadMore(RefreshLayout layout) {
+ layout.getLayout().postDelayed(() -> {
+ if (random.nextBoolean()) {
+ //如果刷新成功
+ mAdapter.loadMore(initData(10));
+ if (mAdapter.getItemCount() <= 30) {
+ //还有多的数据
+ layout.finishLoadMore();
+ } else {
+ //没有更多数据(上拉加载功能将显示没有更多数据)
+ Toast.makeText(getApplication(), "数据全部加载完毕", Toast.LENGTH_SHORT).show();
+ layout.finishLoadMoreWithNoMoreData();//将不会再次触发加载更多事件
+ }
+ } else {
+ //刷新失败
+ layout.finishLoadMore(false);
+ }
+ }, 2000);
+ }
+
+ private void refresh(RefreshLayout refresh) {
+ refresh.getLayout().postDelayed(() -> {
+// if (random.nextBoolean()) {
+ //如果刷新成功
+ mAdapter.refresh(initData(40));
+ if (mAdapter.getItemCount() <= 30) {
+ //还有多的数据
+ refresh.finishRefresh();
+ } else {
+ //没有更多数据(上拉加载功能将显示没有更多数据)
+ refresh.finishRefreshWithNoMoreData();
+ }
+// } else {
+// //刷新失败
+// refresh.finishRefresh(false);
+// if (mAdapter.isEmpty()) {
+// mLoadingLayout.showError();
+// mLoadingLayout.setErrorText("随机触发刷新失败演示!");
+// }
+// }
+ }, 2000);
+ }
+
+ private Collection initData(int max) {
+ int min = Math.min(10, max);
+ max = Math.max(0, max);
+ if (max > min) {
+ return Arrays.asList(new Void[min + random.nextInt(max - min)]);
+ } else {
+ return Arrays.asList(new Void[min]);
+ }
}
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/CustomExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/CustomExampleActivity.java
index 3128e48f..2a5a8fcb 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/CustomExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/CustomExampleActivity.java
@@ -25,7 +25,7 @@
import com.scwang.smartrefresh.layout.internal.ArrowDrawable;
import com.scwang.smartrefresh.layout.internal.ProgressDrawable;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import com.scwang.smartrefresh.layout.util.DensityUtil;
+import com.scwang.smartrefresh.layout.util.SmartUtil;
import java.util.Arrays;
import java.util.Collection;
@@ -46,7 +46,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_custom);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -54,7 +54,7 @@ public void onClick(View v) {
}
});
- ListView listView = (ListView) findViewById(R.id.listView);
+ ListView listView = findViewById(R.id.listView);
listView.setAdapter(mAdapter = new BaseRecyclerAdapter(simple_list_item_2) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Void model, int position) {
@@ -64,7 +64,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Void model, int position
}
});
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
@@ -114,11 +114,11 @@ public ClassicsHeader(Context context, AttributeSet attrs) {
mProgressView = new ImageView(context);
mProgressView.setImageDrawable(mProgressDrawable);
mArrowView.setImageDrawable(new ArrowDrawable());
- addView(mProgressView, DensityUtil.dp2px(20), DensityUtil.dp2px(20));
- addView(mArrowView, DensityUtil.dp2px(20), DensityUtil.dp2px(20));
- addView(new Space(context), DensityUtil.dp2px(20), DensityUtil.dp2px(20));
+ addView(mProgressView, SmartUtil.dp2px(20), SmartUtil.dp2px(20));
+ addView(mArrowView, SmartUtil.dp2px(20), SmartUtil.dp2px(20));
+ addView(new Space(context), SmartUtil.dp2px(20), SmartUtil.dp2px(20));
addView(mHeaderText, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- setMinimumHeight(DensityUtil.dp2px(60));
+ setMinimumHeight(SmartUtil.dp2px(60));
}
@NonNull
public View getView() {
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/I18nExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/I18nExampleActivity.java
new file mode 100644
index 00000000..8ea8550e
--- /dev/null
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/I18nExampleActivity.java
@@ -0,0 +1,105 @@
+package com.scwang.refreshlayout.activity.example;
+
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.util.DisplayMetrics;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+
+import com.scwang.refreshlayout.R;
+import com.scwang.refreshlayout.adapter.BaseRecyclerAdapter;
+import com.scwang.refreshlayout.adapter.SmartViewHolder;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.header.ClassicsHeader;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+import static android.R.layout.simple_list_item_2;
+
+public class I18nExampleActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
+
+ private enum Item {
+ i1(R.string.item_example_i18n_system),
+ i2(R.string.item_example_i18n_chinese),
+ i3(R.string.item_example_i18n_english),
+ ;
+ public int nameId;
+ Item(@StringRes int nameId) {
+ this.nameId = nameId;
+ }
+ }
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_example_i18n);
+
+ Toolbar toolbar = findViewById(R.id.toolbar);
+ toolbar.setNavigationOnClickListener(v -> finish());
+
+ RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
+ if (refreshLayout != null) {
+ refreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
+ refreshLayout.setRefreshHeader(new ClassicsHeader(this));
+ refreshLayout.setOnRefreshListener(layout -> layout.finishRefresh(1000));
+ }
+
+ View view = findViewById(R.id.listView);
+ if (view instanceof ListView) {
+ ListView listView = ((ListView) view);
+ List- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ listView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2, this) {
+ @Override
+ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
+ holder.text(android.R.id.text1, model.nameId);
+ holder.text(android.R.id.text2, getString(R.string.item_example_i18n_click, getString(model.nameId)));
+ holder.textColorId(android.R.id.text2, R.color.colorTextAssistant);
+ }
+ });
+ }
+ }
+
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ switch (Item.values()[position % Item.values().length].nameId) {
+ case R.string.item_example_i18n_system:
+ changeAppLanguage(Locale.getDefault());
+ break;
+ case R.string.item_example_i18n_chinese:
+ changeAppLanguage(Locale.CHINESE);
+ break;
+ case R.string.item_example_i18n_english:
+ changeAppLanguage(Locale.ENGLISH);
+ break;
+ }
+ }
+
+ private void changeAppLanguage(Locale locale) {
+ Resources res = getResources();
+ DisplayMetrics dm = res.getDisplayMetrics();
+ Configuration conf = res.getConfiguration();
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ conf.locale = locale;
+ } else {
+ conf.setLocale(locale);
+ }
+ res.updateConfiguration(conf, dm);
+ startActivity(new Intent(this, getClass()));
+ overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
+ finish();
+ }
+}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/ListenerExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/ListenerExampleActivity.java
index 09ec5c6a..def013dd 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/ListenerExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/ListenerExampleActivity.java
@@ -49,7 +49,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_listener);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -57,10 +57,10 @@ public void onClick(View v) {
}
});
- mTvContent = (TextView) findViewById(R.id.content);
+ mTvContent = findViewById(R.id.content);
mTvContent.setMovementMethod(ScrollingMovementMethod.getInstance());
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener() {
@Override
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/NestedLayoutExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/NestedLayoutExampleActivity.java
index a1dca948..e0da5429 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/NestedLayoutExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/NestedLayoutExampleActivity.java
@@ -21,6 +21,7 @@
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
+import java.util.Locale;
public class NestedLayoutExampleActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
@@ -38,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_region);
- final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
if (toolbar != null) {
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
@@ -61,7 +62,7 @@ protected void onBindViewHolder(SmartViewHolder holder, String model, int positi
}
}.setOnItemClickListener(this));
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
- DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss SSS");
+ DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss SSS", Locale.CHINA);
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
Log.e("recyclerView", dateFormat.format(new Date()) + " - onScrollStateChanged - " + newState);
@@ -78,7 +79,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
* 以下代码仅仅为了演示效果而已,不是必须的
* 关键代码在 activity_example_assign_xml 中
*/
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter && refreshLayout != null) {
isFirstEnter = false;
//触发上拉加载
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/OverScrollExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/OverScrollExampleActivity.java
index 6eb3d692..0870bde9 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/OverScrollExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/OverScrollExampleActivity.java
@@ -22,7 +22,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_overscroll);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -30,8 +30,8 @@ public void onClick(View v) {
}
});
- final WebView webView = (WebView) findViewById(R.id.webView);
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final WebView webView = findViewById(R.id.webView);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
@@ -43,16 +43,18 @@ public void onRefresh(@NonNull RefreshLayout refreshLayout) {
webView.setWebViewClient(new WebViewClient(){
@Override
+ @SuppressWarnings("deprecation")
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
+
@Override
public void onPageCommitVisible(WebView view, String url) {
refreshLayout.finishRefresh();
}
});
-// TextView textView = (TextView) findViewById(R.id.textView);
+// TextView textView = findViewById(R.id.textView);
// textView.setMovementMethod(new ScrollingMovementMethod());
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/example/SnapHelperExampleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/example/SnapHelperExampleActivity.java
index 5f03f386..a35c1649 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/example/SnapHelperExampleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/example/SnapHelperExampleActivity.java
@@ -1,6 +1,7 @@
package com.scwang.refreshlayout.activity.example;
import android.os.Bundle;
+import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
@@ -9,33 +10,32 @@
import android.support.v7.widget.SnapHelper;
import android.support.v7.widget.Toolbar;
import android.view.View;
+import android.widget.Switch;
import com.scwang.refreshlayout.R;
import com.scwang.refreshlayout.adapter.BaseRecyclerAdapter;
import com.scwang.refreshlayout.adapter.SmartViewHolder;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import java.util.Arrays;
import java.util.Collection;
/**
* 结合 SnapHelper 使用
- * Created by SCWANG on 2017/8/4.
+ * Created by scwang on 2017/8/4.
*/
-
public class SnapHelperExampleActivity extends AppCompatActivity {
+ private BaseRecyclerAdapter mAdapter;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example_snaphelper);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
+ final Toolbar toolbar = findViewById(R.id.toolbar);
+ toolbar.setNavigationOnClickListener(v -> finish());
//初始化列表和监听
View view = findViewById(R.id.recyclerView);
@@ -43,7 +43,7 @@ public void onClick(View v) {
RecyclerView recyclerView = (RecyclerView) view;
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter(loadModels(), R.layout.listitem_example_snaphelper) {
+ recyclerView.setAdapter(mAdapter = new BaseRecyclerAdapter(loadModels(), R.layout.item_example_snap_helper) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Integer model, int position) {
holder.image(R.id.imageView, model);
@@ -53,16 +53,34 @@ protected void onBindViewHolder(SmartViewHolder holder, Integer model, int posit
snapHelper.attachToRecyclerView(recyclerView);
}
+ RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
+ refreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
+ @Override
+ public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+ refreshLayout.getLayout().postDelayed(() -> {
+ mAdapter.refresh(loadModels());
+ refreshLayout.finishRefresh();
+ }, 2000);
+ }
+
+ @Override
+ public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+ refreshLayout.getLayout().postDelayed(() -> {
+ mAdapter.loadMore(loadModels());
+ refreshLayout.finishLoadMore();
+ }, 2000);
+ }
+ });
+
+ Switch switcher = findViewById(R.id.switch_scroll_content);
+ if (switcher != null) {
+ refreshLayout.setEnableScrollContentWhenLoaded(switcher.isChecked());
+ switcher.setOnCheckedChangeListener((buttonView, isChecked) -> refreshLayout.setEnableScrollContentWhenLoaded(isChecked));
+ }
}
private Collection loadModels() {
- return Arrays.asList(
- R.mipmap.image_weibo_home_1,
- R.mipmap.image_weibo_home_2,
- R.mipmap.image_weibo_home_1,
- R.mipmap.image_weibo_home_2,
- R.mipmap.image_weibo_home_1,
- R.mipmap.image_weibo_home_2);
+ return Arrays.asList( R.mipmap.image_weibo_home_1, R.mipmap.image_weibo_home_2);
}
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/BannerPracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/BannerPracticeActivity.java
index ce32920f..752b3f5a 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/BannerPracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/BannerPracticeActivity.java
@@ -1,6 +1,7 @@
package com.scwang.refreshlayout.activity.practice;
import android.content.Context;
+import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
@@ -11,6 +12,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
+import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
@@ -23,10 +25,15 @@
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.youth.banner.Banner;
+import com.youth.banner.BannerConfig;
+import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -43,7 +50,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_banner);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -51,8 +58,8 @@ public void onClick(View v) {
}
});
- final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RecyclerView recyclerView = findViewById(R.id.recyclerView);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
mAdapter = new QuickAdapter();
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
@@ -75,20 +82,43 @@ public void run() {
},2000);
}
});
+// refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+// @Override
+// public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+// mAdapter.addData(movies);
+// refreshLayout.finishLoadMoreWithNoMoreData();
+// }
+// });
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+ public void onLoadMore(@NonNull RefreshLayout rl) {
mAdapter.addData(movies);
- refreshLayout.finishLoadMoreWithNoMoreData();
+ rl.finishLoadMoreWithNoMoreData();
}
});
//添加Header
- View header = LayoutInflater.from(this).inflate(R.layout.listitem_movie_header, recyclerView, false);
+ View header = LayoutInflater.from(this).inflate(R.layout.item_movie_header, recyclerView, false);
Banner banner = (Banner) header;
banner.setImageLoader(new GlideImageLoader());
banner.setImages(BANNER_ITEMS);
+ banner.setOnBannerListener(new OnBannerListener() {
+ @Override
+ public void OnBannerClick(int i) {
+ Toast.makeText(BannerPracticeActivity.this, "点击了第" + i + "页", Toast.LENGTH_SHORT).show();
+ }
+ });
+ if (Build.VERSION.SDK_INT > 26) {
+ Stream stream = BANNER_ITEMS.stream().map(new Function() {
+ @Override
+ public String apply(BannerItem bannerItem) {
+ return bannerItem.title;
+ }
+ });
+ banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
+ banner.setBannerTitles(stream.collect(Collectors.toList()));
+ }
banner.start();
mAdapter.addHeaderView(banner);
mAdapter.openLoadAnimation();
@@ -103,7 +133,7 @@ public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
public class QuickAdapter extends BaseQuickAdapter {
public QuickAdapter() {
- super(R.layout.listitem_movie_item);
+ super(R.layout.item_movie_item);
}
@Override
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/FeedListPracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/FeedListPracticeActivity.java
index 1f10efa1..75af3dc6 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/FeedListPracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/FeedListPracticeActivity.java
@@ -7,6 +7,7 @@
import com.scwang.refreshlayout.R;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.header.BezierRadarHeader;
/**
* 微博列表
@@ -20,7 +21,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_feedlist);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -28,11 +29,12 @@ public void onClick(View v) {
}
});
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
refreshLayout.autoRefresh();
}
+ refreshLayout.setRefreshHeader(new BezierRadarHeader(this));
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/ProfilePracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/ProfilePracticeActivity.java
index 6e9f0832..e9e23ef9 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/ProfilePracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/ProfilePracticeActivity.java
@@ -19,7 +19,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_profile);
- final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/QQBrowserPracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/QQBrowserPracticeActivity.java
index 1c9be233..3b9a6f2d 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/QQBrowserPracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/QQBrowserPracticeActivity.java
@@ -24,7 +24,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_qqbrowser);
- final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -32,13 +32,14 @@ public void onClick(View v) {
}
});
- final LoadingLayout loading = (LoadingLayout) findViewById(R.id.loading);
+ final LoadingLayout loading = findViewById(R.id.loading);
- final WebView webView = (WebView) findViewById(R.id.webView);
+ final WebView webView = findViewById(R.id.webView);
webView.loadUrl("https://github.com/scwang90/SmartRefreshLayout");
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
+ @SuppressWarnings("deprecation")
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/RepastPracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/RepastPracticeActivity.java
index 679caa27..0654c550 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/RepastPracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/RepastPracticeActivity.java
@@ -16,7 +16,7 @@
import com.scwang.refreshlayout.util.StatusBarUtil;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
-import com.scwang.smartrefresh.layout.util.DensityUtil;
+import com.scwang.smartrefresh.layout.util.SmartUtil;
import java.util.Arrays;
import java.util.Collection;
@@ -41,7 +41,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_repast);
- final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -49,8 +49,8 @@ public void onClick(View v) {
}
});
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
- refreshLayout.setEnableFooterFollowWhenLoadFinished(true);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
+ refreshLayout.setEnableFooterFollowWhenNoMoreData(true);
//第一次进入演示刷新
if (isFirstEnter) {
@@ -64,7 +64,7 @@ public void onClick(View v) {
RecyclerView recyclerView = (RecyclerView) view;
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(mAdapter = new BaseRecyclerAdapter(loadModels(), R.layout.listitem_practice_repast) {
+ recyclerView.setAdapter(mAdapter = new BaseRecyclerAdapter(loadModels(), R.layout.item_practice_repast) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Model model, int position) {
holder.text(R.id.name, model.name);
@@ -81,7 +81,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
@Override
public void run() {
refreshLayout.finishRefresh();
- refreshLayout.setNoMoreData(false);//恢复上拉状态
+ refreshLayout.resetNoMoreData();//setNoMoreData(false);//恢复上拉状态
}
}, 2000);
}
@@ -105,7 +105,7 @@ public void run() {
refreshLayout.getLayout().postDelayed(new Runnable() {
@Override
public void run() {
- refreshLayout.setHeaderInsetStart(DensityUtil.px2dp(toolbar.getHeight()));
+ refreshLayout.setHeaderInsetStart(SmartUtil.px2dp(toolbar.getHeight()));
}
}, 500);
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/WebViewPracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/WebViewPracticeActivity.java
index a0714f65..45b07f16 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/WebViewPracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/WebViewPracticeActivity.java
@@ -13,7 +13,7 @@
import com.scwang.refreshlayout.util.StatusBarUtil;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import com.scwang.smartrefresh.layout.util.DensityUtil;
+import com.scwang.smartrefresh.layout.util.SmartUtil;
import java.util.Locale;
@@ -28,7 +28,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_webview);
- final Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -36,8 +36,8 @@ public void onClick(View v) {
}
});
- final WebView webView = (WebView) findViewById(R.id.webView);
- final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ final WebView webView = findViewById(R.id.webView);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
@@ -50,6 +50,7 @@ public void onRefresh(@NonNull RefreshLayout refreshLayout) {
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
+ @SuppressWarnings("deprecation")
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
@@ -59,7 +60,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
refreshLayout.finishRefresh();
- view.loadUrl(String.format(Locale.CHINA, "javascript:document.body.style.paddingTop='%fpx'; void 0", DensityUtil.px2dp(webView.getPaddingTop())));
+ view.loadUrl(String.format(Locale.CHINA, "javascript:document.body.style.paddingTop='%fpx'; void 0", SmartUtil.px2dp(webView.getPaddingTop())));
}
});
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/practice/WeiboPracticeActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/practice/WeiboPracticeActivity.java
index 609f222e..cc295ef4 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/practice/WeiboPracticeActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/practice/WeiboPracticeActivity.java
@@ -14,7 +14,7 @@
import com.scwang.smartrefresh.layout.api.RefreshHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.SimpleMultiPurposeListener;
-import com.scwang.smartrefresh.layout.util.DensityUtil;
+import com.scwang.smartrefresh.layout.util.SmartUtil;
/**
* 微博主页
@@ -29,7 +29,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice_weibo);
- final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -40,11 +40,12 @@ public void onClick(View v) {
//状态栏透明和间距处理
StatusBarUtil.immersive(this);
StatusBarUtil.setPaddingSmart(this, toolbar);
+ StatusBarUtil.setMargin(this, findViewById(R.id.header));
final View parallax = findViewById(R.id.parallax);
final View buttonBar = findViewById(R.id.buttonBarLayout);
- final NestedScrollView scrollView = (NestedScrollView)findViewById(R.id.scrollView);
- final RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ final NestedScrollView scrollView = findViewById(R.id.scrollView);
+ final RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);
findViewById(R.id.attention).setOnClickListener(new View.OnClickListener() {
@Override
@@ -90,7 +91,7 @@ public void onHeaderMoving(RefreshHeader header, boolean isDragging, float perce
});
scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
private int lastScrollY = 0;
- private int h = DensityUtil.dp2px(170);
+ private int h = SmartUtil.dp2px(170);
private int color = ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary)&0x00ffffff;
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierCircleStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierCircleStyleActivity.java
index 05528d25..9b2bd813 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierCircleStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierCircleStyleActivity.java
@@ -18,7 +18,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -48,7 +50,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_circle);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -56,7 +58,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -68,7 +70,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -81,7 +86,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 内容不偏移:
mRefreshLayout.setEnableHeaderTranslationContent(false);
break;
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierRadarStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierRadarStyleActivity.java
index 03a715df..400452ce 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierRadarStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/BezierRadarStyleActivity.java
@@ -19,7 +19,9 @@
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.header.BezierRadarHeader;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -52,7 +54,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_bezier);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -60,8 +62,8 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
- mRefreshHeader = (BezierRadarHeader) findViewById(R.id.header);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
+ mRefreshHeader = findViewById(R.id.header);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -73,7 +75,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -86,7 +91,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 内容不偏移:
mRefreshLayout.setEnableHeaderTranslationContent(false);
break;
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/ClassicsStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/ClassicsStyleActivity.java
index 9b42589d..b274bf98 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/ClassicsStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/ClassicsStyleActivity.java
@@ -26,8 +26,10 @@
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
+import java.util.List;
import java.util.Locale;
import java.util.Random;
@@ -69,7 +71,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_classics);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -77,7 +79,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
int delta = new Random().nextInt(7 * 24 * 60 * 60 * 1000);
mClassicsHeader = (ClassicsHeader)mRefreshLayout.getRefreshHeader();
@@ -97,7 +99,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(mAdpater = new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(mAdpater = new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -118,7 +123,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 背后固定:
mClassicsHeader.setSpinnerStyle(SpinnerStyle.FixedBehind);
mRefreshLayout.setPrimaryColors(0xff444444, 0xffffffff);
@@ -134,7 +139,7 @@ public void onItemClick(AdapterView> parent, View view, int position, long id)
mRefreshLayout.getLayout().bringChildToFront(mRecyclerView);
break;
case 尺寸拉伸:
- mClassicsHeader.setSpinnerStyle(SpinnerStyle.Scale);
+ mClassicsHeader.setSpinnerStyle(SpinnerStyle.values[1]);
break;
case 位置平移:
mClassicsHeader.setSpinnerStyle(SpinnerStyle.Translate);
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/DeliveryStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/DeliveryStyleActivity.java
index 70b78865..64688c34 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/DeliveryStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/DeliveryStyleActivity.java
@@ -18,9 +18,11 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
-import static com.scwang.refreshlayout.R.layout.listitem_style_delivery;
+import static com.scwang.refreshlayout.R.layout.item_style_delivery;
public class DeliveryStyleActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
@@ -55,7 +57,7 @@ protected void onCreate(Bundle savedInstanceState) {
window.getDecorView().setSystemUiVisibility(systemUiVisibility);
}
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -63,7 +65,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -74,7 +76,10 @@ public void onClick(View v) {
RecyclerView recyclerView = (RecyclerView) view;
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), listitem_style_delivery,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, item_style_delivery,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
}
@@ -84,7 +89,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 默认主题:
mToolbar.setBackgroundResource(android.R.color.white);
mToolbar.setTitleTextColor(0xffbbbbbb);
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/DropBoxStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/DropBoxStyleActivity.java
index 75418f0b..2f718ada 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/DropBoxStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/DropBoxStyleActivity.java
@@ -31,6 +31,20 @@ private enum Item {
红色主题(R.string.item_style_theme_red_abstract),
绿色主题(R.string.item_style_theme_green_abstract),
蓝色主题(R.string.item_style_theme_blue_abstract),
+
+
+ 默认1主题(R.string.item_style_theme_default_abstract),
+ 橙色1主题(R.string.item_style_theme_orange_abstract),
+ 红色1主题(R.string.item_style_theme_red_abstract),
+ 绿色1主题(R.string.item_style_theme_green_abstract),
+ 蓝色1主题(R.string.item_style_theme_blue_abstract),
+
+
+ 默认2主题(R.string.item_style_theme_default_abstract),
+ 橙色2主题(R.string.item_style_theme_orange_abstract),
+ 红色2主题(R.string.item_style_theme_red_abstract),
+ 绿色2主题(R.string.item_style_theme_green_abstract),
+ 蓝色2主题(R.string.item_style_theme_blue_abstract),
;
public int nameId;
Item(@StringRes int nameId) {
@@ -47,7 +61,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_dropbox);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -55,7 +69,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -80,7 +94,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 默认主题:
setThemeColor(R.color.colorPrimary, R.color.colorPrimaryDark);
mRefreshLayout.setPrimaryColors(0xff283645, 0xff6ea9ff);
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/FlyRefreshStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/FlyRefreshStyleActivity.java
index bb43a0d1..cb14ef30 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/FlyRefreshStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/FlyRefreshStyleActivity.java
@@ -39,9 +39,10 @@
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.scwang.smartrefresh.layout.listener.SimpleMultiPurposeListener;
-import com.scwang.smartrefresh.layout.util.DensityUtil;
+import com.scwang.smartrefresh.layout.util.SmartUtil;
import java.text.DateFormat;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -69,7 +70,7 @@ public class FlyRefreshStyleActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fly_refresh);
- final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ final Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
@@ -82,11 +83,11 @@ public void onClick(View v) {
* 关键代码-开始
*----------------------------------------------------------*/
- MountainSceneView mSceneView = (MountainSceneView) findViewById(R.id.mountain);
- mFlyView = (FlyView) findViewById(R.id.flyView);
- mFlyRefreshHeader = (FlyRefreshHeader)findViewById(R.id.flyRefresh);
+ MountainSceneView mSceneView = findViewById(R.id.mountain);
+ mFlyView = findViewById(R.id.flyView);
+ mFlyRefreshHeader = findViewById(R.id.flyRefresh);
mFlyRefreshHeader.setUp(mSceneView, mFlyView);//绑定场景和纸飞机
- mRefreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
mRefreshLayout.setReboundInterpolator(new ElasticOutInterpolator());//设置回弹插值器,会带有弹簧震动效果
mRefreshLayout.setReboundDuration(800);//设置回弹动画时长
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@@ -112,7 +113,7 @@ public void onAnimationEnd(Animator animation) {
}
});
//设置 让 AppBarLayout 和 RefreshLayout 的滚动同步 并不保持 toolbar 位置不变
- final AppBarLayout appBar = (AppBarLayout) findViewById(R.id.appbar);
+ final AppBarLayout appBar = findViewById(R.id.appbar);
mRefreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener() {
@Override
public void onHeaderMoving(RefreshHeader header, boolean isDragging, float percent, int offset, int headerHeight, int maxDragHeight) {
@@ -145,12 +146,12 @@ public void onHeaderMoving(RefreshHeader header, boolean isDragging, float perce
initDataSet();
mAdapter = new ItemAdapter(this);
mLayoutManager = new LinearLayoutManager(this);
- mListView = (RecyclerView) findViewById(R.id.recyclerView);
+ mListView = findViewById(R.id.recyclerView);
mListView.setLayoutManager(mLayoutManager);
mListView.setAdapter(mAdapter);
mListView.setItemAnimator(new SampleItemAnimator());
- mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbarLayout);
- mActionButton = (FloatingActionButton) findViewById(R.id.fab);
+ mToolbarLayout = findViewById(R.id.toolbarLayout);
+ mActionButton = findViewById(R.id.fab);
/*
* 设置点击 ActionButton 时候触发自动刷新 并改变主题颜色
*/
@@ -188,7 +189,7 @@ public void onAnimationUpdate(ValueAnimator animation) {
misAppbarExpand = true;
mActionButton.animate().scaleX(1).scaleY(1);
mFlyView.animate().scaleX(1).scaleY(1);
- ValueAnimator animator = ValueAnimator.ofInt(mListView.getPaddingTop(), DensityUtil.dp2px(25));
+ ValueAnimator animator = ValueAnimator.ofInt(mListView.getPaddingTop(), SmartUtil.dp2px(25));
animator.setDuration(300);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
@@ -233,13 +234,18 @@ public void onClick(View v) {
}
private void initDataSet() {
- mDataSet.add(new ItemData(0xFF76A9FC, R.drawable.ic_fly_refresh_poll, "Meeting Minutes", new Date(2014 - 1900, 2, 9)));
- mDataSet.add(new ItemData(Color.GRAY, R.drawable.ic_fly_refresh_folder, "Favorites Photos", new Date(2014 - 1900, 1, 3)));
- mDataSet.add(new ItemData(Color.GRAY, R.drawable.ic_fly_refresh_folder, "Photos", new Date(2014 - 1900, 0, 9)));
+ try {
+ DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+ mDataSet.add(new ItemData(0xFF76A9FC, R.drawable.ic_fly_refresh_poll, "Meeting Minutes", format.parse("2014-03-09")));
+ mDataSet.add(new ItemData(Color.GRAY, R.drawable.ic_fly_refresh_folder, "Favorites Photos", format.parse("2014-02-03")));
+ mDataSet.add(new ItemData(Color.GRAY, R.drawable.ic_fly_refresh_folder, "Photos", format.parse("2014-01-09")));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
}
private void addItemData() {
- ItemData itemData = new ItemData(0xFFFFC970, R.drawable.ic_fly_refresh_smartphone, "Magic Cube Show", new Date());
+ ItemData itemData = new ItemData(0xFFFFC970, R.drawable.ic_fly_refresh_phone, "Magic Cube Show", new Date());
mDataSet.add(0, itemData);
mAdapter.notifyItemInserted(0);
mLayoutManager.scrollToPosition(0);
@@ -272,18 +278,19 @@ private class ItemAdapter extends RecyclerView.Adapter {
dateFormat = SimpleDateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ENGLISH);
}
+ @NonNull
@Override
- public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
+ public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = mInflater.inflate(R.layout.activity_fly_refresh_item, viewGroup, false);
return new ItemViewHolder(view);
}
@Override
- public void onBindViewHolder(ItemViewHolder itemViewHolder, int i) {
+ public void onBindViewHolder(@NonNull ItemViewHolder itemViewHolder, int i) {
final ItemData data = mDataSet.get(i);
ShapeDrawable drawable = new ShapeDrawable(new OvalShape());
drawable.getPaint().setColor(data.color);
- itemViewHolder.icon.setBackgroundDrawable(drawable);
+ itemViewHolder.icon.setBackground(drawable);
itemViewHolder.icon.setImageResource(data.icon);
itemViewHolder.title.setText(data.title);
itemViewHolder.subTitle.setText(dateFormat.format(data.time));
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameBattleCityStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameBattleCityStyleActivity.java
index e5118a9c..2694e8e6 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameBattleCityStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameBattleCityStyleActivity.java
@@ -18,7 +18,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -47,7 +49,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_fungame_battlecity);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -55,7 +57,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -67,7 +69,11 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -80,7 +86,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 默认主题:
mRefreshLayout.setPrimaryColorsId(android.R.color.white, android.R.color.black);
break;
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameHitBlockStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameHitBlockStyleActivity.java
index ae0094ec..32591b5c 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameHitBlockStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/FunGameHitBlockStyleActivity.java
@@ -18,7 +18,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -47,7 +49,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_fungame_hitblock);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -55,7 +57,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -67,7 +69,11 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -81,7 +87,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 默认主题:
mRefreshLayout.setPrimaryColorsId(android.R.color.white, android.R.color.black);
break;
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/MaterialStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/MaterialStyleActivity.java
index 7b94c86b..8c22e813 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/MaterialStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/MaterialStyleActivity.java
@@ -19,7 +19,9 @@
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -52,20 +54,22 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_material);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
- mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
+ mToolbar = findViewById(R.id.toolbar);
+ mToolbar.setNavigationOnClickListener(v -> finish());
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
}
+ mToolbar.setOnLongClickListener(v -> {
+ mRefreshLayout.autoRefreshAnimationOnly();
+ mRefreshLayout.autoRefreshAnimationOnly();
+ mRefreshLayout.autoRefreshAnimationOnly();
+ return true;
+ });
+
mMaterialHeader = (MaterialHeader)mRefreshLayout.getRefreshHeader();
View view = findViewById(R.id.recyclerView);
@@ -74,7 +78,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -87,7 +94,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 内容不偏移:
mRefreshLayout.setEnableHeaderTranslationContent(false);
break;
@@ -119,6 +126,8 @@ public void onItemClick(AdapterView> parent, View view, int position, long id)
private void setThemeColor(int colorPrimary, int colorPrimaryDark) {
mToolbar.setBackgroundResource(colorPrimary);
mRefreshLayout.setPrimaryColorsId(colorPrimary, android.R.color.white);
+ mMaterialHeader.setProgressBackgroundColorSchemeResource(colorPrimary);
+ mMaterialHeader.setColorSchemeResources(android.R.color.white);
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setStatusBarColor(ContextCompat.getColor(this, colorPrimaryDark));
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/PhoenixStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/PhoenixStyleActivity.java
index 426f9f85..96989fdd 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/PhoenixStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/PhoenixStyleActivity.java
@@ -22,7 +22,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -56,7 +58,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_phoenix);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -64,14 +66,14 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
}
- mAppBarLayout = (AppBarLayout) findViewById(R.id.appbar);
- mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbarLayout);
+ mAppBarLayout = findViewById(R.id.appbar);
+ mToolbarLayout = findViewById(R.id.toolbarLayout);
View view = findViewById(R.id.recyclerView);
if (view instanceof RecyclerView) {
@@ -79,7 +81,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -93,7 +98,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
/*
* 监听 AppBarLayout 的关闭和开启 ActionButton 设置关闭隐藏动画
*/
- mActionButton = (FloatingActionButton) findViewById(R.id.fab);
+ mActionButton = findViewById(R.id.fab);
mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
boolean misAppbarExpand = true;
View fab = findViewById(R.id.fab);
@@ -115,7 +120,7 @@ public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 折叠:
mAppBarLayout.setExpanded(false, true);
mAppBarLayout.setEnabled(false);
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/StoreHouseStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/StoreHouseStyleActivity.java
index 208ff99d..74a1814b 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/StoreHouseStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/StoreHouseStyleActivity.java
@@ -55,7 +55,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_storehouse);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -63,7 +63,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -75,7 +75,10 @@ public void onClick(View v) {
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -88,7 +91,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 显示中文: {
RefreshHeader refreshHeader = mRefreshLayout.getRefreshHeader();
if (refreshHeader instanceof StoreHouseHeader) {
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/TaurusStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/TaurusStyleActivity.java
index b500a43f..e3026a1b 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/TaurusStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/TaurusStyleActivity.java
@@ -22,7 +22,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -56,7 +58,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_taurus);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -64,14 +66,14 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
}
- mAppBarLayout = (AppBarLayout) findViewById(R.id.appbar);
- mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbarLayout);
+ mAppBarLayout = findViewById(R.id.appbar);
+ mToolbarLayout = findViewById(R.id.toolbarLayout);
View view = findViewById(R.id.recyclerView);
if (view instanceof RecyclerView) {
@@ -79,7 +81,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -93,7 +98,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
/*
* 监听 AppBarLayout 的关闭和开启 给 ActionButton 设置关闭隐藏动画
*/
- mActionButton = (FloatingActionButton) findViewById(R.id.fab);
+ mActionButton = findViewById(R.id.fab);
mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
boolean misAppbarExpand = true;
View fab = findViewById(R.id.fab);
@@ -115,7 +120,7 @@ public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 折叠:
mAppBarLayout.setExpanded(false, true);
mAppBarLayout.setEnabled(false);
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/WaterDropStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/WaterDropStyleActivity.java
index 9e3c3609..01be31fd 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/WaterDropStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/WaterDropStyleActivity.java
@@ -18,7 +18,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -49,7 +51,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_water_drop);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -57,7 +59,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -69,7 +71,10 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -82,7 +87,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 内容不偏移:
mRefreshLayout.setEnableHeaderTranslationContent(false);
break;
diff --git a/app/src/main/java/com/scwang/refreshlayout/activity/style/WaveSwipeStyleActivity.java b/app/src/main/java/com/scwang/refreshlayout/activity/style/WaveSwipeStyleActivity.java
index e77e3c73..a0825f0f 100644
--- a/app/src/main/java/com/scwang/refreshlayout/activity/style/WaveSwipeStyleActivity.java
+++ b/app/src/main/java/com/scwang/refreshlayout/activity/style/WaveSwipeStyleActivity.java
@@ -18,7 +18,9 @@
import com.scwang.refreshlayout.adapter.SmartViewHolder;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static android.R.layout.simple_list_item_2;
import static android.support.v7.widget.DividerItemDecoration.VERTICAL;
@@ -48,7 +50,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_style_wave_swipe);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
+ mToolbar = findViewById(R.id.toolbar);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -56,7 +58,7 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
+ mRefreshLayout = findViewById(R.id.refreshLayout);
if (isFirstEnter) {
isFirstEnter = false;
mRefreshLayout.autoRefresh();//第一次进入触发自动刷新,演示效果
@@ -68,7 +70,11 @@ public void onClick(View v) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new DividerItemDecoration(this, VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,this) {
+ List
- items = new ArrayList<>();
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ items.addAll(Arrays.asList(Item.values()));
+ recyclerView.setAdapter(new BaseRecyclerAdapter
- (items, simple_list_item_2,this) {
@Override
protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
holder.text(android.R.id.text1, model.name());
@@ -81,7 +87,7 @@ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- switch (Item.values()[position]) {
+ switch (Item.values()[position % Item.values().length]) {
case 内容不偏移:
mRefreshLayout.setEnableHeaderTranslationContent(false);
break;
diff --git a/app/src/main/java/com/scwang/refreshlayout/adapter/BaseRecyclerAdapter.java b/app/src/main/java/com/scwang/refreshlayout/adapter/BaseRecyclerAdapter.java
index 36d86f8e..85e83a7a 100644
--- a/app/src/main/java/com/scwang/refreshlayout/adapter/BaseRecyclerAdapter.java
+++ b/app/src/main/java/com/scwang/refreshlayout/adapter/BaseRecyclerAdapter.java
@@ -16,20 +16,18 @@
/**
*
- * Created by SCWANG on 2017/6/11.
+ * Created by scwang on 2017/6/11.
*/
-
@SuppressWarnings({"UnusedReturnValue", "unused"})
public abstract class BaseRecyclerAdapter extends RecyclerView.Adapter implements ListAdapter {
//
-
private final int mLayoutId;
private final List mList;
private int mLastPosition = -1;
private boolean mOpenAnimationEnable = true;
- private AdapterView.OnItemClickListener mListener;
+ protected AdapterView.OnItemClickListener mListener;
public BaseRecyclerAdapter(@LayoutRes int layoutId) {
setHasStableIds(false);
@@ -51,7 +49,6 @@ public BaseRecyclerAdapter(Collection collection, @LayoutRes int layoutId, Ad
}
//
-
private void addAnimate(SmartViewHolder holder, int postion) {
if (mOpenAnimationEnable && mLastPosition < postion) {
holder.itemView.setAlpha(0);
@@ -87,31 +84,6 @@ public void onViewAttachedToWindow(SmartViewHolder holder) {
public void setOpenAnimationEnable(boolean enabled) {
this.mOpenAnimationEnable = enabled;
}
-
- //
-
- //
-
- public BaseRecyclerAdapter setOnItemClickListener(AdapterView.OnItemClickListener listener) {
- mListener = listener;
- return this;
- }
-
- public BaseRecyclerAdapter refresh(Collection collection) {
- mList.clear();
- mList.addAll(collection);
- notifyDataSetChanged();
- notifyListDataSetChanged();
- mLastPosition = -1;
- return this;
- }
-
- public BaseRecyclerAdapter loadMore(Collection collection) {
- mList.addAll(collection);
- notifyDataSetChanged();
- notifyListDataSetChanged();
- return this;
- }
//
//
@@ -191,6 +163,40 @@ public Object getItem(int position) {
public int getCount() {
return mList.size();
}
+ //
+ //
+ public T get(int index) {
+ return mList.get(index);
+ }
+
+ public BaseRecyclerAdapter setOnItemClickListener(AdapterView.OnItemClickListener listener) {
+ mListener = listener;
+ return this;
+ }
+
+ public BaseRecyclerAdapter refresh(Collection collection) {
+ mList.clear();
+ mList.addAll(collection);
+ notifyDataSetChanged();
+ notifyListDataSetChanged();
+ mLastPosition = -1;
+ return this;
+ }
+
+ public BaseRecyclerAdapter loadMore(Collection collection) {
+ mList.addAll(collection);
+ notifyDataSetChanged();
+ notifyListDataSetChanged();
+ return this;
+ }
+
+ public BaseRecyclerAdapter insert(Collection collection) {
+ mList.addAll(0, collection);
+ notifyItemRangeInserted(0, collection.size());
+ notifyListDataSetChanged();
+ return this;
+ }
//
+
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/adapter/SmartViewHolder.java b/app/src/main/java/com/scwang/refreshlayout/adapter/SmartViewHolder.java
index 3d5b7ef2..57cb17f2 100644
--- a/app/src/main/java/com/scwang/refreshlayout/adapter/SmartViewHolder.java
+++ b/app/src/main/java/com/scwang/refreshlayout/adapter/SmartViewHolder.java
@@ -88,4 +88,20 @@ public SmartViewHolder image(int id, int imageId) {
}
return this;
}
+
+ public SmartViewHolder gone(int id) {
+ View view = findViewById(id);
+ if (view != null) {
+ view.setVisibility(View.GONE);
+ }
+ return this;
+ }
+
+ public SmartViewHolder visible(int id) {
+ View view = findViewById(id);
+ if (view != null) {
+ view.setVisibility(View.VISIBLE);
+ }
+ return this;
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/scwang/refreshlayout/fragment/example/BottomSheetExampleFragment.java b/app/src/main/java/com/scwang/refreshlayout/fragment/example/BottomSheetExampleFragment.java
index 889c1f0a..01ca93f0 100644
--- a/app/src/main/java/com/scwang/refreshlayout/fragment/example/BottomSheetExampleFragment.java
+++ b/app/src/main/java/com/scwang/refreshlayout/fragment/example/BottomSheetExampleFragment.java
@@ -47,7 +47,9 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
public void onViewCreated(@NonNull View root, @Nullable Bundle savedInstanceState) {
super.onViewCreated(root, savedInstanceState);
- final Toolbar toolbar = (Toolbar)root.findViewById(R.id.toolbar);
+ root = onCreateView(LayoutInflater.from(getContext()), null, null);
+
+ final Toolbar toolbar = root.findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -55,7 +57,7 @@ public void onClick(View v) {
}
});
- RefreshLayout refreshLayout = (RefreshLayout) root.findViewById(R.id.refreshLayout);
+ RefreshLayout refreshLayout = root.findViewById(R.id.refreshLayout);
refreshLayout.setRefreshHeader(new ClassicsHeader(getContext()).setSpinnerStyle(SpinnerStyle.FixedBehind).setPrimaryColorId(R.color.colorPrimary).setAccentColorId(android.R.color.white));
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
@@ -70,13 +72,7 @@ public void run() {
}
});
- /*
- * 重点:设置 srlEnableNestedScrolling 为 false 才可以兼容 BottomSheet
- * notice:Set srlEnableNestedScrolling to false to be compatible with BottomSheet
- */
- refreshLayout.setEnableNestedScroll(false);
-
- RecyclerView recyclerView = (RecyclerView) root.findViewById(R.id.recyclerView);
+ RecyclerView recyclerView = root.findViewById(R.id.recyclerView);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), VERTICAL));
@@ -90,15 +86,15 @@ protected void onBindViewHolder(SmartViewHolder holder, Void model, int position
}
});
- ((ViewGroup)refreshLayout.getLayout().getParent()).removeView(refreshLayout.getLayout());
- BottomSheetDialog dialog=new BottomSheetDialog(getContext());
+ BottomSheetDialog dialog = new BottomSheetDialog(getContext());
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
getActivity().finish();
}
});
- dialog.setContentView(refreshLayout.getLayout());
+ dialog.setContentView(root);
+ dialog.setCancelable(false);
dialog.show();
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/fragment/example/DisallowInterceptExampleFragment.java b/app/src/main/java/com/scwang/refreshlayout/fragment/example/DisallowInterceptExampleFragment.java
new file mode 100644
index 00000000..edecd057
--- /dev/null
+++ b/app/src/main/java/com/scwang/refreshlayout/fragment/example/DisallowInterceptExampleFragment.java
@@ -0,0 +1,112 @@
+package com.scwang.refreshlayout.fragment.example;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.*;
+import android.util.AttributeSet;
+import android.view.*;
+import com.scwang.refreshlayout.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class DisallowInterceptExampleFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_example_disallow_intercept, container, false);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View root, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(root, savedInstanceState);
+
+ final Toolbar toolbar = root.findViewById(R.id.toolbar);
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getActivity().finish();
+ }
+ });
+ }
+
+ public static class MoveView extends AppCompatTextView {
+
+
+ //移动的阈值
+ private static final int TOUCH_SLOP = 20;
+ /**
+ * 点击按下事件 X坐标记录
+ */
+ private float mLastMotionX;
+ /**
+ * 点击按下事件 Y坐标记录
+ */
+ private float mLastMotionY;
+
+ private boolean mDelay;
+
+ /**
+ * 长按模式的标记位
+ */
+ private boolean isLongPress;
+
+ /**
+ * 长按的runnable
+ */
+ private Runnable mLongPressRunnable = new Runnable() {
+ @Override
+ public void run() {
+ isLongPress = true;
+ mDelay = false;
+ getParent().requestDisallowInterceptTouchEvent(true);
+ }
+ };
+
+ public MoveView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ float x = event.getX();
+ float y = event.getY();
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ mLastMotionX = x;
+ mLastMotionY = y;
+ postDelayed(mLongPressRunnable, ViewConfiguration.getLongPressTimeout());
+ mDelay = true;
+ break;
+ case MotionEvent.ACTION_MOVE:
+ if (isLongPress) {
+ //长按状态下.绘制时间和轴线
+ setText("x=" + x + ";y=" + y);
+ } else if (mDelay && (Math.abs(mLastMotionX - x) > TOUCH_SLOP
+ || Math.abs(mLastMotionY - y) > TOUCH_SLOP)) {
+ //移动超过阈值,则表示移动了
+ removeCallbacks(mLongPressRunnable);
+ mDelay = false;
+ }
+ break;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ default:
+ //释放了
+ removeCallbacks(mLongPressRunnable);
+ isLongPress = false;
+ mDelay = false;
+ invalidate();
+ break;
+ }
+ return true;
+ }
+
+ }
+}
diff --git a/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragment.java b/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragment.java
index 208b92a2..35bd1e13 100644
--- a/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragment.java
+++ b/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragment.java
@@ -70,7 +70,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
public void onViewCreated(@NonNull View root, @Nullable Bundle savedInstanceState) {
super.onViewCreated(root, savedInstanceState);
- final Toolbar toolbar = (Toolbar)root.findViewById(R.id.toolbar);
+ final Toolbar toolbar = root.findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -78,16 +78,16 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout) root.findViewById(refreshLayout);
+ mRefreshLayout = root.findViewById(refreshLayout);
mRefreshLayout.setRefreshHeader(new ClassicsHeader(getContext()).setSpinnerStyle(SpinnerStyle.FixedBehind).setPrimaryColorId(R.color.colorPrimary).setAccentColorId(android.R.color.white));
mRefreshLayout.setOnRefreshListener(this);
- mRecyclerView = (RecyclerView) root.findViewById(recyclerView);
+ mRecyclerView = root.findViewById(recyclerView);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), VERTICAL));
- mLoadingLayout = (LoadingLayout) root.findViewById(R.id.loading);
+ mLoadingLayout = root.findViewById(R.id.loading);
mLoadingLayout.showEmpty();
/*主动演示刷新*/
diff --git a/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentInner.java b/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentInner.java
index f8ae9861..17d114e2 100644
--- a/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentInner.java
+++ b/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentInner.java
@@ -31,6 +31,7 @@
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.scwang.smartrefresh.layout.listener.SimpleMultiPurposeListener;
+import java.util.ArrayList;
import java.util.Arrays;
import static android.R.layout.simple_list_item_2;
@@ -48,6 +49,7 @@ public class EmptyLayoutExampleFragmentInner extends Fragment implements Adapter
private RecyclerView mRecyclerView;
private RefreshLayout mRefreshLayout;
private static boolean mIsNeedDemo = true;
+ private BaseRecyclerAdapter
- mAdapter;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -58,7 +60,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
public void onViewCreated(@NonNull View root, @Nullable Bundle savedInstanceState) {
super.onViewCreated(root, savedInstanceState);
- final Toolbar toolbar = (Toolbar)root.findViewById(R.id.toolbar);
+ final Toolbar toolbar = root.findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -66,21 +68,29 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout) root.findViewById(refreshLayout);
+ mRefreshLayout = root.findViewById(refreshLayout);
mRefreshLayout.setRefreshHeader(new ClassicsHeader(getContext()).setSpinnerStyle(SpinnerStyle.FixedBehind).setPrimaryColorId(R.color.colorPrimary).setAccentColorId(android.R.color.white));
mRefreshLayout.setOnRefreshListener(this);
- mRecyclerView = (RecyclerView) root.findViewById(recyclerView);
+ mRecyclerView = root.findViewById(recyclerView);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), VERTICAL));
+ mRecyclerView.setAdapter(mAdapter = new BaseRecyclerAdapter
- (new ArrayList
- (), simple_list_item_2,EmptyLayoutExampleFragmentInner.this) {
+ @Override
+ protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
+ holder.text(android.R.id.text1, model.name());
+ holder.text(android.R.id.text2, model.name);
+ holder.textColorId(android.R.id.text2, R.color.colorTextAssistant);
+ }
+ });
mEmptyLayout = root.findViewById(R.id.empty);
- ImageView image = (ImageView) root.findViewById(R.id.empty_image);
+ ImageView image = root.findViewById(R.id.empty_image);
image.setImageResource(R.drawable.ic_empty);
- TextView empty = (TextView) root.findViewById(R.id.empty_text);
+ TextView empty = root.findViewById(R.id.empty_text);
empty.setText("暂无数据下拉刷新");
/*主动演示刷新*/
@@ -111,14 +121,7 @@ public void onRefresh(@NonNull RefreshLayout refreshLayout) {
mRefreshLayout.getLayout().postDelayed(new Runnable() {
@Override
public void run() {
- mRecyclerView.setAdapter(new BaseRecyclerAdapter
- (Arrays.asList(Item.values()), simple_list_item_2,EmptyLayoutExampleFragmentInner.this) {
- @Override
- protected void onBindViewHolder(SmartViewHolder holder, Item model, int position) {
- holder.text(android.R.id.text1, model.name());
- holder.text(android.R.id.text2, model.name);
- holder.textColorId(android.R.id.text2, R.color.colorTextAssistant);
- }
- });
+ mAdapter.refresh(Arrays.asList(Item.values()));
mRefreshLayout.finishRefresh();
mEmptyLayout.setVisibility(View.GONE);
}
diff --git a/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentOuter.java b/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentOuter.java
index 04e2d3c3..8a6ed357 100644
--- a/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentOuter.java
+++ b/app/src/main/java/com/scwang/refreshlayout/fragment/example/EmptyLayoutExampleFragmentOuter.java
@@ -55,7 +55,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
public void onViewCreated(@NonNull View root, @Nullable Bundle savedInstanceState) {
super.onViewCreated(root, savedInstanceState);
- final Toolbar toolbar = (Toolbar)root.findViewById(R.id.toolbar);
+ final Toolbar toolbar = root.findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -63,21 +63,21 @@ public void onClick(View v) {
}
});
- mRefreshLayout = (RefreshLayout) root.findViewById(refreshLayout);
+ mRefreshLayout = root.findViewById(refreshLayout);
mRefreshLayout.setRefreshHeader(new ClassicsHeader(getContext()).setSpinnerStyle(SpinnerStyle.FixedBehind).setPrimaryColorId(R.color.colorPrimary).setAccentColorId(android.R.color.white));
mRefreshLayout.setOnRefreshListener(this);
- mRecyclerView = (RecyclerView) root.findViewById(recyclerView);
+ mRecyclerView = root.findViewById(recyclerView);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), VERTICAL));
mEmptyLayout = root.findViewById(R.id.empty);
- ImageView image = (ImageView) root.findViewById(R.id.empty_image);
+ ImageView image = root.findViewById(R.id.empty_image);
image.setImageResource(R.drawable.ic_empty);
- TextView empty = (TextView) root.findViewById(R.id.empty_text);
+ TextView empty = root.findViewById(R.id.empty_text);
empty.setText("暂无数据点击刷新");
((View)empty.getParent()).setOnClickListener(new View.OnClickListener() {
diff --git a/app/src/main/java/com/scwang/refreshlayout/fragment/example/FlexBoxLayoutManagerFragment.java b/app/src/main/java/com/scwang/refreshlayout/fragment/example/FlexBoxLayoutManagerFragment.java
new file mode 100644
index 00000000..d3c68e66
--- /dev/null
+++ b/app/src/main/java/com/scwang/refreshlayout/fragment/example/FlexBoxLayoutManagerFragment.java
@@ -0,0 +1,98 @@
+package com.scwang.refreshlayout.fragment.example;
+
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import com.google.android.flexbox.AlignItems;
+import com.google.android.flexbox.FlexDirection;
+import com.google.android.flexbox.FlexWrap;
+import com.google.android.flexbox.FlexboxLayoutManager;
+import com.scwang.refreshlayout.R;
+import com.scwang.refreshlayout.adapter.BaseRecyclerAdapter;
+import com.scwang.refreshlayout.adapter.SmartViewHolder;
+import com.scwang.smartrefresh.layout.util.SmartUtil;
+
+import java.util.Arrays;
+import java.util.Random;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class FlexBoxLayoutManagerFragment extends Fragment {
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_flexbox_layout_manager, container, false);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View root, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(root, savedInstanceState);
+
+
+ final Toolbar toolbar = root.findViewById(R.id.toolbar);
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getActivity().finish();
+ }
+ });
+
+ FlexboxLayoutManager manager = new FlexboxLayoutManager(root.getContext());
+ //设置主轴排列方式
+ manager.setFlexDirection(FlexDirection.ROW);
+ //设置是否换行
+ manager.setFlexWrap(FlexWrap.WRAP);
+ manager.setAlignItems(AlignItems.STRETCH);
+
+ RecyclerView recyclerView = root.findViewById(R.id.recyclerView);
+ recyclerView.setLayoutManager(manager);
+ recyclerView.setClipToPadding(false);
+ recyclerView.setPadding(SmartUtil.dp2px(2.5f),SmartUtil.dp2px(2.5f),SmartUtil.dp2px(2.5f),SmartUtil.dp2px(2.5f));
+
+ recyclerView.setAdapter(new BaseRecyclerAdapter