ViewPage是AndroidSDK中定义好的类,可供开发人员进行调用,在网上查阅资料有好多类似的Demo的编写,效果都可以实现,唯一不足就是没有对此写法做详细的说明解释。
如下我自己写好的例子,运行没有问题的。
1.准备layout布局文件4个(根据需要):
第一个布局文件:定义主页面,包含显示在页面上的主页面,如:页面1,页面2,页面3,最重要的还有ViewPager控件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearlayout1"
android:layout_width="fill_parent"
android:layout_height="100.00dip"
android:background="#FFFFFF">
<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:text="页卡1"
android:textColor="#aff233"
android:textSize="22.0dip">
</TextView>
<TextView
android:id="@+id/text2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:text="页卡2"
android:textColor="#aff233"
android:textSize="22.0dip">
</TextView>
<TextView
android:id="@+id/text3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:text="页卡3"
android:textColor="#aff233"
android:textSize="22.0dip">
</TextView>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1.0"
android:background="#000000"
android:flipInterval="30"
android:persistentDrawingCache="animation"/>
</LinearLayout>
2,。第二、三、四个布局文件
<?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"
android:background="#158423">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一个Page页面"
android:textSize="30dip"
android:textColor="#ffffff"/>
</LinearLayout>
3.代码
package com.example.viewpagertest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
//先准备变量
private ViewPager mPager ;
List<View> listViews ;//Tab页面列表
TextView t1,t2 ,t3;//页卡头标
private int currentIndex;//当前页卡编号
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitTextView();
InitViewPager();
}
//初始化头标
private void InitTextView()
{
//找到控件
t1 = (TextView)super.findViewById(R.id.text1);
t2 = (TextView)super.findViewById(R.id.text2);
t3 = (TextView)super.findViewById(R.id.text3);
//设置监听
t1.setOnClickListener(new MyOnClickListener(0));
t2.setOnClickListener(new MyOnClickListener(1));
t3.setOnClickListener(new MyOnClickListener(2));
}
//初始化ViewPager
public void InitViewPager()
{
mPager = (ViewPager)super.findViewById(R.id.vPager);
listViews = new ArrayList<View>();
LayoutInflater mInflater = getLayoutInflater();
listViews.add(mInflater.inflate(R.layout.page1, null));
listViews.add(mInflater.inflate(R.layout.page2, null));
listViews.add(mInflater.inflate(R.layout.page3, null));
mPager.setAdapter(new MyPagerAdaper(listViews));
mPager.setCurrentItem(0);
mPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
public class MyPagerAdaper extends PagerAdapter{
List<View> mListViews;
public MyPagerAdaper(List<View> listView)
{
mListViews = listView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListViews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == (arg1);
}
@Override
public Object instantiateItem(View arg0, int arg1)
{
((ViewPager) arg0).addView(mListViews.get(arg1), 0);
return mListViews.get(arg1);
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2)
{
((ViewPager) arg0).removeView(mListViews.get(arg1));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public class MyOnClickListener implements View.OnClickListener{
int index = 0 ;
//构造函数
public MyOnClickListener(int i)
{
index = i;
}
@Override
public void onClick(View arg0)
{
mPager.setCurrentItem(index);
}
}
public class MyOnPageChangeListener implements OnPageChangeListener
{
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}
}
}