Do a simple guide page focus is actually the guide page below the point as the page slides,
Please refer to: http://blog.csdn.net/wanghao200906/article/details/45536761
Is three points fixed a point sliding calculated each point interval distance and then by the formula to calculate how many small red dots move how much. It's really simple. Here's the core code.
Smartactivity is a self-defined baseactivity.
1. Listen for layout load, load up get and calculate the distance of two static points.
2.viewpager Sliding listening events, the first few pages + sliding how much do not know the location of dynamic points
"'
Package Com.example.wang;
Import java.util.ArrayList;
Import java.util.List;
Import Com.example.wang.utils.CacheUtils;
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.view.View;
Import Android.view.View.OnClickListener;
Import Android.view.ViewGroup;
Import Android.view.ViewTreeObserver;
Import Android.view.ViewTreeObserver.OnGlobalLayoutListener;
Import Android.widget.Button;
Import Android.widget.ImageView;
Import Android.widget.LinearLayout;
Import Android.widget.RelativeLayout;
Import Android.widget.LinearLayout.LayoutParams;
/**
* @author Wang
* @version creation Time: May 6, 2015 11:28:46 class description
*/
public class Guideui extends smartactivity implements Onpagechangelistener,
Onclicklistener {
Start the experience button private buttons btnstartexperience;private list<imageview> imageviewlist; Viewpager data Private LinearLayout llpointgroup; The group of points private View Mselectpointview; Selected Point View object private int basicwidth; Width between points @overrideprotected void OnCreate (Bundle savedinstancestate) {//TODO auto-generated method stub super.oncr Eate (savedinstancestate); Setcontentview (R.layout.guide); Initview ();} private void Initview () {Viewpager Mviewpager = GetView (r.id.vp_guide); Btnstartexperience = GetView (r.id.btn_guide_start_experience); Llpointgroup = GetView (R.id.ll_guide_point_group); Mselectpointview = GetView (r.id.select_point); InitData (); Guideadapter madapter = new Guideadapter (); Mviewpager.setadapter (Madapter); Slide Monitor Mviewpager.setonpagechangelistener (this); Button Monitor Btnstartexperience.setonclicklistener (this); View drawing flow: measure, layout, draw//monitoring Mselectpointview control layout Viewtreeobserver viewtreeobserver = Msele CtpoinTView. Getviewtreeobserver (); The observer for the View tree, listening for the callback viewtreeobserver for all layouts. Addongloballayoutlistener (new Ongloballayoutlistener () { @Override public void Ongloballayout () {//executes only once, removing the current event from the viewer of the view tree Mselectpointview.getviewtreeobserver (). Removeglobalonlayoutlistener (this); Remove the width between two points basicwidth = Llpointgroup.getchildat (1). GetLeft ()-LL Pointgroup.getchildat (0). GetLeft (); System.out.println ("Width between points:" + basicwidth); } });} private void InitData () {int[] Imageresids = {r.drawable.a, r.drawable.b, r.drawable.c}; ImageView IV; View view; Layoutparams params; CTRL + 2 Let go of the pause L imageviewlist = new arraylist<imageview> (); for (int i = 0; i < imageresids.length; i++) {IV = new ImageView (this); Iv.setbaCkgroundresource (Imageresids[i]); Add animation Imageviewlist.add (iv); Add a point view = new View (this) to the LinearLayout once per loop, depending on the number of images; View.setbackgroundresource (R.drawable.point_normal); The width of the view is ten params = new Layoutparams (20, 20); Let each point have a gap between if (I! = 0) {params.leftmargin = 20; } view.setlayoutparams (params); Llpointgroup.addview (view); }}class Guideadapter extends Pageradapter {@Override public int getcount () {return imageviewlist.size (); } @Override public boolean isviewfromobject (View arg0, Object arg1) {return arg0 = = Arg1; } @Override public void Destroyitem (ViewGroup container, int position, object object) {Container.removeview ( (View) object); } @Override Public Object instantiateitem (viewgroup container, int position) {ImageView IV = IMAGEVIEWLIST.G ET (position); 1. Add a View object to Viewpager CONTAINER.ADDVIew (iv); 2. Returns the currently added view object return IV; }} @Overridepublic void OnClick (View v) {//Put Is_open_main_pager key, and then cache to store a true Cacheutils.putboolean (this, Welcome Ui.is_open_main_pager, True); Open the main page gotoactivity (Mainui.class, True);} /** * Page Status change */@Overridepublic void onpagescrollstatechanged (int arg0) {//TODO auto-generated Method stub}/** * Page scrolling Position currently selected is that page positionoffset scale positionoffsetpixels move offset pixels */@Overridepublic void onpagescrolled (int position, float positionoffset, int positionoffsetpixels) {System.out.println ("position:" + position + ", Positionoffset : "+ positionoffset); 20* (1+0.5) =30 moves the distance int leftMargin = (int) (Basicwidth * (position + positionoffset)); Relativelayout.layoutparams params = (android.widget.RelativeLayout.LayoutParams) mselectpointview. getlayoutpa Rams (); Params.leftmargin = LeftMargin; Mselectpointview.setlayoutparams (params);} /** * page is selected */@Overridepublic void onpageselected (int arg0) {if (arg0 = = Imageviewlist.size ()-1) {btnstartexperience.setvisibility (view.visible); } else {btnstartexperience.setvisibility (view.invisible); }}
}
Download code
Welcome to the Csdn-markdown Editor