카테고리 없음
[안드로이드 링크정리] RecyclerView 사용 관련 링크 정리(smoothscrolltoposition && scroll speed control && disable touch events of RecyclerView)
hw00173
2019. 12. 8. 17:34
반응형
리사이클러뷰를 활용하면서 자동 스크롤 기능을 사용함에 따라 참고한 링크이다.
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
android 어떻게하면 recyclerView.smoothScrollToPosition(위치)의 스크롤 속도를 제어 할 수 있습니까?
저는 리사이클 러 뷰를 가지고 있습니다... 그리고 부드러운 스 크롤 다운을 원하고 사용자에게 전체 내용을 보여주기 위해 프로그래밍 방식으로 스크롤 업합니다. final int height=recyclerView.getChildAt(0).getHeight(); recyclerView.smoothScrollToPosition(height)
code-examples.net
Web, Android, iOS 개발 문의 및 앱 웹 제작 문의
Email : funidea2020@naver.com
https://funidea.co.kr/
https://funidea.co.kr/
AI 챗봇 & 사물인식 사물 인식, 인공지능 챗봇 등 Smart한 인공지능 기술을 통해 반복 업무를 줄여 보세요. 위치 기반 서비스 GPS 기능을 활용하여 현재 위치를 기준으로 주변 정보(은행, 음식점, 주�
funidea.co.kr
여성 신체 사이즈 기반 상품 추천 서비스!
나에게 딱 맞은 골라보자! Fit Me !
https://fit-me.kr/
핏미 - 사이즈 고민 없는 여성 쇼핑앱
더이상의 사이즈 고민은 그만! 수많은 여성 쇼핑몰을 한눈에! - 핏미
fit-me.kr
반응형