Skip to content

Commit 0bc6a97

Browse files
committed
优化细节 提供 scrollTop方法
1 parent 6a47023 commit 0bc6a97

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

app/src/main/java/com/example/administrator/webviewlist/MainActivity.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ protected void onCreate(Bundle savedInstanceState) {
2727
recyclerView = (RecyclerView) findViewById(R.id.recycler);
2828
recyclerView.setLayoutManager(new LinearLayoutManager(this));
2929
final ScrollWebView scrollWebView = new ScrollWebView(this);
30-
scrollWebView.loadUrl("https://app.4c.cn/web/details?nid=244&systemType=android&phoneName=E6683&phoneCode=33e129936a25fb1ac94f351e2fea6076");
30+
scrollWebView.loadUrl("http://wap.4c.cn");
3131
WebViewAdapter webViewAdapter = new WebViewAdapter(new MyAdapter(), scrollWebView);
3232
webScrollLayout.setRecyclerviewScrollBottomListener(new WebScrollLayout.RecyclerviewScrollBottom() {
3333
@Override
@@ -40,11 +40,8 @@ public void onScrollBottom() {
4040
button.setOnClickListener(new View.OnClickListener() {
4141
@Override
4242
public void onClick(View view) {
43-
recyclerView.scrollToPosition(0);
44-
scrollWebView.scrollTo(0, 0);
43+
webScrollLayout.scrollTop();
4544

46-
47-
// recyclerView.smoothScrollToPosition(20);
4845
}
4946
});
5047
}

webviewscroll/src/main/java/com/example/webviewscroll/WebScrollLayout.java

+25-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.util.AttributeSet;
77
import android.util.Log;
88
import android.view.MotionEvent;
9+
import android.view.ViewConfiguration;
910
import android.webkit.WebView;
1011
import android.widget.LinearLayout;
1112

@@ -90,10 +91,6 @@ public void onSChanged(int l, int t, int oldl, int oldt) {
9091

9192
}else {
9293
System.out.println("WebView滑动到了不是底端");
93-
if (isScrollUp && mDispatchWebView.isScroll()) {
94-
mDispatchWebView.ignoreTouchCancel(true);
95-
isIntercept = true;
96-
}
9794
}
9895
}
9996
});
@@ -144,11 +141,12 @@ public boolean dispatchTouchEvent(MotionEvent ev) {
144141
case MotionEvent.ACTION_MOVE:
145142

146143
y2 = ev.getY();
147-
if (y1 - y2 > 50) {
148-
isScrollUp = true;
144+
if (y1 - y2 >ViewConfiguration.get(getContext()).getScaledTouchSlop()) {
145+
isScrollUp = true;
149146

150147
}
151-
if (y2 - y1 > 50) {
148+
if (y2 - y1 > ViewConfiguration.get(getContext()).getScaledTouchSlop()) {
149+
152150
isScrollUp = false;
153151

154152
}
@@ -201,4 +199,24 @@ public interface RecyclerviewScrollBottom {
201199
void onScrollBottom();
202200

203201
}
202+
public void scrollTop(){
203+
if (recyclerView!=null&&mDispatchWebView!=null){
204+
recyclerView.scrollToPosition(0);
205+
mDispatchWebView.scrollTo(0, 0);
206+
if (mDispatchWebView.isScroll()){
207+
mDispatchWebView.ignoreTouchCancel(true);
208+
isIntercept = true;
209+
}
210+
}
211+
212+
}
213+
214+
@Override
215+
protected void onDetachedFromWindow() {
216+
Log.d("销毁","销毁");
217+
super.onDetachedFromWindow();
218+
mDispatchWebView.destroy();
219+
mDispatchWebView=null;
220+
recyclerView=null;
221+
}
204222
}

0 commit comments

Comments
 (0)