마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

구글 예제소스 코드리뷰 부탁드립니다

0 추천

SwipeRefreshLayout 기능을 사용하면서 ListView 스크롤 기능을 먹어버리는 바람에 구글링을 하다가

구글에서 제공한 SwipeRefreshLayout 클래스를 custom 하는 예제 소스를 찾아서 해결했는데요

어떻게 해결된건지 소스 분석 하고있는데 막혀서 코드리뷰를 부탁하고자 질문드립니다

 public void setSwipeableChildren(final int... ids) {
        assert ids != null;

        mSwipeableChildren = new View[ids.length];
        for (int i = 0; i < ids.length; i++) {
            mSwipeableChildren[i] = findViewById(ids[i]);
        }
    }

    @Override
    public boolean canChildScrollUp() {

        if(mSwipeableChildren != null && mSwipeableChildren.length > 0) {
            for(View view : mSwipeableChildren) {
                if(view != null && view.isShown() && !canViewScrollUp(view)) {
                    return false;
                }
            }
        }
        return true;
    }

    private static boolean canViewScrollUp(View view) {
        if(Build.VERSION.SDK_INT >= 14) {
            return ViewCompat.canScrollVertically(view, -1);
        } else {
            if(view instanceof AbsListView) {
                final AbsListView listView = (AbsListView) view;
                return listView.getChildCount() > 0 &&
                        (listView.getFirstVisiblePosition() > 0
                        || listView.getChildAt(0).getTop() < listView.getPaddingTop());
            } else {
                return view.getScaleY() > 0;
            }
        }
    }

 

우랴 (3,680 포인트) 님이 2017년 3월 29일 질문
저걸다 리뷰해달라는건가요?>
어떤부분이 이해안가시는지?
canViewScrollUp() 메서드 이해가 잘 안됩니다 ㅠㅠ

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...