Android: Use ViewPager to implement the advertisement bar, androidviewpager
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
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="160dp" android:baselineAligned="false" > <ImageView android:id="@+id/home_default_image" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="fitXY" android:src="@drawable/home_log_default" android:visibility="gone" /> <android.support.v4.view.ViewPager android:id="@+id/adv_pager" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/img2" > </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/viewGroup" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:layout_marginBottom="5dp" android:gravity="center" android:orientation="horizontal" > </LinearLayout></FrameLayout>
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 <View> 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_pa Ger); init (); initView (); initViewPager ();}/*** initialize data */private void init () {mContext = this; advPics = new ArrayList <View> ();}/*** 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-generat Ed method stub mDefaultImage. setVisibility (View. GONE); mImagePager. setVisibility (View. VISIBLE); ImageView img1 = new ImageView (mContext); 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); advPi Cs. add (img3); ImageView img4 = new ImageView (mContext); img4.setBackgroundResource (R. drawable. img4); advPics. add (img4); // The 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] = mImageView; 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. setOn PageChangeListener (new GuidePageChangeListener (); // do not continue to slide regularly when you press the button. setOnTouchListener (new View. 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 ;}}); // scheduled sliding Thread new Thread (new Runnable () {@ Override public void run () {while (true) {if (isContinue) {viewHandler. 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 ") private 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 {@ Overrid E public void onPageScrollStateChanged (int arg0) {}@ Override public void onPageScrolled (int arg0, float arg1, int arg2) {}@ Override 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 <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 ){}}}
Image resources: