Android ViewPager example: androidviewpager
Viewpager is used today to implement multi-view animation switching. I made one by myself.
First, it is just a simple example.
Step: 1. Add the viewPager layout in the main layout file.
<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"> <LinearLayout android: id = "@ + id/top_ly" android: layout_width = "match_parent" android: layout_height = "wrap_content" android: orientation = "horizontal"> <TextView android: id = "@ + id/textView1" android: layout_weight = "1" android: layout_width = "wrap_content" android: layout_height = "50dp" android: background = "#999999" android: gravity = "center" android: text = "Page 1" android: textColor = "#222222"/> <TextView android: id = "@ + id/textView2" android: layout_weight = "1" android: layout_width = "wrap_content" android: layout_height = "50dp" android: background = "#999999" android: gravity = "center" android: text = "Page 2" android: textColor = "#222222"/> <TextView android: id = "@ + id/textView3" android: layout_weight = "1" android: layout_width = "wrap_content" android: layout_height = "50dp" android: background = "#999999" android: gravity = "center" android: text = "Page 3" android: textColor = "#222222"/> </LinearLayout> <ImageView android: id = "@ + id/cursor" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_below = "@ id/top_ly" android: scaleType = "matrix" android: src = "@ drawable/cursor"/> <android. support. v4.view. viewPager android: id = "@ + id/viewPager" android: layout_width = "match_parent" android: layout_height = "match_parent" android: layout_below = "@ id/cursor" android: layout_gravity = "center"/> </RelativeLayout>
(You may need to import the jar package. : Android-support-v4.jar)
Create 3 more layout for filling in ViewPager. Here is a textview.
2. viewPager requires a subclass of pagerAdapter.
Package com. away. viewpager; import java. util. list; import android. support. v4.view. pagerAdapter; import android. support. v4.view. viewPager; import android. view. view; public class ViewPagerAdapter extends PagerAdapter {List <View> viewLists; public ViewPagerAdapter (List <View> lists) {viewLists = lists;} // get size @ Override public int getCount () {return viewLists. size () ;}@ Override public boolean isViewFromObject (View arg0, Object arg1) {return arg0 = arg1 ;}// destroy Item @ Override public void destroyItem (View view View, int position, Object object) {(ViewPager) view ). removeView (viewLists. get (position);} // instantiate Item @ Override public Object instantiateItem (View view, int position) {(ViewPager) view ). addView (viewLists. get (position), 0); return viewLists. get (position );}}3. At last, mainActivity mainly writes the left-right sliding switching page, and an animated effect of small images switching displacement with the page.
Package com. away. viewpager; import java. util. arrayList; import java. util. list; import android. app. activity; import android. graphics. bitmap; import android. graphics. bitmapFactory; import android. graphics. matrix; import android. OS. bundle; import android. support. v4.view. viewPager; import android. util. displayMetrics; import android. view. menu; import android. view. view; import android. view. animation. animation; import android. view. animation. translateAnimation; import android. widget. imageView; import android. widget. textView; public class MainActivity extends Activity {private ViewPager viewPager; private ImageView imageView; private List <View> lists = new ArrayList <View> (); private ViewPagerAdapter adapter; private Bitmap cursor; private int offSet; private int currentItem; private Matrix matrix = new Matrix (); private int bmWidth; private Animation animation; private TextView textView1; private TextView textView2; private TextView textView3; @ Overrideprotected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); imageView = (ImageView) findViewById (R. id. cursor); textView1 = (TextView) findViewById (R. id. textView1); textView2 = (TextView) findViewById (R. id. textView2); textView3 = (TextView) findViewById (R. id. textView3); lists. add (getLayoutInflater (). inflate (R. layout. layout1, null); lists. add (getLayoutInflater (). inflate (R. layout. layout2, null); lists. add (getLayoutInflater (). inflate (R. layout. layout3, null); initeCursor (); adapter = new ViewPagerAdapter (lists); viewPager = (ViewPager) findViewById (R. id. viewPager); viewPager. setAdapter (adapter); viewPager. setOnPageChangeListener (new ViewPager. onPageChangeListener () {// when sliding, The imageView on the top slides slowly through animation @ Overridepublic void onPageSelected (int arg0) {switch (arg0) {case 0: if (currentItem = 1) {animation = new TranslateAnimation (offSet * 2 + bmWidth, 0, 0);} else if (currentItem = 2) {animation = new TranslateAnimation (offSet * 4 + 2 * bmWidth, 0, 0);} break; case 1: if (currentItem = 0) {animation = new TranslateAnimation (0, offSet * 2 + bmWidth, 0, 0);} else if (currentItem = 2) {animation = new TranslateAnimation (4 * offSet + 2 * bmWidth, offSet * 2 + bmWidth, 0, 0);} break; case 2: if (currentItem = 0) {animation = new TranslateAnimation (0, 4 * offSet + 2 * bmWidth, 0, 0);} else if (currentItem = 1) {animation = new TranslateAnimation (offSet * 2 + bmWidth, 4 * offSet + 2 * bmWidth, 0, 0) ;}} currentItem = arg0; animation. setDuration (150); // The animation speed at which the cursor slides. setFillAfter (true); imageView. startAnimation (animation) ;}@ Overridepublic void onPageScrolled (int arg0, float arg1, int arg2) {}@ Overridepublic void merge (int arg0) {}}); merge (new View. onClickListener () {@ Overridepublic void onClick (View arg0) {viewPager. setCurrentItem (0) ;}}); textView2.setOnClickListener (new View. onClickListener () {@ Overridepublic void onClick (View arg0) {viewPager. setCurrentItem (1) ;}}); textView3.setOnClickListener (new View. onClickListener () {@ Overridepublic void onClick (View arg0) {viewPager. setCurrentItem (2) ;}});} private void initeCursor () {cursor = BitmapFactory. decodeResource (getResources (), R. drawable. cursor); bmWidth = cursor. getWidth (); DisplayMetrics dm; dm = getResources (). getDisplayMetrics (); offSet = (dm. widthPixels-3 * bmWidth)/6; matrix. setTranslate (offSet, 0); imageView. setImageMatrix (matrix); // the scaleType required for imageView is matrixcurrentItem = 0 ;}@ Overridepublic boolean onCreateOptionsMenu (Menu menu) {// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater (). inflate (R. menu. main, menu); return true ;}}The optical map is attached.
In an example of ViewPager for android, if you want to slide the line, you can move the page with ViewPagee.
It's complicated to move the cursor following your fingers. You need to monitor the sliding distance of your fingers.
I got one for you. Code uploading always fails.
This is the effect of sliding half
Adopt me
How to listen to button events in android viewpager, source code
Public class ViewPagerActor extends LinearLayout {
Private ViewPager viewPager;
Private MyAdapter myAdapter;
Private List <View> lists;
Public ViewPagerActor (Context context, AttributeSet attrs ){
Super (context, attrs );
LayoutInflater inflater = LayoutInflater. from (context );
Inflater. inflate (R. drawable. actor_viewpager_layout, this, true );
ViewPager = (ViewPager) findViewById (R. id. viewpager); // scroll the page
}
Public void setDates (List <View> lists ){
This. lists = lists;
}
Public void initDisplay (){
MyAdapter = new MyAdapter (lists );
ViewPager. setAdapter (myAdapter );
}
Public void notifyDataSetChanged (){
MyAdapter. notifyDataSetChanged ();
}
/**
* Set the page to display
* @ Param count
*/
Public void setCurrentItem (int count ){
ViewPager. setCurrentItem (count );
}
/**
* Add a page feed listener for viewPager
* @ Param onPageChangeListener
*/
Public void setOnPageChangeListener (OnPageChangeListener onPageChangeListener ){
ViewPager. setOnPageChangeListener (onPageChangeListener );
}
/**
* ViewPager fixed adapters inherit PagerAdapter
* @ Author Administrator
*
*/
Class MyAdapter extends PagerAdapter {
Private List <View> views;
Public MyAdapter (List <View> lists ){
This. views = lists;
}
@ Override
Public int getCount (){
Return views. size ();
}
@ Override
Public boolean isViewFromObject (View arg0, Object arg1 ){
Return arg0 = arg1;
}
@ Override
Public int getItemPosition (Object object ){
Return su ...... remaining full text>