现在的位置: 首页 > 综合 > 正文

Android使用ViewPager实现左右滑动效果

2013年08月14日 ⁄ 综合 ⁄ 共 3984字 ⁄ 字号 评论关闭

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

 

 

 

抱歉!评论已关闭.