|
|
@@ -55,6 +55,7 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
private CoordinatorLayout layoutCoordinator;
|
|
|
|
|
|
boolean isFirst = true;
|
|
|
+ private boolean isLockCategory = false; // 카테고리 변경을 하지 못하게 설정
|
|
|
|
|
|
@Override
|
|
|
protected View onAfterCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
|
@@ -195,6 +196,17 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
OverScrollDecoratorHelper.setUpOverScroll(recyclerView, OverScrollDecoratorHelper.ORIENTATION_VERTICAL);
|
|
|
|
|
|
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
|
|
+
|
|
|
+ boolean mScrolled = false;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
|
|
+ Log.d("APP# BookMarkListFragment | onScrollStateChanged", "|" + " newState: " + newState);
|
|
|
+ if (newState == RecyclerView.SCROLL_STATE_IDLE && mScrolled) {
|
|
|
+ mScrolled = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
|
|
|
int firstIndex = layoutManager.findFirstVisibleItemPosition();
|
|
|
@@ -202,6 +214,10 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
int lastIndex = layoutManager.findLastVisibleItemPosition();
|
|
|
int lastCompIndex = layoutManager.findLastCompletelyVisibleItemPosition();
|
|
|
|
|
|
+ if (dy != 0) {
|
|
|
+ mScrolled = true;
|
|
|
+ }
|
|
|
+
|
|
|
// 처음 화면에 완벽히 보여지면 선택
|
|
|
// 스크롤 방향에 따라서 새로 보여지는 쪽을 기준으로 선택한다.
|
|
|
if (dy < 0) {
|
|
|
@@ -210,10 +226,10 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
else {
|
|
|
presenter.onCategoryIndexChanged(lastCompIndex);
|
|
|
}
|
|
|
- Log.i("APP# BookMarkListFragment | onScrollStateChanged", "|" + "first: " + firstIndex);
|
|
|
- Log.i("APP# BookMarkListFragment | onScrollStateChanged", "|" + "first comp: " + firstCompIndex);
|
|
|
- Log.i("APP# BookMarkListFragment | onScrollStateChanged", "|" + "last: " + lastIndex);
|
|
|
- Log.i("APP# BookMarkListFragment | onScrollStateChanged", "|" + "last comp: " + lastCompIndex);
|
|
|
+// Log.d("APP# BookMarkListFragment | onScrollStateChanged", "|" + "first: " + firstIndex);
|
|
|
+// Log.d("APP# BookMarkListFragment | onScrollStateChanged", "|" + "first comp: " + firstCompIndex);
|
|
|
+// Log.d("APP# BookMarkListFragment | onScrollStateChanged", "|" + "last: " + lastIndex);
|
|
|
+// Log.d("APP# BookMarkListFragment | onScrollStateChanged", "|" + "last comp: " + lastCompIndex);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -254,7 +270,10 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
View dotView = findViewById(ResourceUtil.getId("circle_" + i));
|
|
|
final int index = i;
|
|
|
textView.setOnClickListener(v -> {
|
|
|
+ setCategoryFocus(index);
|
|
|
+ isLockCategory = true;
|
|
|
presenter.onEvent(new Event.Builder(Event.CATEGORY_CLICK).index(index).build());
|
|
|
+ isLockCategory = false;
|
|
|
});
|
|
|
if (categories[i]) {
|
|
|
textView.setVisibility(View.VISIBLE);
|
|
|
@@ -278,7 +297,12 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
|
|
|
@Override
|
|
|
public void setCategoryFocus(int categoryIndex) {
|
|
|
- Log.w("APP# BookMarkListFragment | setCategoryFocus", "|" + " categoryIndex: " + categoryIndex);
|
|
|
+ if (isLockCategory) {
|
|
|
+ Log.d("APP# BookMarkListFragment | setCategoryFocus", "|" + " category is locked");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d("APP# BookMarkListFragment | setCategoryFocus", "|" + " categoryIndex: " + categoryIndex);
|
|
|
int len = 5;
|
|
|
for (int i = 0; i < len; ++i) {
|
|
|
TextView textView = findViewById(ResourceUtil.getId("text_view_category_" + i));
|
|
|
@@ -297,9 +321,10 @@ public class BookMarkListFragment extends FragmentBase<BookMarkListPresenter> im
|
|
|
@Override
|
|
|
public void scrollToAnchor(int itemIndex) {
|
|
|
|
|
|
- recyclerView.smoothScrollToPosition(itemIndex);
|
|
|
+ recyclerView.scrollToPosition(itemIndex);
|
|
|
|
|
|
// appbar 를 스크롤 시키기위해서 가상 이벤트를 전송한다.
|
|
|
ViewParentCompat.onStartNestedScroll(layoutCoordinator, recyclerView, recyclerView, ViewCompat.SCROLL_AXIS_VERTICAL, ViewCompat.TYPE_NON_TOUCH);
|
|
|
+ ViewParentCompat.onNestedPreScroll(layoutCoordinator, recyclerView, 0, 1000, new int[2], ViewCompat.TYPE_NON_TOUCH);
|
|
|
}
|
|
|
}
|