Android: Use ViewPager to implement the advertisement bar, androidviewpager

Source: Internet
Author: User

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:

 








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.