반응형
ViewPager
Fragment를 페이지로 전환 등을 할 수있는 뷰.
ListView와 마찬가지로 ViewPager는 Adapter와 함께 사용해야합니다.
이 뷰를 상속한 뷰를 사용하면 화면을 스와이프하여 페이지 전환이나 Tab을 전환할 수도 있습니다.

상단의 탭을 클릭, 스와이프 이동할 수 있다.
파일 이름설명
| 파일이름 | 설명 |
| MainActivity.java activity_main.xml |
ViewPager 뷰와 버튼을 보관 유지하는 화면의 레이아웃과 그 Activity |
| FragMonday.java fragment_tuesday.xml |
1 페이지째의 레이아웃과 그 Fragment(monday의 페이지) |
| FragTuesday.java fragment_monday.xml |
2페이지째의 레이아웃과 그 Fragment(tuesday의 페이지) |
| FragWednesday.java fragment_wednesday.xml |
3페이지째의 레이아웃과 그 Fragment(wednesday의 페이지) |
| ViewPagerAdapter.java | 스 와이프 할 때 Fragment를 생성하는 Adapter |
frag_monday.xml
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Seo Android1"
android:textColor="#0B0A0A"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
FragMonday.java
public class FragMonday extends Fragment {
private View view;
public static FragMonday newInstance() {
FragMonday fragMonday = new FragMonday();
return fragMonday;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.frag_monday, container, false);
return view;
}
}
Adapter에 대해 자세히 알아보기
Adapter는 2종류 있다. "FragmentPagerAdapter"와 "FragmentStatePagerAdapter".
각각 동작이 다르기 때문에, 작성하는 어플에 맞추어 선택할 필요가 있다.
페이지가 전환되었을 때, 「FragmentPagerAdapter」는 표시한 Fragment를 메모리상에 유지한다.
"FragmentStatePagerAdapter"는 페이지가 전환될 때 Fragment를 파기한다.
이번에는 페이지 수가 적기 때문에 "FragmentPagerAdapter"를 사용했다.
ViewPagerAdapter.java
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
}
//Fragment 를 보여주는 처리를 구현한 곳 입니다.
@NonNull
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FragMonday.newInstance();
case 1:
return FragTuesday.newInstance();
case 2:
return FragWednesday.newInstance();
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
// 상단의 탭 레이아웃 인디케이터 쪽에 텍스트를 선언해주는 곳
@Nullable
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Monday";
case 1:
return "Tuesday";
case 2:
return "Wednesday";
default:
return null;
}
}
}
Java 소스 코드
public class MainActivity extends AppCompatActivity {
private FragmentPagerAdapter fragmentPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//뷰페이저 세팅
ViewPager viewPager = findViewById(R.id.viewPager);
fragmentPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
TabLayout tabLayout = findViewById(R.id.tab_layout);
viewPager.setAdapter(fragmentPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
}
}반응형
'개발 > 안드로이드 어플' 카테고리의 다른 글
| ⑦안드로이드어플개발 - AlertDialog 다이아로그 / 팝업창 출력 / 대화 / 모달창 (0) | 2022.11.29 |
|---|---|
| ⑥안드로이드어플개발 - Logcat 디버깅하는 방법 log출력|debug (0) | 2022.11.29 |
| ④안드로이드어플개발 - WebView (0) | 2022.11.27 |
| ③안드로이드어플개발 - ImageView 와 Toast (Drawable과 mipmap) (0) | 2022.11.27 |
| ②안드로이드어플개발 - ListView 와 ArrayAdapter (0) | 2022.11.25 |
댓글