Skip to content

Commit e647aea

Browse files
authored
Merge pull request yuyakaido#259 from yuyakaido/issue/251
Avoid removing views when rewinding
2 parents dd861dd + 48bdbad commit e647aea

File tree

1 file changed

+3
-19
lines changed

1 file changed

+3
-19
lines changed

cardstackview/src/main/java/com/yuyakaido/android/cardstackview/internal/CardStackSmoothScroller.java

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import android.view.View;
44

5-
import androidx.annotation.NonNull;
6-
import androidx.recyclerview.widget.RecyclerView;
7-
85
import com.yuyakaido.android.cardstackview.CardStackLayoutManager;
96
import com.yuyakaido.android.cardstackview.CardStackListener;
107
import com.yuyakaido.android.cardstackview.RewindAnimationSetting;
118

9+
import androidx.annotation.NonNull;
10+
import androidx.recyclerview.widget.RecyclerView;
11+
1212
public class CardStackSmoothScroller extends RecyclerView.SmoothScroller {
1313

1414
public enum ScrollType {
@@ -37,22 +37,6 @@ protected void onSeekTargetStep(
3737
@NonNull Action action
3838
) {
3939
if (type == ScrollType.AutomaticRewind) {
40-
// ■ 概要
41-
// ここでViewのRemoveを行わないとRewindが無限ループに陥ってしまう
42-
// ■ 再現手順
43-
// 1. `manager.removeAllViews();`をコメントアウト
44-
// 2. AutomaticSwipeを1度実行する
45-
// 3. AutomaticRewindを1度実行する
46-
// 4. AutomaticSwipeを1度実行する
47-
// 5. AutomaticRewindを1度実行する -> これが無限ループに陥ってしまう
48-
// ■ 調査結果
49-
// SmoothScroller.onStartが呼ばれたタイミングでは、Rewind対象のViewが見つからない(正常挙動)
50-
// Rewind処理開始後のupdateで対象のViewが追加されるはずだが、現状の実装では正常に追加されない
51-
// 結果として、Rewind対象のViewが永遠に見つからずに無限ループに陥ってしまう
52-
// ■ 副作用
53-
// ViewのRemoveを行っているため、表示対象となっているViewの再生成が実行されてしまう
54-
// これによってパフォーマンス上の問題が発生する可能性がある
55-
manager.removeAllViews();
5640
RewindAnimationSetting setting = manager.getCardStackSetting().rewindAnimationSetting;
5741
action.update(
5842
-getDx(setting),

0 commit comments

Comments
 (0)