오픈 소스 라 이브 러 리 배 너 는 어떻게 무한 윤 방 을 실현 합 니까?
class BannerPagerAdapter extends PagerAdapter {
List list;
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
int realPosition = position%list.size();
return list.get(realPosition);
}
}
오픈 소스 라 이브 러 리 배 너 를 사용 한 후,이 라 이브 러 리 는 무한 라운드 방송 을 처리 하여 매우 잘 쓴 것 같다.
이 라 이브 러 리 는 좌우 무한 으로 미 끄 러 질 수도 있 고,자동 으로 좌우 무한 윤방 할 수도 있다.
우선 그 대체적인 원 리 를 알 아 보 자.
데이터 의 앞 뒤 양쪽 끝 에 각각 데 이 터 를 추가 합 니 다.전단 에 추 가 된 것 은 마지막 날 데이터 이 고 끝 에 추 가 된 것 은 첫 번 째 데이터 입 니 다.그림 참조:
C 에서 D 로 미 끄 러 졌 을 때 ViewPager.OnPageChange Listener\#onPageScroll State Changed()에서 감청 을 하고 A 로 빠르게 전환 합 니 다.A 에서 E 로 미 끄 러 졌 을 때 ViewPager.OnPage Change Listener\#onPage Scroll State Changed()에서 감청 을 하고 C 로 빠르게 전환 합 니 다.viewPager.setCurrentItem(int,boolean)을 사용 하도록 전환 합 니 다.두 번 째 매개 변 수 는 false 로 애니메이션 을 사용 하지 않 고 직접 빠르게 전환 하여 무한 윤방 의 가상 을 만 드 는 것 을 나타 낸다.
그리고 ViewPager.OnPageChange Listener 에서 감청 처 리 를 하고 빠르게 전환 합 니 다.
//
int currentIndex = 1;
//
int pageCount;
private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
currentIndex = position;
}
@Override
public void onPageScrollStateChanged(int state) {
// , ,
if (currentIndex==0){
viewPager.setCurrentItem(pageCount,false);
}
// ,
if (currentIndex==pageCount+1){
viewPager.setCurrentItem(1,false);
}
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shirates에서 상대 선택기를 사용하는 방법 - 1부 -이것은 간단하고 강력한 표현입니다(참조). 오른쪽, 아래, 왼쪽, 위 방향으로 상대적으로 위젯을 얻을 수 있습니다. 올바른 방향의 위젯 올바른 방향으로 입력 라벨을 올바른 방향으로 올바른 방향으로 이미지 :오른쪽 버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.