使用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); } } } }