Android new Features page Viewpager drag to the last page and drag to open other activity (three methods) _android

Source: Internet
Author: User
Tags object object

Android new Features page, Viewpager Drag to the last page and drag to open other activity. There are many ways to implement, the effect is more good is to the last page and then drag and drop the blue bar to jump activity

Way one: Get the viewpager of the boundary bar Edgeeffectcompat, to determine whether to the boundary (get Edgeeffectcompat through reflection, method from the end of the network will give the original)

/** * Initialize view */private void Initview () {pager = (Viewpager) Findviewbyid (r.id.help_viewpages); 
try {Field Leftedgefield = Pager.getclass (). Getdeclaredfield ("Mleftedge"); 
Field Rightedgefield = Pager.getclass (). Getdeclaredfield ("Mrightedge"); 
if (Leftedgefield!= null && rightedgefield!= null) {leftedgefield.setaccessible (true); 
Rightedgefield.setaccessible (TRUE); 
Leftedge = (Edgeeffectcompat) leftedgefield.get (pager); 
Rightedge = (Edgeeffectcompat) rightedgefield.get (pager); 
} catch (Exception e) {e.printstacktrace ();  
Pager.setonpagechangelistener (New Onpagechangelistener () {@Override public void onpagescrollstatechanged (int arg0) { if (rightedge!=null&&!rightedge.isfinished ()) {//to the last one and continue dragging, the blue bar startactivity (New Intent ( 
Helpactivity.this, Mainactivity.class)); 
HelpActivity.this.finish (); @Override public void onpageselected (int arg0) {} @Override public void onpagescrolled (int arg0, float arg1, in  T arg2) {}});

Method Two: is also in the Onpagechangelistener to determine whether the current scrolling pages are the last page

Pager.setonpagechangelistener (New Onpagechangelistener () { 
@Override public 
void onpageselected (int arg0) { 
} 
@Override public 
void onpagescrolled (int arg0, float arg1, int arg2) { 
} 
@Override public 
Void onpagescrollstatechanged (int arg0) { 
//Determine whether the current page = = Total number of pages 
} 

In this small series recommended method One, method two need to Judge pagescrollstatechanged (int arg0) of the rolling state, can also achieve the same effect

Reprint Master Viewpager The solution for displaying yellow or blue gradient pictures when dragging to the left and right (for future reference)

Package com.example.viewpagertest; 
Import Java.lang.reflect.Field; 
Import java.util.ArrayList; 
Import java.util.List; 
Import android.app.Activity; 
Import Android.os.Bundle; 
Import Android.support.v4.view.PagerAdapter; 
Import Android.support.v4.view.ViewPager; 
Import Android.support.v4.view.ViewPager.OnPageChangeListener; 
Import Android.support.v4.widget.EdgeEffectCompat; 
Import Android.view.View; 
Import Android.view.ViewGroup; 
Import Android.widget.ImageView; 
public class Mainactivity extends activity implements Onpagechangelistener {private Viewpager viewpager; 
Private list<imageview> views; 
Private Edgeeffectcompat Leftedge; 
Private Edgeeffectcompat Rightedge; Private int[] ids = {r.drawable.iframe_4,r.drawable.iframe_5,r.drawable.iframe_6,r.drawable.iframe_7, 
R.drawable.iframe_8}; 
Private Myadapter adapter; 
@Override protected void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); 
Setcontentview (R.layout.activity_main); Initview(); 
private void Initview () {Viewpager = (Viewpager) Findviewbyid (R.id.viewpager); 
Initviewpager (); 
InitData (); 
private void InitData () {views = new arraylist<imageview> (); 
for (int i=0;i<ids.length;i++) {ImageView IV = new ImageView (this); 
Iv.setimageresource (Ids[i]); 
Views.add (iv); 
} adapter = new Myadapter (); 
Viewpager.setadapter (adapter); 
Viewpager.setonpagechangelistener (this); 
Class Myadapter extends pageradapter{@Override public int GetCount () {return views.size (); 
@Override public boolean isviewfromobject (View arg0, Object arg1) {return arg0==arg1; @Override public void Destroyitem (ViewGroup container, int position, object object) {(Viewpager) container). Removevi 
EW (views.get (position)); @Override public Object Instantiateitem (viewgroup container, int position) {(Viewpager) container). AddView (Views.get 
(position)); 
return Views.get (position); @Override public void onpagescrollstatechanged (int arg0) {} @OverriDe public void onpagescrolled (int arg0, float arg1, int arg2) {if (Leftedge!= null && rightedge null) {Le 
Ftedge.finish (); 
Rightedge.finish (); 
Leftedge.setsize (0, 0); 
Rightedge.setsize (0, 0); @Override public void onpageselected (int arg0) {} private void Initviewpager () {try {Field Leftedgefield = V 
Iewpager.getclass (). Getdeclaredfield ("Mleftedge"); 
Field Rightedgefield = Viewpager.getclass (). Getdeclaredfield ("Mrightedge"); 
if (Leftedgefield!= null && rightedgefield!= null) {leftedgefield.setaccessible (true); 
Rightedgefield.setaccessible (TRUE); 
Leftedge = (Edgeeffectcompat) leftedgefield.get (Viewpager); 
Rightedge = (Edgeeffectcompat) rightedgefield.get (Viewpager); 
} catch (Exception e) {e.printstacktrace ();  } 
} 
}

The above is a small set to introduce the new features of Android page Viewpager drag and drop to the last page and then drag and drop open other activity (three methods), I hope to help you, if you have any questions please give me a message, small series will promptly reply to everyone. Here also thank you very much for the cloud Habitat Community website support!

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.