Android: Use ViewPager to implement advertisement bar

Source: Internet
Author: User

Android: Use ViewPager to implement advertisement bar

Currently, you can switch the advertising bar automatically or manually.

 

I implemented it using ViewPager. I don't talk much about it. The Code is as follows:

 

1. layout_ad_pager.xml

 

2. Main Code: AdPagerMainActivity. java

 

 

Package app. adpager; import java. util. arrayList; import java. util. list; import java. util. concurrent. atomic. atomicInteger; import android. support. v7.app. actionBarActivity; import android. support. v4.view. pagerAdapter; import android. support. v4.view. viewPager; import android. support. v4.view. viewPager. onPageChangeListener; import android. annotation. suppressLint; import android. content. context; import android. OS. bundle; import android. OS. handler; import android. OS. message; import android. OS. parcelable; import android. view. motionEvent; import android. view. view; import android. view. viewGroup; import android. view. window; import android. widget. imageView; import android. widget. linearLayout; public class AdPagerMainActivity extends ActionBarActivity {private ImageView mDefaultImage = null; private ViewPager mImagePager = null; private ImageView [] mImageViews = null; private AtomicInteger what = new AtomicInteger (0 ); private boolean isContinue = true; private List
 
  
AdvPics; private Context mContext; private ImageView mImageView; @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); requestWindowFeature (Window. FEATURE_NO_TITLE); setContentView (R. layout. layout_ad_pager); init (); initView (); initViewPager ();}/*** initialize data */private void init () {mContext = this; advPics = new ArrayList
  
   
();}/*** Initialization control */private void initView () {// TODO Auto-generated method stub mDefaultImage = (ImageView) findViewById (R. id. home_default_image); mImagePager = (ViewPager) findViewById (R. id. adv_pager);}/*** void */private void initViewPager () {// TODO Auto-generated method stub mDefaultImage. setVisibility (View. GONE); mImagePager. setVisibility (View. VISIBLE); ImageView img1 = new ImageView (mC Ontext); img1.setBackgroundResource (R. drawable. img1); advPics. add (img1); ImageView img2 = new ImageView (mContext); img2.setBackgroundResource (R. drawable. img2); advPics. add (img2); ImageView img3 = new ImageView (mContext); img3.setBackgroundResource (R. drawable. img3); advPics. add (img3); ImageView img4 = new ImageView (mContext); img4.setBackgroundResource (R. drawable. img4); advPics. add (img4); // group is R. layou. in mainview, LinearLayout is used to enclose small dots. viewGroup group = (ViewGroup) findViewById (R. id. viewGroup); mImageViews = new ImageView [advPics. size ()]; LinearLayout. layoutParams layoutParams = new LinearLayout. layoutParams (13, 13); layoutParams. setMargins (5, 0, 5, 1); for (int I = 0; I <advPics. size (); I ++) {mImageView = new ImageView (this); mImageView. setLayoutParams (layoutParams); mImageViews [I] = mI MageView; if (I = 0) {// by default, the first image mImageViews [I] is selected. setBackgroundResource (R. drawable. item_focus);} else {mImageViews [I]. setBackgroundResource (R. drawable. item_unfocus);} group. addView (mImageViews [I]);} mImagePager. setAdapter (new AdvAdapter (advPics); mImagePager. setOnPageChangeListener (new GuidePageChangeListener (); // do not continue to slide regularly when you press it, and continue to slide regularly when it starts. setOnTouchListener (new View. onTouchListene R () {@ 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 ;}); // timed sliding Thread new Thread (new Runnable () {@ Override public void run () {while (true) {if (isContinue) {view Handler. sendEmptyMessage (what. get (); whatOption ();}}}}). start ();}/*** operation to rotate dots to change the background */private void whatOption () {what. incrementAndGet (); if (what. get ()> mImageViews. length-1) {what. getAndAdd (-mImageViews. length);} try {if (what. get () = 1) {Thread. sleep (3000);} else {Thread. sleep (2000) ;}} catch (InterruptedException e) {}}/*** switch the handle of the advertisement bar image at regular intervals */@ SuppressLint (HandlerLeak) priva Te final Handler viewHandler = new Handler () {@ Override public void handleMessage (Message msg) {mImagePager. setCurrentItem (msg. what); super. handleMessage (msg) ;}};/** listener for modifying the guide page */private final class GuidePageChangeListener implements OnPageChangeListener {@ Override public void onPageScrollStateChanged (int arg0) {}@ Override public void onPageScrolled (int arg0, float arg1, int arg2) {}@ Over Ride public void onPageSelected (int arg0) {arg0 = arg0 % advPics. size (); for (int I = 0; I <mImageViews. length; I ++) {mImageViews [arg0]. setBackgroundResource (R. drawable. item_focus); if (arg0! = I) {mImageViews [I]. setBackgroundResource (R. drawable. item_unfocus) ;}} what. set (arg0) ;}}/*** @ Description: Ad bar PaperView image adapter */private final class AdvAdapter extends PagerAdapter {private List
   
    
Views = null; public AdvAdapter (List
    
     
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 ){}}}
    
   
  
 

 

 

 

 

 

 

 

 

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.