viewPager+Handler+Timer简单实现广告轮播效果

     基本思想是在Avtivity中放一个ViewPager,然后通过监听去实现联动效果,代码理由详细的解释,我就不说了。

  MainActivity.java

  1 package com.example.administrator.imageviewlunbodemo;
  2 
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.os.Handler;
  6 import android.os.Message;
  7 import android.support.v4.view.PagerAdapter;
  8 import android.support.v4.view.ViewPager;
  9 import android.view.LayoutInflater;
 10 import android.view.View;
 11 import android.view.ViewGroup;
 12 import android.widget.ImageView;
 13 
 14 import java.util.ArrayList;
 15 import java.util.List;
 16 import java.util.Timer;
 17 import java.util.TimerTask;
 18 
 19 
 20 public class MainActivity extends Activity {
 21 
 22     private ViewPager myViewPager;
 23     private List<View> myContiontar = new ArrayList<>();   //viewPager的数据源
 24     private PagerAdapter myPagerAdapter;   //有了数据源,必然要有适配器
 25 
 26     private ImageView imageView1;
 27     private ImageView imageView2;
 28     private ImageView imageView3;
 29     private ImageView imageView4;
 30     private ImageView imageView5;
 31 
 32     private Timer mTimer;
 33     private Timertask mTimertask;
 34 
 35     @Override
 36     protected void onCreate(Bundle savedInstanceState) {
 37         super.onCreate(savedInstanceState);
 38         setContentView(R.layout.activity_main);
 39 
 40         initViews();  //初始化各种View
 41 
 42         myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
 43             @Override
 44             public void onPageScrolled(int i, float v, int i2) {
 45 
 46             }
 47 
 48             @Override
 49             public void onPageSelected(int i) {
 50                 selectImageId(i);
 51             }
 52 
 53             @Override
 54             public void onPageScrollStateChanged(int i) {
 55 
 56             }
 57         });
 58 
 59         mTimertask = new Timertask();
 60         mTimer = new Timer();
 61         mTimer.schedule(mTimertask,0,2000);
 62 //        //启动时选择第一张图片
 63 //        imageView1.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_select);
 64 
 65 
 66     }
 67 
 68     //初始化各种View
 69     private void initViews(){
 70         // 先将xml文件 换成 view
 71         myViewPager = (ViewPager) findViewById(R.id.viewpager);
 72 
 73         imageView1 = (ImageView) findViewById(R.id.first_fragment_down_image1);
 74         imageView2 = (ImageView) findViewById(R.id.first_fragment_down_image2);
 75         imageView3 = (ImageView) findViewById(R.id.first_fragment_down_image3);
 76         imageView4 = (ImageView) findViewById(R.id.first_fragment_down_image4);
 77         imageView5 = (ImageView) findViewById(R.id.first_fragment_down_image5);
 78 
 79         //建立五个view 去获得四个ImageView
 80         View view1 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.lunbo_image1, null);
 81         View view2 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.lunbo_image2,null);
 82         View view3 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.lunbo_image3, null);
 83         View view4 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.lunbo_image4, null);
 84         View view5 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.lunbo_image5,null);
 85         //加入到容器里面
 86         myContiontar.add(view1);
 87         myContiontar.add(view2);
 88         myContiontar.add(view3);
 89         myContiontar.add(view4);
 90         myContiontar.add(view5);
 91         //初始化 适配器
 92         myPagerAdapter = new PagerAdapter() {
 93             //返回显示多少项
 94             @Override
 95             public int getCount() {
 96                 return myContiontar.size();
 97             }
 98 
 99             @Override
100             public boolean isViewFromObject(View view, Object o) {
101                 return view == o;
102             }
103             //滑动切换时,移除当前组件
104             @Override
105             public void destroyItem(ViewGroup container, int position, Object object) {
106                 container.removeView(myContiontar.get(position));
107             }
108             //没次滑动时生成的组件
109             @Override
110             public Object instantiateItem(ViewGroup container, int position) {
111                 container.addView(myContiontar.get(position));
112                 return myContiontar.get(position);
113             }
114         };
115         //设置适配器
116         myViewPager.setAdapter(myPagerAdapter);
117     }
118 
119     //选择那个图片
120     private void selectImageId(int i){
121         initImageBackGround();
122         switch (i){
123             case 0:
124                 imageView1.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_select);
125                 break;
126             case 1:
127                 imageView2.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_select);
128                 break;
129             case 2:
130                 imageView3.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_select);
131                 break;
132             case 3:
133                 imageView4.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_select);
134                 break;
135             case 4:
136                 imageView5.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_select);
137                 break;
138         }
139     }
140     //初始化 所有Image的背景
141     private void initImageBackGround(){
142         imageView1.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_normal);
143         imageView2.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_normal);
144         imageView3.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_normal);
145         imageView4.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_normal);
146         imageView5.setBackgroundResource(R.drawable.wallet_coin_purse_guide_purse_dot_normal);
147     }
148 
149     int count = 0;
150     private Handler mhandler = new Handler(){
151 
152         @Override
153         public void handleMessage(Message msg) {
154             super.handleMessage(msg);
155             if (msg.what == 0x111){
156                 //操作
157                 count++;
158                 myViewPager.setCurrentItem(count % 5);
159             }
160         }
161     };
162 
163     //建立一个Timertask
164     class Timertask extends TimerTask{
165 
166         @Override
167         public void run() {
168             mhandler.sendEmptyMessage(0x111);  //发送空消息
169         }
170     }
171 }

主布局文件里面放了一个ViewPager和五个ImageView(就是那种小点点)

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:gravity="center|bottom">
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v4.view.ViewPager>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:orientation="horizontal"
            android:layout_gravity="center|bottom">
            <ImageView
                android:id="@+id/first_fragment_down_image1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
            <ImageView
                android:id="@+id/first_fragment_down_image2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
            <ImageView
                android:id="@+id/first_fragment_down_image3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
            <ImageView
                android:id="@+id/first_fragment_down_image4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
            <ImageView
                android:id="@+id/first_fragment_down_image5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
        </LinearLayout>
    </FrameLayout>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.5"
        android:background="@color/fitst_fragment_image_color"/>
</LinearLayout>

在ViewPager中我创建了五个布局文件,都很简单,里面就只有一个ImageView去显示图片

images.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/first_fragment_lunbo_image1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/image1"
        />
</LinearLayout>

然后在用Timer让它每隔2秒去发送一次消息,通知ViewPager更新,就形成了简单的图片轮播效果。

  效果图:

posted @ 2015-09-02 17:38  灬布衣丶公爵丨  阅读(671)  评论(0编辑  收藏  举报