Android scrollTo 와 scrollBy 방법 사용 분석
오프셋 을 가 져 온 후 scrollBy 를 사용 하여 View 를 이동 합 니 다.코드 는 다음 과 같 습 니 다.
int offsetX = x - lastX;
int offsetY = y - lastY;
scrollBy(offsetX, offsetY);
하지만 우리 가 View 를 끌 었 을 때 View 가 움 직 이지 않 았 다 는 것 을 알 게 될 것 입 니 다!우리 방법 이 틀 렸 나?사실 방법 은 틀 리 지 않 았 습 니 다.View 도 확실히 움 직 였 습 니 다.다만 그것 이 움 직 이 는 것 은 우리 가 움 직 이 고 싶 은 것 이 아 닙 니 다.scrollto,scrollBy 방법 은 View 의 content 를 이동 시 키 는 것 입 니 다.즉,View 의 내용 을 이동 시 키 는 것 입 니 다.ViewGroup 에서 scrollTo,scrollBy 방법 을 사용 하면 모든 하위 View 를 이동 하지만 View 에서 사용 하면 View 의 내용 을 이동 합 니 다.예 를 들 어 TextView,content 는 텍스트 입 니 다.ImageView,content 는 drawable 대상 입 니 다.위의 분석 을 통 해 왜 더 이상 View 에서 이 두 가지 방법 으로 이 View 를 끌 수 없 는 지 알 수 있 을 것 이 라 고 믿 습 니 다.그러면 우 리 는 모든 View Group 에서 scrollBy 방법 을 사용 하여 하위 View 를 이동 해 야 합 니 다.코드 는 다음 과 같 습 니 다.
((View) getParent()).scrollBy(offsetX, offsetY);
그러나 View 를 다시 끌 면 View 가 움 직 였 지만 움 직 이 고 있 는 것 을 발견 할 수 있 습 니 다.우리 가 원 하 는 터치 포인트 에 따라 움 직 이 는 것 이 아 닙 니 다.이곳 에 서 는 먼저 보기 이동 에 대한 지식 을 알 아야 한다.여러분 이 이 문 제 를 이해 할 때 핸드폰 화면 이 중 공의 캡 플레이트 라 고 상상 해 보 세 요.캡 플레이트 아래 는 커 다란 캔버스,즉 우리 가 표시 하고 자 하 는 보기 입 니 다.이 캡 플레이트 를 캔버스 어 딘 가 에 덮 었 을 때 중간 사각형 을 통 해 우 리 는 핸드폰 화면 에 보 기 를 표시 하려 고 하 는 것 을 보 았 고 캔버스 에 있 는 다른 곳 의 보 기 는 캡 플레이트 에 덮 여 보이 지 않 았 다.우리 의 보 기 는 이 예 와 매우 유사 합 니 다.우 리 는 보 기 를 보지 못 했다 고 해서 그것 이 존재 하지 않 는 것 이 아니 라 화면 밖 에 있 을 수도 있 습 니 다.scrollBy 방법 을 호출 할 때 바깥 의 캡 플레이트 가 이동 하고 있다 고 상상 할 수 있 습 니 다.이렇게 말 하면 추상 적 이 고 구체 적 인 예 를 볼 수 있 습 니 다.다음 그림:중간의 사각형 은 화면,즉 시각 영역 에 해당 합 니 다.뒤의 content 는 캔버스 에 해당 하 며 보 기 를 대표 합 니 다.보시 다시 피 보기 의 중간 부분 만 현재 시각 적 이 고 다른 부분 은 보이 지 않 습 니 다.보 이 는 영역 에서 우 리 는 Button 을 설 치 했 습 니 다.좌 표 는(20,10)입 니 다.
다음은 scrollBy 방법 을 사용 하여 캡 플레이트(화면,시각 영역)를 수평 방향 에서 X 축 정방 향(오른쪽)으로 20,수직 방향 에서 Y 축 정방 향(아래)으로 10 을 평평 하 게 이동 합 니 다.
scrollBy(20,10)를 설 치 했 지만 편 이 량 은 모두 X 축,Y 축 정방 향 의 정수 이지 만 화면의 시각 영역 에서 Button 은 X 축,Y 축 마이너스 방향 으로 이동 한 것 을 알 수 있다.이것 이 바로 참고 학과 의 선택 이 다 르 기 때문에 발생 하 는 서로 다른 효과 다.
위의 분석 을 통 해 scrollBy 의 매개 변수 dx 와 dy 를 인증서 로 설정 하면 content 는 좌표 마이너스 방향 으로 이동 하 는 것 을 알 수 있 습 니 다.scrollBy 의 인자 dx 와 dy 를 마이너스 로 설정 하면 content 는 좌표 축 정방 향 으로 이동 합 니 다.따라서 앞의 예 로 돌아 가 손가락 을 따라 움 직 이 는 효 과 를 실현 하려 면 오프셋 을 마이너스 로 바 꿔 야 합 니 다.코드 는 다음 과 같 습 니 다.
int offsetX = x - lastY;
int offsetY = y - lastY;
((View) getParent()).scrollBy(-offsetX,-offsetY);
다시 한 번 시험 해 보면 효과 가 앞의 몇 가지 방식 의 효과 와 같다 는 것 을 알 수 있다.이와 유사 하 게 절대 좌 표를 사용 할 때 도 scrollTo 방법 으로 이 효 과 를 실현 할 수 있다.총결산
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 안 드 로 이 드 scrollTo 와 scrollBy 방법 을 사용 하여 해석 한 것 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.