class MainActivity
package kr.co.dothome.braverokmc.imageslider1;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
public class MainActivity extends AppCompatActivity {
ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager= (ViewPager)findViewById(R.id.pager);
//ViewPager에 설정할 Adapter 객체 생성
//ListView에서 사용하는 Adapter와 같은 역할.
//다만. ViewPager로 스크롤 될 수 있도록 되어 있다는 것이 다름
//PagerAdapter를 상속받은 CustomAdapter 객체 생성
//CustomAdapter에게 LayoutInflater 객체 전달
CustomAdapter adapter= new CustomAdapter(getLayoutInflater());
//ViewPager에 Adapter 설정
pager.setAdapter(adapter);
}
//onClick속성이 지정된 View를 클릭했을때 자동으로 호출되는 메소드
public void mOnClick(View v){
int position;
switch( v.getId() ){
case R.id.btn_previous://이전버튼 클릭
position=pager.getCurrentItem();//현재 보여지는 아이템의 위치를 리턴
//현재 위치(position)에서 -1 을 해서 이전 position으로 변경
//이전 Item으로 현재의 아이템 변경 설정(가장 처음이면 더이상 이동하지 않음)
//첫번째 파라미터: 설정할 현재 위치
//두번째 파라미터: 변경할 때 부드럽게 이동하는가? false면 팍팍 바뀜
pager.setCurrentItem(position-1,true);
break;
case R.id.btn_next://다음버튼 클릭
position=pager.getCurrentItem();//현재 보여지는 아이템의 위치를 리턴
//현재 위치(position)에서 +1 을 해서 다음 position으로 변경
//다음 Item으로 현재의 아이템 변경 설정(가장 마지막이면 더이상 이동하지 않음)
//첫번째 파라미터: 설정할 현재 위치
//두번째 파라미터: 변경할 때 부드럽게 이동하는가? false면 팍팍 바뀜
pager.setCurrentItem(position+1,true);
break;
}
}
}
class CustomAdapter
package kr.co.dothome.braverokmc.imageslider1;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* Created by choi on 2017-04-26.
*/
public class CustomAdapter extends PagerAdapter {
LayoutInflater inflater;
public CustomAdapter(LayoutInflater inflater) {
//전달 받은 LayoutInflater를 멤버변수로 전달
this.inflater=inflater;
}
//PagerAdapter가 가지고 잇는 View의 개수를 리턴
//보통 보여줘야하는 이미지 배열 데이터의 길이를 리턴
@Override
public int getCount() {
return 10; //이미지 개수 리턴(그림이 10개라서 10을 리턴)
}
//ViewPager가 현재 보여질 Item(View객체)를 생성할 필요가 있는 때 자동으로 호출
//쉽게 말해, 스크롤을 통해 현재 보여져야 하는 View를 만들어냄.
//첫번째 파라미터 : ViewPager
//두번째 파라미터 : ViewPager가 보여줄 View의 위치(가장 처음부터 0,1,2,3...)
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view=null;
//새로운 View 객체를 Layoutinflater를 이용해서 생성
//만들어질 View의 설계는 res폴더>>layout폴더>>viewpater_childview.xml 레이아웃 파일 사용
view= inflater.inflate(R.layout.viewpager_childview, null);
//만들어진 View안에 있는 ImageView 객체 참조
//위에서 inflated 되어 만들어진 view로부터 findViewById()를 해야 하는 것에 주의.
ImageView img= (ImageView)view.findViewById(R.id.img_viewpager_childimage);
//ImageView에 현재 position 번째에 해당하는 이미지를 보여주기 위한 작업
//현재 position에 해당하는 이미지를 setting
img.setImageResource(R.drawable.gametitle_01+position);
//ViewPager에 만들어 낸 View 추가
container.addView(view);
//Image가 세팅된 View를 리턴
return view;
}
//화면에 보이지 않은 View는파쾨를 해서 메모리를 관리함.
//첫번째 파라미터 : ViewPager
//두번째 파라미터 : 파괴될 View의 인덱스(가장 처음부터 0,1,2,3...)
//세번째 파라미터 : 파괴될 객체(더 이상 보이지 않은 View 객체)
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//ViewPager에서 보이지 않는 View는 제거
//세번째 파라미터가 View 객체 이지만 데이터 타입이 Object여서 형변환 실시
container.removeView((View)object);
}
//instantiateItem() 메소드에서 리턴된 Ojbect가 View가 맞는지 확인하는 메소드
@Override
public boolean isViewFromObject(View v, Object obj) {
return v==obj;
}
}
R.layout.activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="3dp">
<Button android:id="@+id/btn_previous"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="PREVIOUS"
android:textSize="12sp"
android:onClick="mOnClick"/>
<Button android:id="@+id/btn_next"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Next"
android:textSize="12sp"
android:onClick="mOnClick"/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
R.layout.viewpager_childview
<?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" >
<ImageView
android:id="@+id/img_viewpager_childimage"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
[안드로이드 Android] ViewPager (뷰 페이저)
출처: http://kitesoft.tistory.com/76 [안드로이드 어플 개발]
댓글 ( 4)
댓글 남기기