RecyclerViewでOnScrolled()メソッドを呼び出して実行する回数を制限するにはどうすればよいですか?それには多くの条件があるため、このコードを非常に多く実行すると、アプリケーションの速度が低下します。
状態 :
if (dy < 0 && mLinearLayoutManager.findFirstCompletelyVisibleItemPosition() >= 10 && !mStateScrollTop) {
YoYo.with(Techniques.SlideInUp)
.duration(150)
.playOn(iv_go_to_top);
mStateScrollTop = true;
} else if (dy > 0 && mStateScrollTop) {
YoYo.with(Techniques.SlideOutDown)
.duration(150)
.playOn(iv_go_to_top);
mStateScrollTop = false;
}
私はこのようなことをします:
onScrolled() {
synchronized(this) {
if(!ready)
return;
else
ready = false;
}
// your current onScroll body
}
そして、ready
変数を設定するスレッドtrue
を定期的に起動します。このようなもの:
private void launchOnScrollThread() {
new Thread() {
@Override
public void run() {
// endless loop - maybe you would like to put some condition to end the loop
for(;;) {
ready = true;
Thread.sleep(100); // wait here for 100 milliseconds
}
}
}.start();
}
これにより、現在のコードがonScroll
最大で100ミリ秒ごとに実行されるようになり、速度が向上します。一種の疑似コードであることを申し訳ありませんが、それがあなたにとって意味があり、役立つことを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加