Eclipse の ADTプラグインで 新規 Android Application Project を作成するときに
Navigation タイプで Swipe View を選ぶと android.support.v4.view.ViewPager による
FragmentPagerAdapter を使った骨組みを作ってくれる。
FragmentPager の勉強になって良いのだが、
最初は ViewPager の単純なパターンから学びたい。
例えば、こんな具合に。。。
レイアウト main.xml
<?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:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="固定部タイトル"
android:textAppearance="?android:attr/textAppearanceLarge" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#33b5e5"
android:paddingBottom="4dp"
android:paddingTop="4dp"
android:textColor="#fff" />
</android.support.v4.view.ViewPager>
</LinearLayout>
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* SwipeSampleMainActivity
*/
public class SwipeSampleMainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
viewPager.setAdapter(new PagerAdapter(){
@Override
public CharSequence getPageTitle(int position){
return new String[]{ "Page-1", "Page-2", "Page-3" }[position];
}
// 表示するViewがコンテナに含まれているか判定
@Override
public boolean isViewFromObject(View view, Object object){
return view.equals(object);
}
@Override
public int getCount(){
return 3;
}
/* ページ生成
* @see android.support.v4.app.FragmentPagerAdapter#instantiateItem(android.view.ViewGroup, int)
*/
@Override
public Object instantiateItem(ViewGroup container, int position){
TextView textview = new TextView(getApplicationContext());
textview.setText("This position : " + position);
textview.setTextSize(32);
((ViewPager) container).addView(textview, 0);
return textview;
}
/* ページ破棄
* @see android.support.v4.view.PagerAdapter#destroyItem(android.view.ViewGroup, int, java.lang.Object)
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object){
((ViewPager)container).removeView((View)object);
}
});
}
}