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 ){}}}