본문 바로가기

카테고리 없음

[안드로이드 링크정리] RecyclerView 사용 관련 링크 정리(smoothscrolltoposition && scroll speed control && disable touch events of RecyclerView)

반응형

리사이클러뷰를 활용하면서 자동 스크롤 기능을 사용함에 따라 참고한 링크이다.

 

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

 

반응형