ViewPager实现每隔两秒自动切换图片
来源:互联网 发布:数据挖掘软件排名 编辑:程序博客网 时间:2024/05/17 00:56
布局代码:
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.ViewPager12 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 @Override103 public void onPageScrollStateChanged(int arg0) {104 // TODO Auto-generated method stub105 106 }107 });108 109 }110 111 private class ViewPagerAdapter extends PagerAdapter {112 113 @Override114 public int getCount() {115 // TODO Auto-generated method stub116 return images.size();117 }118 119 //是否是同一张图片120 @Override121 public boolean isViewFromObject(View arg0, Object arg1) {122 // TODO Auto-generated method stub123 return arg0 == arg1;124 }125 126 @Override127 public void destroyItem(ViewGroup view, int position, Object object) {128 // TODO Auto-generated method stub129 // super.destroyItem(container, position, object);130 // view.removeViewAt(position);131 view.removeView(images.get(position));132 133 }134 135 @Override136 public Object instantiateItem(ViewGroup view, int position) {137 // TODO Auto-generated method stub138 view.addView(images.get(position));139 140 return images.get(position);141 }142 }143 144 @Override145 protected void onStart() {146 // TODO Auto-generated method stub147 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 @Override159 public void run() {160 // TODO Auto-generated method stub161 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 @Override172 public void handleMessage(Message msg) {173 // TODO Auto-generated method stub174 //设置当前页面175 mViewPager.setCurrentItem(currentItem);176 }177 178 };179 180 @Override181 protected void onStop() {182 // TODO Auto-generated method stub183 super.onStop();184 }185 186 187 188 }
0 0
- ViewPager实现每隔两秒自动切换图片
- ViewPager实现每隔两秒自动切换图片
- ViewPager实现每隔两秒自动切换图片 (再续)
- 自定义ViewPager实现图片自动切换
- android-ViewPager实现图片自动切换
- ViewPager实现自动切换图片(一)
- 学习日记--ViewPager实现图片自动切换
- 使用ViewPager实现图片自动切换
- 每隔几秒切换一次文本的TextView的实现
- 图片自动切换效果ViewPager
- ViewPager触摸切换图片并自动切换
- ViewPager实现自动循环切换
- 图片每隔5秒抖动
- ViewPager图片切换简单实现
- ScrollView+ViewPager(上下滚动+自动切换图片)
- 每隔20秒自动绑定事件livequery
- 每隔一秒自动执行函数(JavaScript)
- 利用setInterval()实现每隔两秒依次出现数组中的一个值
- Android ListView 图片异步加载和图片内存缓存机制
- lsof
- drop > truncate > delete
- Asp.net 学习
- C语言 实现ATM系统
- ViewPager实现每隔两秒自动切换图片
- Oracle_spatial的函数介绍
- 小竹韶IT 第四回 将海淘进行到底
- 12.lua学习笔记:环境
- mssql 中 with(nolock)浅析
- HTML入门笔记五之HTML整体知识点
- SDUT OJ 走迷宫
- 【android】android获取各种目录的方法
- 贪心算法算法导论 找零问题