ViewPager实现每隔两秒自动切换图片



布局代码:

复制代码
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <FrameLayout 
 7         android:layout_width="fill_parent"
 8         android:layout_height="200dip"        
 9         >
10         
11         <android.support.v4.view.ViewPager
12             android:id="@+id/vp"
13             android:layout_width="fill_parent"
14             android:layout_height="fill_parent"
15             />
16         
17         <LinearLayout 
18             android:layout_width="fill_parent"
19             android:layout_height="35dip"
20             android:orientation="vertical"
21             android:layout_gravity="bottom"
22             android:gravity="center"
23             android:background="#33000000"
24             >
25             
26             <TextView 
27                 android:id="@+id/title"
28                 android:layout_width="wrap_content"
29                 android:layout_height="wrap_content"
30                 android:text="图片标题"
31                 android:textColor="@android:color/white"
32                 />
33             
34             <LinearLayout 
35                 android:layout_width="wrap_content"
36                 android:layout_height="wrap_content"
37                 android:orientation="horizontal"
38                 android:layout_marginTop="3dip"
39                 >
40                 
41                 <View 
42                     android:id="@+id/dot_0"
43                     android:layout_width="5dip"
44                     android:layout_height="5dip"
45                     android:layout_marginLeft="2dip"
46                     android:layout_marginRight="2dip"
47                     android:background="@drawable/dot_focused"
48                     />
49                 <View 
50                     android:id="@+id/dot_1"
51                     android:layout_width="5dip"
52                     android:layout_height="5dip"
53                     android:layout_marginLeft="2dip"
54                     android:layout_marginRight="2dip"
55                     android:background="@drawable/dot_normal"
56                     />
57                 <View 
58                     android:id="@+id/dot_2"
59                     android:layout_width="5dip"
60                     android:layout_height="5dip"
61                     android:layout_marginLeft="2dip"
62                     android:layout_marginRight="2dip"
63                     android:background="@drawable/dot_normal"
64                     />
65                 <View 
66                     android:id="@+id/dot_3"
67                     android:layout_width="5dip"
68                     android:layout_height="5dip"
69                     android:layout_marginLeft="2dip"
70                     android:layout_marginRight="2dip"
71                     android:background="@drawable/dot_normal"
72                     />
73                 <View 
74                     android:id="@+id/dot_4"
75                     android:layout_width="5dip"
76                     android:layout_height="5dip"
77                     android:layout_marginLeft="2dip"
78                     android:layout_marginRight="2dip"
79                     android:background="@drawable/dot_normal"
80                     />
81                 
82             </LinearLayout>
83             
84             
85         </LinearLayout>
86         
87     </FrameLayout>
88     
89     
90 </RelativeLayout>
复制代码

 

正常的shape图形dot_normal.xml:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
 3     android:shape="oval"
 4     >
 5     
 6     <corners android:radius="5dip" />
 7     
 8     <solid android:color="#55000000" />
 9 
10 </shape>
复制代码

获取焦点的shape图形 dot_focused.xml

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
 3     android:shape="oval"
 4     >
 5     
 6     <corners android:radius="5dip" />
 7     
 8     <solid android:color="#aaFFFFFF" />
 9 
10 </shape>
复制代码

 

 

具体实现代码:

