Skip to content

Commit a277696

Browse files
committed
enable to keep header/footer when refreshing/loading.
1. support for most views. 2. dispatch MotionEvent directly. 3. keep header/footer. 4. some bugs remain.
1 parent 388b0ef commit a277696

File tree

12 files changed

+675
-124
lines changed

12 files changed

+675
-124
lines changed

TODO_list.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
- 频繁设置禁止下拉和加载失效问题?(增加RefreshMode类)
88
- fixedHeader ontouch事件无响应,需手动设置clickable=true
99
- setOverScrollTopShow(false)/setOverScrollBottomShow(false)/setOverScrollRefreshShow(false) 设置无效 **done**
10+
- 兼容nestedscroll
11+
- 状态保持问题
12+
- onFinishRefresh不回调问题
13+
- 刷新时禁止加载更多,去加载更多底部空白没回去
14+
- 空白View下拉无效
15+
- 不停下拉导致head悬浮
1016

1117

1218

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<activity android:name=".WebActivity"/>
2828
<activity android:name=".NestedLayoutActivity"/>
2929
<activity android:name=".CoordinateActivity"/>
30+
<activity android:name=".TestActivity"/>
3031
</application>
3132

3233
</manifest>

app/src/main/java/com/lcodecore/twinklingrefreshlayout/MainActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public void init() {
2222
findViewById(R.id.bt_story).setOnClickListener(this);
2323
findViewById(R.id.bt_enjoy).setOnClickListener(this);
2424
findViewById(R.id.bt_coordinate).setOnClickListener(this);
25+
findViewById(R.id.bt_test).setOnClickListener(this);
2526
}
2627

2728
@Override
@@ -48,6 +49,9 @@ public void onClick(View v) {
4849
case R.id.bt_coordinate:
4950
startActivity(new Intent(MainActivity.this,CoordinateActivity.class));
5051
break;
52+
case R.id.bt_test:
53+
startActivity(new Intent(MainActivity.this,TestActivity.class));
54+
break;
5155
}
5256
}
5357
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.lcodecore.twinklingrefreshlayout;
2+
3+
import android.os.Bundle;
4+
import android.os.Handler;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.view.View;
7+
import android.widget.AdapterView;
8+
import android.widget.GridView;
9+
10+
import com.lcodecore.tkrefreshlayout.RefreshListenerAdapter;
11+
import com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout;
12+
import com.lcodecore.tkrefreshlayout.footer.LoadingView;
13+
import com.lcodecore.tkrefreshlayout.header.SinaRefreshView;
14+
import com.lcodecore.twinklingrefreshlayout.adapter.ScienceAdapter;
15+
import com.lcodecore.twinklingrefreshlayout.utils.ToastUtil;
16+
17+
/**
18+
* Created by lcodecore on 2017/3/27.
19+
*/
20+
21+
public class TestActivity extends AppCompatActivity {
22+
23+
private ScienceAdapter adapter;
24+
25+
@Override
26+
protected void onCreate(Bundle savedInstanceState) {
27+
super.onCreate(savedInstanceState);
28+
setContentView(R.layout.activity_science);
29+
setupGridView((GridView) findViewById(R.id.gridView));
30+
31+
findViewById(R.id.bt_back).setOnClickListener(new View.OnClickListener() {
32+
@Override
33+
public void onClick(View v) {
34+
finish();
35+
}
36+
});
37+
}
38+
39+
private void setupGridView(GridView gridView) {
40+
final TwinklingRefreshLayout refreshLayout = (TwinklingRefreshLayout) findViewById(R.id.refresh);
41+
SinaRefreshView headerView = new SinaRefreshView(this);
42+
headerView.setArrowResource(R.drawable.arrow);
43+
headerView.setTextColor(0xff745D5C);
44+
// TextHeaderView headerView = (TextHeaderView) View.inflate(this,R.layout.header_tv,null);
45+
refreshLayout.setHeaderView(headerView);
46+
47+
LoadingView loadingView = new LoadingView(this);
48+
refreshLayout.setBottomView(loadingView);
49+
50+
adapter = new ScienceAdapter();
51+
gridView.setAdapter(adapter);
52+
adapter.refreshCard();
53+
54+
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
55+
@Override
56+
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
57+
ToastUtil.show("item clicked!");
58+
}
59+
});
60+
61+
refreshLayout.setOnRefreshListener(new RefreshListenerAdapter() {
62+
@Override
63+
public void onRefresh(final TwinklingRefreshLayout refreshLayout) {
64+
// new Handler().postDelayed(new Runnable() {
65+
// @Override
66+
// public void run() {
67+
// adapter.refreshCard();
68+
// refreshLayout.finishRefreshing();
69+
// }
70+
// }, 2000);
71+
}
72+
73+
@Override
74+
public void onLoadMore(final TwinklingRefreshLayout refreshLayout) {
75+
new Handler().postDelayed(new Runnable() {
76+
@Override
77+
public void run() {
78+
adapter.loadMoreCard();
79+
refreshLayout.finishLoadmore();
80+
}
81+
}, 2000);
82+
}
83+
});
84+
}
85+
}

app/src/main/java/com/lcodecore/twinklingrefreshlayout/TkApplication.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public void onCreate() {
3939

4040
BlockCanary.install(this,new AppBlockCanaryContext()).start();
4141

42-
TwinklingRefreshLayout.setDefaultHeader(SinaRefreshView.class.getName());
43-
TwinklingRefreshLayout.setDefaultFooter(BallPulseView.class.getName());
42+
// TwinklingRefreshLayout.setDefaultHeader(SinaRefreshView.class.getName());
43+
// TwinklingRefreshLayout.setDefaultFooter(BallPulseView.class.getName());
4444
}
4545

4646
private class AppBlockCanaryContext extends BlockCanaryContext{}

app/src/main/res/layout/content_main.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@
6464
android:textAllCaps="false"
6565
android:text="Photo - CoordinateLayout-Beta - FloatRefresh"/>
6666

67+
<Button
68+
android:id="@+id/bt_test"
69+
android:layout_width="wrap_content"
70+
android:layout_height="wrap_content"
71+
android:layout_gravity="center"
72+
android:textAllCaps="false"
73+
android:text=" T E S T "/>
74+
6775

6876
<android.support.design.widget.TabLayout
6977
android:id="@+id/tab_layout"

0 commit comments

Comments
 (0)