找到个不错的开源项目:https://github.com/jfeinstein10/JazzyViewPager
Android ViewPager 动画效果
适配器:(这个是viewpager的每一项都添加了onclick事件的)
package com.example.jaazy; import java.util.ArrayList; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; /** * Create by LanYan on 2014.04.24 * This is a adapter */ public class ViewPagerAdapterOnClick extends PagerAdapter { private ArrayList<View> views; private ViewPageOnClick callback; private JazzyViewPager pager; public ViewPagerAdapterOnClick(JazzyViewPager pager,ArrayList<View> views,ViewPageOnClick callback) { this.setViews(views); this.callback=callback; this.pager=pager; } public void setViews(ArrayList<View> views) { if (views != null) this.views = views; else this.views = new ArrayList<View>(); } public void changeItem(ArrayList<View> views) { this.setViews(views); notifyDataSetChanged(); } @Override public int getItemPosition(Object object) { // TODO Auto-generated method stub return POSITION_NONE; } @Override public int getCount() { // TODO Auto-generated method stub return views.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View v = views.get(position); container.removeView(v); } public void removeUpdate(ViewGroup container){ container.removeAllViews(); } @Override public Object instantiateItem(ViewGroup container, final int position) { View v = views.get(position); v.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub callback.callbackOnClickItem(position); } }); container.addView(v); pager.setObjectForPosition(v, position); return v; } public interface ViewPageOnClick{ void callbackOnClickItem(int position); } }activity:
import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.Toast; import com.example.jaazy.JazzyViewPager.TransitionEffect; import com.example.jaazy.ViewPagerAdapterOnClick.ViewPageOnClick; public class MainActivity extends Activity implements ViewPageOnClick{ private JazzyViewPager pager; private ViewPagerAdapterOnClick adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupJazziness(TransitionEffect.Stack); } private void setupJazziness(TransitionEffect stack) { // TODO Auto-generated method stub pager=(JazzyViewPager)findViewById(R.id.jazzy_pager); adapter=new ViewPagerAdapterOnClick(pager, getViews(),this); pager.setAdapter(adapter); pager.setPageMargin(5); //压栈方式 pager.setTransitionEffect(TransitionEffect.Stack); //立体内部进出 //pager.setTransitionEffect(TransitionEffect.CubeIn); //立体凸出 //pager.setTransitionEffect(TransitionEffect.CubeOut); //左右挤压 //pager.setTransitionEffect(TransitionEffect.Accordion); //水平翻页 //pager.setTransitionEffect(TransitionEffect.FlipHorizontal); //垂直翻页 //pager.setTransitionEffect(TransitionEffect.FlipVertical); //上扇形摆入 //pager.setTransitionEffect(TransitionEffect.RotateDown); //下扇形摆入 //pager.setTransitionEffect(TransitionEffect.RotateUp); //标准 //pager.setTransitionEffect(TransitionEffect.Standard); //选项卡(卡片形式) ///pager.setTransitionEffect(TransitionEffect.Tablet); //zoom in //pager.setTransitionEffect(TransitionEffect.ZoomIn); //zoom out //pager.setTransitionEffect(TransitionEffect.ZoomOut); } private ArrayList<View> getViews() { // TODO Auto-generated method stub ArrayList<View> list=new ArrayList<View>(); ImageView i=new ImageView(this); LayoutParams params=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); i.setLayoutParams(params); i.setBackgroundResource(R.drawable.a); ImageView i2=new ImageView(this); i2.setLayoutParams(params); i2.setBackgroundResource(R.drawable.b); ImageView i3=new ImageView(this); i3.setLayoutParams(params); i3.setBackgroundResource(R.drawable.c); ImageView i4=new ImageView(this); i4.setLayoutParams(params); i4.setBackgroundResource(R.drawable.e); list.add(i); list.add(i2); list.add(i3); list.add(i4); return list; } @Override public void callbackOnClickItem(int position) { // TODO Auto-generated method stub Toast.makeText(this, "position:"+position, 1000).show(); } }JazzyViewPager自带动画枚举11中,如需其他动画,自己添加即可
原文地址:http://blog.csdn.net/anddroid_lanyan/article/details/41479555