复制代码
  1 import java.util.ArrayList;
  2 import java.util.concurrent.Executors;
  3 import java.util.concurrent.ScheduledExecutorService;
  4 import java.util.concurrent.TimeUnit;
  5 
  6 import android.app.Activity;
  7 import android.os.Bundle;
  8 import android.os.Handler;
  9 import android.os.Message;
 10 import android.support.v4.view.PagerAdapter;
 11 import android.support.v4.view.ViewPager;
 12 import android.support.v4.view.ViewPager.OnPageChangeListener;
 13 import android.view.View;
 14 import android.view.ViewGroup;
 15 import android.widget.ImageView;
 16 import android.widget.TextView;
 17 
 18 public class MainActivity extends Activity {
 19 
 20     private int imageIds[];
 21     private String[] titles;
 22     private ArrayList<ImageView> images;
 23     private ArrayList<View> dots;
 24     private TextView title;
 25     private ViewPager mViewPager;
 26     private ViewPagerAdapter adapter;
 27     
 28     private int oldPosition = 0;//记录上一次点的位置
 29     private int currentItem; //当前页面
 30     private ScheduledExecutorService scheduledExecutorService;
 31 
 32     @Override
 33     public void onCreate(Bundle savedInstanceState) {
 34         super.onCreate(savedInstanceState);
 35         setContentView(R.layout.activity_main);
 36         
 37         //图片ID
 38         imageIds = new int[]{
 39             R.drawable.a,    
 40             R.drawable.b,    
 41             R.drawable.c,    
 42             R.drawable.d,    
 43             R.drawable.e    
 44         };
 45         
 46         //图片标题
 47         titles = new String[]{
 48             "巩俐不低俗,我就不能低俗",    
 49             "扑树又回来啦!再唱经典老歌引万人大合唱",    
 50             "揭秘北京电影如何升级",    
 51             "乐视网TV版大派送",    
 52             "热血屌丝的反杀"
 53         };
 54         
 55         //显示的图片
 56         images = new ArrayList<ImageView>();
 57         for(int i =0; i < imageIds.length; i++){
 58             ImageView imageView = new ImageView(this);
 59             imageView.setBackgroundResource(imageIds[i]);
 60             
 61             images.add(imageView);
 62         }
 63         
 64         //显示的点
 65         dots = new ArrayList<View>();
 66         dots.add(findViewById(R.id.dot_0));
 67         dots.add(findViewById(R.id.dot_1));
 68         dots.add(findViewById(R.id.dot_2));
 69         dots.add(findViewById(R.id.dot_3));
 70         dots.add(findViewById(R.id.dot_4));
 71         
 72         title = (TextView) findViewById(R.id.title);
 73         title.setText(titles[0]);
 74         
 75         mViewPager = (ViewPager) findViewById(R.id.vp);
 76         
 77         adapter = new ViewPagerAdapter(); 
 78         mViewPager.setAdapter(adapter);
 79         
 80         mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
 81             
 82 
 83 
 84             @Override
 85             public void onPageSelected(int position) {
 86                 // TODO Auto-generated method stub
 87                 title.setText(titles[position]);
 88                 
 89                 dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
 90                 dots.get(position).setBackgroundResource(R.drawable.dot_focused);
 91                 
 92                 oldPosition = position;
 93                 currentItem = position;
 94             }
 95             
 96             @Override
 97             public void onPageScrolled(int arg0, float arg1, int arg2) {
 98                 // TODO Auto-generated method stub
 99                 
100             }
101             
102             @Override
103             public void onPageScrollStateChanged(int arg0) {
104                 // TODO Auto-generated method stub
105                 
106             }
107         });
108         
109     }
110     
111     private class ViewPagerAdapter extends PagerAdapter {
112 
113         @Override
114         public int getCount() {
115             // TODO Auto-generated method stub
116             return images.size();
117         }
118 
119         //是否是同一张图片
120         @Override
121         public boolean isViewFromObject(View arg0, Object arg1) {
122             // TODO Auto-generated method stub
123             return arg0 == arg1;
124         }
125 
126         @Override
127         public void destroyItem(ViewGroup view, int position, Object object) {
128             // TODO Auto-generated method stub
129 //            super.destroyItem(container, position, object);
130 //            view.removeViewAt(position);
131             view.removeView(images.get(position));
132             
133         }
134 
135         @Override
136         public Object instantiateItem(ViewGroup view, int position) {
137             // TODO Auto-generated method stub
138             view.addView(images.get(position));
139             
140             return images.get(position);
141         }
142     }
143 
144     @Override
145     protected void onStart() {
146         // TODO Auto-generated method stub
147         super.onStart();
148         
149         scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
150         
151         //每隔2秒钟切换一张图片
152         scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS);
153     }
154     
155     //切换图片
156     private class ViewPagerTask implements Runnable {
157 
158         @Override
159         public void run() {
160             // TODO Auto-generated method stub
161             currentItem = (currentItem +1) % imageIds.length;
162             //更新界面
163 //            handler.sendEmptyMessage(0);
164             handler.obtainMessage().sendToTarget();
165         }
166         
167     }
168     
169     private Handler handler = new Handler(){
170 
171         @Override
172         public void handleMessage(Message msg) {
173             // TODO Auto-generated method stub
174             //设置当前页面
175             mViewPager.setCurrentItem(currentItem);
176         }
177         
178     };
179 
180     @Override
181     protected void onStop() {
182         // TODO Auto-generated method stub
183         super.onStop();
184     }
185     
186     
187 
188 }
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值