Android uses Viewpager to implement sliding AD Board instance source _android

Source: Internet
Author: User
Android-support-v4.jar, this is a software package that Google has provided us with a compatible version of a low-level Android device that contains APIs that are available only in Android3.0. And Viewpager is one of them, using it we can do a lot of things, from the simplest navigation, to the page switch menu and so on.

The function of the Viewpager is to slide the view, just as Lanucher left and right.
• This demo shows you the use of Viewpager, and when the user does not slide view, automatically switch to the next view (circular switch) every 5s clock, and when the user has touch to view when cancel 5s automatic switching function. And there are indicators indicating which view is currently in.

Here's a screenshot of the run:

This is a very common application.
The following code is given for implementation:
1. Source Files
Copy Code code as follows:

Package Com.eyeandroid.viewpager;
Import java.util.ArrayList;
Import java.util.List;
Import Java.util.concurrent.atomic.AtomicInteger;
Import Android.annotation.SuppressLint;
Import android.app.Activity;
Import Android.os.Bundle;
Import Android.os.Handler;
Import Android.os.Message;
Import android.os.Parcelable;
Import Android.support.v4.view.PagerAdapter;
Import Android.support.v4.view.ViewPager;
Import Android.support.v4.view.ViewPager.OnPageChangeListener;
Import android.view.MotionEvent;
Import Android.view.View;
Import Android.view.View.OnTouchListener;
Import Android.view.ViewGroup;
Import Android.view.ViewGroup.LayoutParams;
Import Android.widget.ImageView;
@SuppressLint ("Handlerleak")
public class Mainactivity extends activity {
Private imageview[] imageviews = null;
Private ImageView ImageView = null;
Private Viewpager Advpager = null;
Private Atomicinteger what = new Atomicinteger (0);
Private Boolean iscontinue = true;
@Override
public void OnCreate (Bundle savedinstancestate) {
Super.oncreate (savedinstancestate);
Setcontentview (R.layout.main);
Initviewpager ();
}

private void Initviewpager () {
Advpager = (Viewpager) Findviewbyid (R.id.adv_pager);
ViewGroup Group = (viewgroup) Findviewbyid (R.id.viewgroup);
There are four ad backgrounds stored here.
list<view> advpics = new arraylist<view> ();
ImageView img1 = new ImageView (this);
Img1.setbackgroundresource (r.drawable.advertising_default_1);
Advpics.add (IMG1);
ImageView Img2 = new ImageView (this);
Img2.setbackgroundresource (r.drawable.advertising_default_2);
Advpics.add (IMG2);
ImageView IMG3 = new ImageView (this);
Img3.setbackgroundresource (R.drawable.advertising_default_3);
Advpics.add (IMG3);
ImageView img4 = new ImageView (this);
Img4.setbackgroundresource (R.drawable.advertising_default);
Advpics.add (IMG4);

To populate a imageviews
Imageviews = new Imageview[advpics.size ()];
Small Icons
for (int i = 0; i < advpics.size (); i++) {
ImageView = new ImageView (this);
Imageview.setlayoutparams (New Layoutparams (20, 20));
Imageview.setpadding (5, 5, 5, 5);
Imageviews[i] = ImageView;
if (i = = 0) {
Imageviews[i]
. Setbackgroundresource (R.drawable.banner_dian_focus);
} else {
Imageviews[i]
. Setbackgroundresource (R.drawable.banner_dian_blur);
}
Group.addview (Imageviews[i]);
}
Advpager.setadapter (New Advadapter (advpics));
Advpager.setonpagechangelistener (New Guidepagechangelistener ());
Advpager.setontouchlistener (New Ontouchlistener () {

@Override
public boolean Ontouch (View V, motionevent event) {
Switch (event.getaction ()) {
Case Motionevent.action_down:
Case Motionevent.action_move:
Iscontinue = false;
Break
Case MOTIONEVENT.ACTION_UP:
Iscontinue = true;
Break
Default
Iscontinue = true;
Break
}
return false;
}
});
New Thread (New Runnable () {
@Override
public void Run () {
while (true) {
if (iscontinue) {
Viewhandler.sendemptymessage (What.get ());
Whatoption ();
}
}
}
). Start ();
}

private void Whatoption () {
What.incrementandget ();
if (What.get () > Imageviews.length-1) {
What.getandadd (-4);
}
try {
Thread.Sleep (5000);
catch (Interruptedexception e) {

}
}
Private final Handler Viewhandler = new Handler () {
@Override
public void Handlemessage (msg) {
Advpager.setcurrentitem (Msg.what);
Super.handlemessage (msg);
}
};
Private Final class Guidepagechangelistener implements Onpagechangelistener {
@Override
public void onpagescrollstatechanged (int arg0) {
}
@Override
public void onpagescrolled (int arg0, float arg1, int arg2) {
}
@Override
public void onpageselected (int arg0) {
What.getandset (arg0);
for (int i = 0; i < imageviews.length; i++) {
IMAGEVIEWS[ARG0]
. Setbackgroundresource (R.drawable.banner_dian_focus);
if (arg0!= i) {
Imageviews[i]
. Setbackgroundresource (R.drawable.banner_dian_blur);
}
}
}
}
Private Final class Advadapter extends Pageradapter {
Private list<view> views = null;
Public Advadapter (list<view> views) {
This.views = views;
}
@Override
public void Destroyitem (View arg0, int arg1, Object arg2) {
((Viewpager) arg0). Removeview (Views.get (arg1));
}
@Override
public void Finishupdate (View arg0) {
}
@Override
public int GetCount () {
return Views.size ();
}
@Override
Public Object Instantiateitem (View arg0, int arg1) {
((Viewpager) arg0). AddView (Views.get (arg1), 0);
Return Views.get (ARG1);
}
@Override
public boolean isviewfromobject (View arg0, Object arg1) {
return arg0 = = Arg1;
}
@Override
public void Restorestate (parcelable arg0, ClassLoader arg1) {
}
@Override
Public parcelable SaveState () {
return null;
}
@Override
public void Startupdate (View arg0) {
}
}
}

2. layout file
This file on the screen of the picture shows a vital role
Copy Code code as follows:

<?xml version= "1.0" encoding= "Utf-8"?>
<linearlayout xmlns:android= "Http://schemas.android.com/apk/res/android"
Android:layout_width= "Fill_parent"
android:layout_height= "Fill_parent"
android:orientation= "Vertical" >
<relativelayout
Android:layout_width= "Wrap_content"
android:layout_height= "Wrap_content"
android:orientation= "Vertical" >
<!--Viewpager is a control-->
<android.support.v4.view.viewpager
Android:id= "@+id/adv_pager"
Android:layout_width= "Fill_parent"
android:layout_height= "160DP" >
</android.support.v4.view.ViewPager>
<linearlayout
Android:id= "@+id/viewgroup"
android:layout_below= "@id/adv_pager"
Android:layout_width= "Fill_parent"
android:layout_height= "Wrap_content"
android:layout_margintop= " -25px"
Android:gravity= "Right"
android:orientation= "Horizontal" >
</LinearLayout>
</RelativeLayout>
</LinearLayout>
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.