본문 바로가기

프로그램/Android

안드로이드 ViewPager[Tutorial Sample]

반응형

안드로이드 ViewPager Sample입니다.


Fragment 이용한 ViewPager 아닌 보통 앱에서 보여주는 튜토리얼로 쓰기 위한 Sample입니다.


기본적인 ViewPager 사용하기 위해서는 ViewPager adapter 넣어줘야 합니다. 


그리고 PagerAdapter 상속받은 클래스를 넣어주시면 될거같습니다.




PagerAdapter 상속받는 클래스를 만드실 경우 오버라이드 메소드 설명입니다.


getCount() : PagerAdapter에서 관리할 갯수를 반환


instantiateItem() : ViewPager에서 사용할 뷰객체 생성 등록


destroyItem() : View 객체를 삭제


isViewFromObject()생성한 객체를 이용할 것인지 여부를 반환



1. MainActivity.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

    <Button
        android:id="@+id/btn1"
        android:layout_width="50dp"
        android:layout_height="50dp" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_below="@id/btn1" />

</RelativeLayout>



2. MainActivity


public class MainActivity extends AppCompatActivity {

    private int index = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
        ImageAdapter adapter = new ImageAdapter(this);
        viewPager.setAdapter(adapter);

        findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("test", "viewPager : " + index);
                if(index != 0){
                    index = index-1;
                    viewPager.setCurrentItem(index);
                }

            }
        });

        findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("test", "viewPager : " + index);
                if(index != 5){
                    index = index+1;
                    viewPager.setCurrentItem(index);
                }

            }
        });

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

            @Override
            public void onPageSelected(int position) {index = position;}

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



3. ImageAdapter



public class ImageAdapter extends PagerAdapter {

    Context context;
    private final int[] drawableImgs = new int[] {
            R.drawable.tutorial_01,
            R.drawable.tutorial_02,
            R.drawable.tutorial_03,
            R.drawable.tutorial_04,
            R.drawable.tutorial_05,
            R.drawable.tutorial_06
    };

    ImageAdapter(Context context) {
        this.context = context;
    }

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

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        Bitmap drawImg = BitmapFactory.decodeResource(context.getResources(), drawableImgs[position]);

        imageView.setImageBitmap(drawImg);
        container.addView(imageView, 0);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((ImageView) object);
    }
}
반응형