Welcome to the Csdn-markdown Editor

Source: Internet
Author: User

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

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.