使用ViewPager用使用android的兼容包,android-support-v4.jar。
工程源代码下载:点击下载
在res/layout下建立三个文件first.xml,second.xml,third.xml,随便加入一些控件
main.xml文件的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/group"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:orientation="horizontal"
android:gravity="center_horizontal"
/>
</RelativeLayout>
</FrameLayout>
在LinaerLayout外面套一个RelativeLayout是为了使得
android:layout_alignParentBottom="true" 这行代码有用
LinaerLayout主要是布局下面的小圆点。要使用两张图片R.drawable.page_indicator_focused和R.drawable.page_indicator。
在主Activity中的代码没什么好说的直接贴上来
package com.zhycheng.viewpage;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
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.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
public class ViewPageActivity extends Activity implements OnPageChangeListener {
ViewPager mvp;
ImageView []images;
ImageView iv;
LinearLayout ll;
ViewGroup vg;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
final ArrayList<View> aViews=new ArrayList<View>();
LayoutInflater lf=LayoutInflater.from(this);
vg=(ViewGroup) lf.inflate(R.layout.main, null);
View v1=lf.inflate(R.layout.first, null);
View v2=lf.inflate(R.layout.second, null);
View v3=lf.inflate(R.layout.third, null);
aViews.add(v1);
aViews.add(v2);
aViews.add(v3);
mvp=(ViewPager) vg.findViewById(R.id.viewpager);
ll=(LinearLayout) vg.findViewById(R.id.group);
images=new ImageView[aViews.size()];
for(int i=0;i<images.length;i++)
{
iv=new ImageView(this);
iv.setLayoutParams(new LayoutParams(20,20));
iv.setPadding(20, 0, 20, 0);
if(i==0)
{
iv.setBackgroundResource(R.drawable.page_indicator_focused);
}
else
{
iv.setBackgroundResource(R.drawable.page_indicator);
}
images[i]=iv;
ll.addView(images[i]);
}
PagerAdapter pa=new PagerAdapter(){
@Override
public int getCount() {
// TODO Auto-generated method stub
return aViews.size();
}
@Override
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager)container).removeView(aViews.get(position));
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public Object instantiateItem(View arg0, int arg1) {
// TODO Auto-generated method stub
((ViewPager)arg0).addView(aViews.get(arg1),0);
return aViews.get(arg1);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}};
setContentView(vg);
mvp.setAdapter(pa);
mvp.setOnPageChangeListener(this);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onPageScrollStateChanged"+arg0, 1000).show();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onPageScrolled", 1000).show();
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
for(int i=0;i<images.length;i++)
{
if(i==arg0)
{
images[i].setBackgroundResource(R.drawable.page_indicator_focused);
}
else
{
images[i].setBackgroundResource(R.drawable.page_indicator);
}
}
}
}