본문 바로가기

Android/Java

간단한 view pager 사용법

반응형

오늘은 view pager의 "간단"한 사용법에 대해 알아보겠습니다.


view pager는 말 그대로 뷰를 페이지처럼 넘겨보듯이? 하기 위한건데, 


보기 편하기 위해 사용하는 것입니다.


우선 viewPager를 사용할 layout(activity_main)을 다음과 같이 설정합니다.


<android.support.v4.view.ViewPager
android:id="@+id/view"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

</android.support.v4.view.ViewPager>

그리고 슬라이드로 사용할 layout(slider)을 하나 더 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:text=""
android:textSize="30dp"
android:textStyle="bold" />

<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp" />

</LinearLayout>
이렇게 텍스트와 이미지로 구성해봤습니다.

그 다음 뷰페이저를 작동시킬 "adapter"를 만들어야합니다.


어댑터 class를 정의하고 PagerAdapter 를 extends하면 getCount()와 isViewFromObject가 생성될 것입니다.


getCount는 사용할 view의 개수를 나타낸다 생각하시면 되고,


isViewFromObject는 instantiateItem 에서 생성한 객체를 사용할지 여부에 대해 판단합니다.


위 2가지를 선언 후, instantiateItem을 정의해줘야합니다.


instantiateItem 안에는 RecyclerViewAdapter or ListViewAdapter와 유사하게 item에 대한 inflater를 해주는 곳입니다.

위에서 만든 slider layout을 view로 선언해주고 사용할 아이템에 대한 정의를 해준 뒤 view를 return해주면 됩니다.

마지막으로 detroyItem을 선언해 viewpager 종료 시 destory 시켜줘야 합니다.

public class Adapter extends PagerAdapter {

private int[] images = {R.drawable.images1, R.drawable.images2, R.drawable.images3};
private LayoutInflater inflater;
private Context context;

public Adapter(Context context) {
this.context = context;
}

@Override
public int getCount() {
return images.length;
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == ((LinearLayout) object);
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.slider, container, false);

ImageView imageView = (ImageView) v.findViewById(R.id.imageView);
TextView textView = (TextView) v.findViewById(R.id.textView);

imageView.setImageResource(images[position]);
textView.setText((position + 1) + "번째 이미지입니다.");
container.addView(v);
return v;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.invalidate();
}
}

이런식으로 작성하면 됩니다.






이렇게 작성한 어댑터를 이제 메인에서 사용하기만 하면 끝!!!!


MainActivity에서는 layout_main에서 선언한 viewPager를 findViewById해주시고 apdater를 선언, viewPager에 setAdapter하면


세상에서 가장 간단한 viewPager의 사용 방법이 되겠습니다.


설명은 다 드렸으니 MainActivity는 직접 구현해보세요!


단 3줄이면 끝납니다! 


이상 ViewPager의 "간단한" 사용 방법이었습니다.















반응형

'Android > Java' 카테고리의 다른 글

간단한 SplashActivity 만들기  (0) 2018.05.09
ProgressbarUtil 만들기  (0) 2018.05.08
마켓에 올린 앱의 "버전" 가져오는 방법  (0) 2018.05.06
권한요청하기  (0) 2018.05.02
sms보내기  (0) 2018.04.26