ViewPager 컨테이너 설정된 xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:ads="http://schemas.android.com/apk/res-auto">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="80">
</android.support.v4.view.ViewPager>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="15">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="50"
android:background="#FDF5E6"
android:id="@+id/previous_button"
android:text="Previous"
android:textSize="20dp"
android:layout_margin="3dp" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="50"
android:background="#E0FFFF"
android:id="@+id/next_button"
android:text="Next"
android:textSize="20dp"
android:layout_margin="3dp" />
</LinearLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
</LinearLayout>
ViewPager 안에 들어갈 모양 xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img_viewpager_childimage"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
ViewPager로 보여줄 Activity
package com.zerobin.www.koreannamegenerator;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.Button;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
/**
* Created by Byun YB on 2017-01-20.
*/
public class StatisticActivity extends Activity implements View.OnClickListener{
Button next_btn, previous_btn;
ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.statistic_activity);
//애드몹 코드
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
next_btn = (Button) findViewById(R.id.next_button);
previous_btn = (Button) findViewById(R.id.previous_button);
pager = (ViewPager) findViewById(R.id.viewpager);
//ViewPager에 설정할 Adapter 객체 생성
//ListView에서 사용하는 Adapter과 같은 역할을 한다.
//레이아웃 인플레이터를 전달한다
CustomPagerAdapter adapter = new CustomPagerAdapter(getLayoutInflater());
//ViewPager에 어뎁터를 설정한다.
pager.setAdapter(adapter);
next_btn.setOnClickListener(this);
previous_btn.setOnClickListener(this);
}
//onClick속성이 지정된 View를 클릭했을때 자동으로 호출되는 메소드
@Override
public void onClick(View v) {
int position;
switch (v.getId()) {
case R.id.previous_button://이전버튼 클릭
position = pager.getCurrentItem();//현재 보여지는 아이템의 위치를 리턴
//현재 위치(position)에서 -1 을 해서 이전 position으로 변경
//이전 Item으로 현재의 아이템 변경 설정(가장 처음이면 더이상 이동하지 않음)
//첫번째 파라미터: 설정할 현재 위치
//두번째 파라미터: 변경할 때 부드럽게 이동하는가? false면 팍팍 바뀜
pager.setCurrentItem(position - 1, true);
break;
case R.id.next_button://다음버튼 클릭
position = pager.getCurrentItem();//현재 보여지는 아이템의 위치를 리턴
//현재 위치(position)에서 +1 을 해서 다음 position으로 변경
//다음 Item으로 현재의 아이템 변경 설정(가장 마지막이면 더이상 이동하지 않음)
//첫번째 파라미터: 설정할 현재 위치
//두번째 파라미터: 변경할 때 부드럽게 이동하는가? false면 팍팍 바뀜
pager.setCurrentItem(position + 1, true);
break;
}
}
}
ViewPager를 사용하기 위한 PagerAdapter
package com.zerobin.www.koreannamegenerator;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* Created by Byun YB on 2017-01-20.
*/
public class CustomPagerAdapter extends PagerAdapter{
LayoutInflater inflater;
int[] images = {R.drawable.a2015girl_text, R.drawable.a2015man_text, R.drawable.a2016girl_text, R.drawable.a2016man_text};
//생성자, LayoutInflater를 받아온다.
CustomPagerAdapter(LayoutInflater inflater){
this.inflater = inflater;
}
//PagerAdapter가 가지고 있는 View의 개수를 리턴
//보여줘야하는 이미지 배열의 길이를 리턴한다.
@Override
public int getCount() {
return images.length; //그림의 갯수가 4
}
//ViewPager가 보여질 item을 생성할 필요가 있을 때 자동으로 호출한다. (즉 보여줄 View를 리턴한다.)
public Object instantiateItem(ViewGroup container, int position) {//postion view의 위치(0,1,2,...)
View view = null;
//레이아웃 인플레이터로 View 객체 생성(메모리에 올림)
//Child View 객체화
view = inflater.inflate(R.layout.viewpager_childview, null);
//ChildView안의 이미지뷰 가져오기
ImageView imageView = (ImageView) view.findViewById(R.id.img_viewpager_childimage);
//이미지뷰에 현재 포지션에 해당하는 이미지를 보여주기 위한 작업
//현재 포지션에 해당하는 이미지를 세팅
imageView.setImageResource(images[position]);
//뷰페이저에 만들어낸 뷰 추가
container.addView(view);
//이미지가 세팅된 VIew를 리턴
return view;
}
//화면에 보이지 않는 View는 파괴를 해서 메모리를 관리한다.
//첫번째 파라미터 : ViewPager
//두번째 파라미터 : 파괴될 View의 인덱스
//세번째 파라미터 : 파괴될 객체(더 이상 보이지 않은 View 객체)
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//ViewPager에서 보이지 않는 View는 제거한다.
container.removeView((View) object);//Object형이므로 view로 형변환한다.
}
//instantiateitem()메소드에서 리턴된 object가 view가 맞는지 확인하는 메소드
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
'안드로이드+자바' 카테고리의 다른 글
Firebase Storage에서 이미지 가져오기(저장하기) (2) | 2017.01.22 |
---|---|
안드로이드 풀스크린 쓰기 (0) | 2017.01.21 |
안드로이드 상단 타이틀바 없에는 법. (0) | 2017.01.20 |
안드로이드 OutOfMemoryError 해결! (0) | 2017.01.20 |
안드로이드 Activity 팝업창 만들기!! (0) | 2017.01.17 |
댓글