반응형
리사이클러뷰를 활용하면서 자동 스크롤 기능을 사용함에 따라 참고한 링크이다.
1. 리사이클러뷰 터치 동작 방지
-자동적으로 뷰가 이동되도록 하면서 사용자의 터치로 인한 동작을 방지 하기 위해 사용한 코드이다.
//리사이클러뷰를 터치하여 동작하는 것을 막는다.
recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
return true;
}
});
2. 리사이클러뷰에서 뷰 포지션을 이동할 떄 속도를 제어하기 위해 사용한 CustomLinearLayoutManager이다.
새로운 VariableScroolSpeedLinearLayoutManger.java 로 된 클래스를 만들고 해당 클래스를 호출해서 사용하면
내가 원하는 속도로 스크롤 할 수 있다.
public class VariableScrollSpeedLinearLayoutManager extends LinearLayoutManager {
private final float factor;
public VariableScrollSpeedLinearLayoutManager(Context context, float factor) {
super(context);
this.factor = factor;
}
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
final LinearSmoothScroller linearSmoothScroller = new LinearSmoothScroller(recyclerView.getContext()) {
@Override
public PointF computeScrollVectorForPosition(int targetPosition) {
return VariableScrollSpeedLinearLayoutManager.this.computeScrollVectorForPosition(targetPosition);
}
@Override
protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
return super.calculateSpeedPerPixel(displayMetrics) * factor;
}
};
linearSmoothScroller.setTargetPosition(position);
startSmoothScroll(linearSmoothScroller);
}
}
다음과 같이 리사이클러뷰를 사용하는 부분에서 사용하면 속도 조절이 가능해진다.
//recyclerView가 smoothScrolltoPosition(부드럽게 다음 포지션으로 이동) 할 때
//속도 조절을 할 수 있는 Custom_linearLayoutManager
//factor을 이용해 속도를 조절 할 수 있다. ex)factor가 4일 경우 일반 동작 속도보다 4배 느림.
linearLayoutManager = new VariableScrollSpeedLinearLayoutManager(getActivity(), 4);
//리사이클러뷰 동작이 가로로 동작하게끔 한다.
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-해당 링크를 보면 다양한 방법으로 속도 조절하는 법을 제공하고 있으므로, 해당 링크에서 원하는 방법을 찾아서 사용하거나 위의 코드를 이용하면 될 것 같다.
https://code-examples.net/ko/q/1ebf91c
Web, Android, iOS 개발 문의 및 앱 웹 제작 문의
Email : funidea2020@naver.com
https://funidea.co.kr/
여성 신체 사이즈 기반 상품 추천 서비스!
나에게 딱 맞은 골라보자! Fit Me !
https://fit-me.kr/
반응형