Android Viewpager Sliding navigation menu

Source: Internet
Author: User

A sliding menu that does not fill the entire page, or it can be an auto-swipe ad ~

Package View.example.viewpagerexample;import Java.util.arraylist;import Java.util.list;import Java.util.concurrent.atomic.atomicinteger;import Android.os.bundle;import Android.os.handler;import Android.os.message;import Android.support.v4.view.pageradapter;import Android.support.v4.view.viewpager;import Android.support.v4.view.viewpager.onpagechangelistener;import Android.util.displaymetrics;import Android.view.view;import Android.view.viewgroup;import Android.view.viewgroup.layoutparams;import Android.widget.imageview;import Android.widget.linearlayout;import Android.app.activity;public class MainActivity Extends Activity {private Viewpager adviewpager;private linearlayout pagerlayout;private list<view> pageViews; Private imageview[] imageviews;private ImageView imageview;private adpageadapter adapter;private Atomicinteger Atomicinteger = new Atomicinteger (0);p rivate boolean iscontinue = true; @Overrideprotected void OnCreate (Bundle Savedinstancestate) {super.oncreate (SavedinstancEState); Setcontentview (R.layout.main); Initviewpager ();} private void Initviewpager () {//Get Viewpager parent container from layout file Pagerlayout = (linearlayout) Findviewbyid (r.id.view_pager_ content);//Create Viewpageradviewpager = new Viewpager (this);//Get screen pixel related information displaymetrics dm = new Displaymetrics (); Getwindowmanager (). Getdefaultdisplay (). Getmetrics (DM);//depending on the screen information, set the Viewpager advertisement container's width and height adviewpager.setlayoutparams ( New Layoutparams (Dm.widthpixels,dm.heightpixels * 2/5));//Set Viewpager container to the parent container of the layout file Pagerlayout.addview (Adviewpager) ; Initpageadapter (); Initcirclepoint (); Adviewpager.setadapter (adapter); Adviewpager.setonpagechangelistener (new Adpagechangelistener ()); new Thread (New Runnable () {@Overridepublic void run () {while (true) {if (iscontinue) { Viewhandler.sendemptymessage (Atomicinteger.get ()); Atomicoption ();}}}). Start ();} private void Atomicoption () {atomicinteger.incrementandget (); if (Atomicinteger.get () > Imageviews.length-1) { Atomicinteger.getandadd (-5);} try {thread.sleep;} catch (Interruptedexception e) {}}/* * Toggle banner image at regular intervals */private final Handler Viewhandler = new Handler () {@Overridepublic void Handlemessage (Message msg {Adviewpager.setcurrentitem (msg.what); Super.handlemessage (msg);}}; private void Initpageadapter () {pageviews = new arraylist<view> (); ImageView img1 = new ImageView (this); Img1.setbackgroundresource (R.DRAWABLE.PIC1);p ageviews.add (IMG1); ImageView img2 = new ImageView (this); Img2.setbackgroundresource (R.drawable.pic2);p ageviews.add (IMG2); ImageView img3 = new ImageView (this); Img3.setbackgroundresource (R.DRAWABLE.PIC3);p ageviews.add (IMG3); ImageView img4 = new ImageView (this); Img4.setbackgroundresource (R.DRAWABLE.PIC4);p ageviews.add (IMG4); ImageView img5 = new ImageView (this); Img5.setbackgroundresource (R.DRAWABLE.PIC5);p ageviews.add (IMG5); ImageView img6 = new ImageView (this); Img6.setbackgroundresource (R.DRAWABLE.PIC6);p ageviews.add (IMG6); adapter = new Adpageadapter (pageviews);} private void Initcirclepoint () {ViewGroup group = (viewgroup) Findviewbyid (r.id.viewgroup); IMageviews = new Imageview[pageviews.size ()];//dot icon for (int i = 0; i < pageviews.size (); i++) {//Create a ImageView and Set the width height. Put the object into the array ImageView = new ImageView (this); Imageview.setlayoutparams (new Layoutparams (Ten)); Imageviews[i] = imageview;//initial value, default No. 0 Check if (i = = 0) {imageviews[i].setbackgroundresource (r.drawable.point_focused);} else {imageviews [I].setbackgroundresource (r.drawable.point_unfocused);} Place small dots into the layout group.addview (Imageviews[i]);}} /** * Viewpager page Change listener */private final class Adpagechangelistener implements Onpagechangelistener {/** * trigger when page scroll status changes */@Overridepublic void onpagescrollstatechanged (int arg0) {}/** * * when scrolling the page */@Overridepublic void onpagescrolled (int arg0, float arg1, int arg2) {}/** * page is selected when triggered */@Overridepublic void onpageselected (int arg0) {//Gets which page of the currently displayed page Atomicinte Ger.getandset (arg0);//reset Origin layout set for (int i = 0; i < imageviews.length; i++) {Imageviews[arg0].setbackgroundresource ( r.drawable.point_focused); if (arg0! = i) {Imageviews[i].setbackGroundresource (r.drawable.point_unfocused);}}} Private Final class Adpageadapter extends Pageradapter {private list<view> views = null;/** * Initializes the data source, which is the View array */publ IC Adpageadapter (list<view> views) {this.views = views;} /** * Delete The View object for the corresponding index in the collection from Viewpager */@Overridepublic void Destroyitem (view container, int position, object object) {(view Pager) container). Removeview (Views.get (position));} /** * Gets the number of Viewpager */@Overridepublic int getcount () {return views.size ();} /** * Gets the element of the corresponding index from the View collection and adds it to the Viewpager */@Overridepublic Object instantiateitem (view container, int position) {( Viewpager) container). AddView (Views.get (position), 0); return views.get (position);} /** * Whether to associate the displayed Viewpager page with the object returned by Instantiateitem This method is mandatory */@Overridepublic Boolean isviewfromobject (View view, Object object) {return view = = object;}}}

XML code:

<?xml version= "1.0" encoding= "Utf-8"? ><linearlayout xmlns:android= "http://schemas.android.com/apk/res/ Android "Android:layout_width=" Match_parent "android:layout_height=" match_parent "android:orientation=" vertical " > <relativelayout android:layout_width= "fill_parent" android:layout_height= "Fill_parent" and roid:layout_weight= "5" android:orientation= "vertical" > <linearlayout android:id= "@+id/view            _pager_content "android:layout_width=" wrap_content "android:layout_height=" Wrap_content " android:orientation= "vertical"/> <linearlayout android:id= "@+id/viewgroup" Android:lay Out_width= "Fill_parent" android:layout_height= "wrap_content" android:layout_below= "@id/view_pager_co Ntent "android:layout_margintop=" -25px "android:gravity=" right "android:orientation=" Hori Zontal "> </linearlayout> </RelativeLayout> <linearlayout android:layout_width= "Fill_parent" Android:layout_heig ht= "Fill_parent" android:layout_weight= "2" android:background= "@color/white" android:orientation= "ver Tical "> </LinearLayout></LinearLayout>

  

Android Viewpager Sliding navigation menu

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.