在安卓系统中同时滚动2个不同的网络视图



我很难让Web视图同时滚动。一个web视图有效,但另一个无效。它们中的任何一个都不会同时工作。我希望有人能帮忙。我希望能够滚动其中一个网络视图,并让它更改另一个。

private WebView englishWebView;
private WebView koreanWebView;
Button windowImageView;
Button windowImageViewKorean;
int counter = 0;
int scrollXEnglish;
int scrollYEnglish;
int scrollXKorean;
int scrollYKorean;
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);View decorView = getWindow().getDecorView();
setContentView(R.layout.activity_main);
//information for Korean part
koreanWebView = findViewById(R.id.korean_web_view);
koreanWebView.setWebViewClient(new WebViewClient());
koreanWebView.getSettings().setJavaScriptEnabled(true);
koreanWebView.getSettings().setDomStorageEnabled(true);
koreanWebView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
koreanWebView.loadUrl("https://m.comic.naver.com/webtoon/detail.nhn?titleId=183559&no=1&week=mon");


//information for English window
englishWebView = findViewById(R.id.english_web_view);
englishWebView.setWebViewClient(new WebViewClient());
englishWebView.getSettings().setJavaScriptEnabled(true);
englishWebView.getSettings().setDomStorageEnabled(true);
englishWebView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
englishWebView.loadUrl("https://www.webtoons.com/en/fantasy/tower-of-god/season-1-ep-0/viewer?title_no=95&episode_no=1");

englishWebView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
scrollXEnglish  = englishWebView.getScrollX(); // for horizontalScrollView
scrollYEnglish = englishWebView.getScrollY(); // for verticalScrollView
// DO SOMETHING WITH THE SCROLL COORDINATES
koreanWebView.scrollTo(scrollXEnglish, scrollYEnglish);
}
});
koreanWebView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {

scrollXKorean = koreanWebView.getScrollX();
scrollYKorean = koreanWebView.getScrollY();

// DO SOMETHING WITH THE SCROLL COORDINATES
englishWebView.scrollTo(scrollXKorean, scrollYKorean);
}
});
}

}

所以。。。。我终于找到了答案。I它看起来有点像这个
我使用了此处的可观察网络视图。

然后我必须添加MotionTouch事件,这样它就不会创建一个呼叫听众的循环。

koreanWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
koreanWebViewTouched = true;
englishWebViewTouched = false;
// Do what you want
return true;
}
return false;
}
});

englishWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
koreanWebViewTouched = false;
englishWebViewTouched = true;
// Do what you want
return true;
}
return false;
}
});
koreanWebView.setOnScrollChangedCallback(new ObservableWebView.OnScrollChangedCallback(){
public void onScroll(int l, int t){
if (koreanWebViewTouched){
englishWebView.scrollTo(0, t);
//Do stuff
Log.d("did","We Scrolled etc...");
}}
});
englishWebView.setOnScrollChangedCallback(new ObservableWebView.OnScrollChangedCallback(){
public void onScroll(int l, int t){
//   t = scrollYKorean;
if (englishWebViewTouched){
koreanWebView.scrollTo(0, t);
//Do stuff
Log.d("did","We Scrolled etc...");}
}
});

它运行得很好,但不像没有它的卷轴那样流畅。我想是因为它不起作用,但可能会解决这个问题,稍后会解决的。

最新更新