Hello,

kok nae-ga ha-myun an-dweneun MAGIC...🧚

안드로이드

안드로이드 ViewPager 만들기

✿도담도담 2018. 4. 20. 01:20


지난번에 만든 게시판 레이아웃에 이어서

카카오톡이나 페이스북처럼 옆으로 넘기면

화면이 넘어가는걸 구현해 보고자 ViewPager이란

아이를 사용해 보았다.


수평으로 좌, 우 스크롤시 사용되는 친구다.


우선 구현한 화면이다.


   


하루하루 발전하는것이 보인다 .. ŏ̥̥םŏ̥̥

상단을 보면 MainPage, MyPage, TAB3( 구현 안된 레이아웃 )을 볼 수있다.


양 옆으로 드래그하면 화면이 전환된다.

우선 내가 사용한 엑티비티는 Tabbed Activity이다.

초보자라 맨땅에 해딩 중이여서 일단 제공 하는 틀을 뜯어봤다..

새로운 프로젝트 생성시 Tabbed Activity를 고르거나

res / layout에서 오른쪽 버튼 activity에 가서도 편하게 만들 수 있다.






종류를 고를 수 있는데 나는 상단에 Tab이 있는 스타일로 선택했다.


가장 초기의 코드를 따로 캡쳐하지 않아 없지만

살펴보면 핵심은 Fragment를 만들어서

tab의 순서에 따라 해당 Fragment를 불러오는

아주 간단한 방법이다.

(근데 초보자라 하루종일 걸렸다 😢)


public class SectionsPagerAdapter extends FragmentPagerAdapter {

public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position)
{
case 0:
return new MainPageFragment();
case 1:
return new MyPageFragment();
case 2:
return new Frg3();
default:
return null;
}
}
@Override // ViewPager의 Page 수
public int getCount() {
// Show 3 total pages.
return 3;
}
}


우선 tab마다 띄워줄 Fragment를 구현해야하는데

첫번째로 각각의 Fragment의 레이아웃을 구현한 뒤

java클래스를 만들고 Fragment를 상속받는다.

이때 android.app가 아닌 support.v4.app에 있는 Fragment다.

(onCreateView는 ExpandableListView때문에 한것이다. 재정의 하지 않아도 된다.)


public class MainPageFragment extends Fragment {
private View rootView;

// 생성자 필수
public MainPageFragment()
{

}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.content_main, container, false);

return rootView;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

final ItemListView listView = new ItemListView(rootView);
}

}

두번째, 세번째 탭도 레이아웃을 만든뒤

Fragment를 상속받은 클래스를 만들어 주면된다.


그리고 나서 MainActivity.java의 FragmentPageAdapter클래스의

getItem 메소드의 switch문에

원하는 순서대로 생성해 주면 된다.


추가적인 설명으로 자동으로 MainActivity.java의 onCreate 메소드에 코드가 적혀 있을텐데

뷰페이저에 어댑터를 설정 하는 부분과

탭의 터치와 드래그 설정하는 부분이다.

/** View Pager **/
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));