2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

ViewPager의 프로그램적인 페이지 전환 구현법.

_____
Q1: ViewPager에서 프로그래밍으로 페이지를 어떻게 전환하나요?
A1: ViewPager의 `setCurrentItem(int item, boolean smoothScroll)` 메서드를 사용합니다. 첫 번째 인자는 이동할 페이지 인덱스이고, 두 번째 인자는 스크롤 애니메이션 사용 여부입니다.

```java
viewPager.setCurrentItem(2, true); // 3번째 페이지로 애니메이션과 함께 전환
```

---

Q2: `setCurrentItem` 메서드에서 인덱스는 0부터 시작하나요?
A2: 네, 페이지 인덱스는 0부터 시작합니다. 예를 들어 첫 번째 페이지는 0, 두 번째 페이지는 1입니다.

---

Q3: 부드러운 스크롤 없이 바로 페이지를 전환하려면 어떻게 하나요?
A3: `setCurrentItem(item, false)`를 호출하면 즉시 페이지가 전환됩니다.

```java
viewPager.setCurrentItem(1, false); // 2번째 페이지로 바로 전환
```

---

Q4: 프로그래밍적으로 페이지 전환 후에 이벤트를 처리할 수 있나요?
A4: 네, `ViewPager.OnPageChangeListener` 를 등록하여 페이지 전환 완료, 진행 상황 등을 감지할 수 있습니다.

```java
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }

@Override
public void onPageSelected(int position) {
// 페이지 전환이 완료되었을 때 호출됨
}

@Override
public void onPageScrollStateChanged(int state) { }
});
```

---

Q5: ViewPager2 사용 시에는 어떻게 프로그래밍적인 페이지 전환을 하나요?
A5: ViewPager2도 `setCurrentItem(int item, boolean smoothScroll)` 메서드를 사용합니다.

```java
viewPager2.setCurrentItem(3, true);
```

---

Q6: 여러 페이지를 순차적으로 자동으로 전환하려면 어떻게 구현하나요?
A6: `Handler`나 `Timer`를 사용하여 일정 간격마다 `setCurrentItem`을 호출하면 자동 슬라이드 효과를 낼 수 있습니다.

```java
final Handler handler = new Handler();
final int pageCount = adapter.getItemCount();
final Runnable runnable = new Runnable() {
int page = 0;
@Override
public void run() {
viewPager.setCurrentItem(page++, true);
if (page == pageCount) page = 0;
handler.postDelayed(this, 3000); // 3초마다 페이지 전환
}
};
handler.postDelayed(runnable, 3000);
```

---

Q7: `setCurrentItem` 호출 시 즉시 갱신이 되지 않는 경우는 어떻게 해결하나요?
A7: 페이지 전환이 애니메이션으로 진행 중일 때 다른 전환을 시도하면 무시될 수 있습니다. 이 경우 애니메이션이 끝난 뒤 호출하거나, `OnPageChangeListener`의 상태를 체크해서 중복 호출을 방지하세요.

---

Q8: 페이지가 너무 많을 경우 성능 이슈가 있는데 프로그래밍 전환 시 주의할 점은?
A8: 페이지 수가 많으면 `FragmentStatePagerAdapter`(ViewPager) 또는 `FragmentStateAdapter`(ViewPager2)를 사용해 메모리 관리를 해야 합니다. 또한 너무 잦은 페이지 전환을 자제하고, 사용자 경험을 고려해 적절히 사용하세요.

---

요약:
- 기본 메서드: `viewPager.setCurrentItem(int item, boolean smoothScroll)`
- 인덱스는 0부터 시작
- 애니메이션 여부 조정 가능
- 전환 완료 감지는 `OnPageChangeListener` 이용
- ViewPager2도 동일하게 사용 가능
- 자동 슬라이드는 `Handler` 등으로 구현

이렇게 프로그래밍적으로 ViewPager 페이지 전환을 유연하게 구현할 수 있습니다.
`ViewPager`는 Android 애플리케이션에서 여러 화면을 슬라이드로 전환할 수 있도록 도와주는 유용한 UI 구성 요소입니다.

프로그램적으로 페이지를 전환하려면 `ViewPager`의 `setCurrentItem(int item)` 메서드를 사용할 수 있습니다.

이 메서드는 지정된 페이지로 전환하며, 두 번째 매개변수로 `boolean smoothScroll`을 제공하여 전환이 부드럽게 이뤄질지 여부를 설정할 수 있습니다.

아래는 `ViewPager`를 사용하여 프로그램적으로 페이지를 전환하는 방법에 대한 간단한 예시입니다.

1단계: ViewPager 설정 먼저 XML 레이아웃 파일에 `ViewPager`를 추가합니다.

```xml ``` 2단계: PagerAdapter 구현 `ViewPager`의 페이지를 관리하기 위해 `PagerAdapter`를 구현합니다.

여기서는 기본적인 예시로 `FragmentPagerAdapter`를 사용할 수 있습니다.

```java public class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { // 각 페이지에 해당하는 Fragment 반환 return MyFragment.newInstance(position); } @Override public int getCount() { return 5; // 페이지 수 } } ``` 3단계: ViewPager 및 Adapter 설정 `Activity`나 `Fragment`에서 `ViewPager`와 `PagerAdapter`를 설정합니다.

```java public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private MyPagerAdapter pagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = findViewById(R.id.viewPager); pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); } } ``` 4단계: 프로그램적인 페이지 전환 구현 이제 버튼 클릭과 같은 이벤트에 따라 `ViewPager`의 페이지를 전환하는 코드를 추가합니다.

```java public void goToNextPage() { int currentItem = viewPager.getCurrentItem(); if (currentItem < pagerAdapter.getCount() - 1) { viewPager.setCurrentItem(currentItem + 1, true); // 부드러운 전환 } } public void goToPreviousPage() { int currentItem = viewPager.getCurrentItem(); if (currentItem > 0) { viewPager.setCurrentItem(currentItem - 1, true); // 부드러운 전환 } } ``` 예시 버튼 추가 XML 레이아웃에 버튼을 추가하여 페이지 전환 함수와 연결할 수도 있습니다.

```xml
작성자: 박민지 [비회원] | 작성일자: 1년 전 2025-04-03 07:01:43
조회수: 90 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.