(1) Create the project viewpager_anim_myself all in the default way, add three picture resource files, src-package directory to create Myviewpagertransformeranim.java class
The layout file Activity_main.xml as follows:
<relativelayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http// Schemas.android.com/tools " android:layout_width=" match_parent " android:layout_height=" Match_parent " android:paddingbottom= "@dimen/activity_vertical_margin" android:paddingleft= "@dimen/activity_ Horizontal_margin " android:paddingright=" @dimen/activity_horizontal_margin " android:paddingtop=" @dimen /activity_vertical_margin " tools:context=". Mainactivity "> <!--ctrl+shitf+t can find Viewpager package name-- <!--Use Custom View--- < Com.lc.viewpager_anim. Myviewpagertransformeranim android:id= "@+id/id_viewpager" android:layout_width= "Fill_parent " android:layout_height= "Fill_parent" > </com.lc.viewpager_anim. Myviewpagertransformeranim></relativelayout>
Edit Mainactivity.java
Package Com.lc.viewpager_anim;import Java.util.arraylist;import Java.util.list;import android.os.Bundle;import Android.app.activity;import Android.support.v4.view.pageradapter;import Android.view.view;import Android.view.viewgroup;import Android.view.window;import Android.widget.imageview;import Android.widget.imageview.scaletype;public class Mainactivity extends Activity {Myviewpagertransformeranim Myviewpagertransformeranim;private int[] Mimgids = new int[] {r.drawable.guide_image1,r.drawable.guide_image2, R.drawable.guide_image3};p rivate list<imageview> mimages = new arraylist<imageview> (); overrideprotected void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Requestwindowfeature (Window.feature_no_title); Setcontentview (R.layout.activity_main); Myviewpagertransformeranim = (Myviewpagertransformeranim) Findviewbyid (R.id.id_viewpager);// Add Adapter Myviewpagertransformeranim.setadapter (new Pageradapter () {/** * initialization code */@Overridepublic Object InstantiateiTEM (ViewGroup container, int position) {ImageView ImageView = new ImageView (mainactivity.this); Imageview.setimageresource (Mimgids[position]); Imageview.setscaletype (scaletype.center_crop);// Set the shape of the picture to prevent deformation container.addview (ImageView); Mimages.add (ImageView);// Initialize Myviewpagertransformeranim.setviewforposition (imageview,position); return imageView;} @Overridepublic void Destroyitem (ViewGroup container, int position,object Object) {Container.removeview (Mimages.get ( position)); Myviewpagertransformeranim.removeviewfromposition (position); Remove} @Overridepublic Boolean isviewfromobject (View view, Object object) {return view = = Object;} @Overridepublic int GetCount () {return mimgids.length;}});}}
The custom view is as follows: Myviewpagertransformeranim.java
Package Com.lc.viewpager_anim;import Java.util.hashmap;import Java.util.map;import Com.nineoldandroids.view.viewhelper;import Android. R.integer;import Android.content.context;import Android.support.v4.view.viewpager;import Android.util.attributeset;import android.util.log;import android.view.view;/* * Custom Viewpager for animating transitions: * * 1, Need to get the current toggle of two View * * 2, an animated gradient value */public class Myviewpagertransformeranim extends Viewpager {private View mleft;private Vi EW mright;private float mtrans;private float mscale;private static final float Min_scale = 0.6f;private Map<integer, Vi ew> Mchildren = new Hashmap<integer, view> (),/* * There are two construction methods */public Myviewpagertransformeranim (context context, AttributeSet attrs) {Super (context, attrs);} Public Myviewpagertransformeranim (Context context) {super (context);} /* * Set the method of put */public void setviewforposition (view view, int position) {Mchildren.put (position, view);} /* * Remove method */public void Removeviewfromposition (Integer position) {Mchildren.remove(position);} /** * Override method */@Overrideprotected void onpagescrolled (int position, float offset, int offsetpixels) {//LOG.E ("TAG", "posit Ion = "+ position +", offset = "+ offset"; mleft = Mchildren.get (position); mright = Mchildren.get (position + 1); Animstack ( Mleft, Mright, offset, offsetpixels);//Create animation effect super.onpagescrolled (position, offset, offsetpixels);} private void Animstack (view left, view right, float offset, int. offsetpixels) {if (right! = null) {//from 0-1 pages, offset:0 ' 1mSca Le = (1-min_scale) * offset + Min_scale;mtrans =-getwidth ()-getpagemargin () + offsetpixels; Viewhelper.setscalex (right, Mscale); Viewhelper.setscaley (right, Mscale); Viewhelper.settranslationx (right, Mtrans);} if (left! = null) {Left.bringtofront ();}}}
The complete project code is as follows: http://download.csdn.net/detail/u010870518/8469327
The ever-changing Viewpager Toggle Animation (2)--A custom Viewpager implementation method