1.回顾
上篇 学习了 ViewPager 的 使用的三种方式,分别通过 PagerAdapter , FragmentPagerAdapter 和 FragmentStatePagerAdapter
2. 重点
(1)ViewFlipper
(2)图片轮播 (自动)
(3)手势控制
(4)OnTouchListener
3.ViewFliper
3.1 介绍
多页面管理控件,实现子页面自动切换
3.2 添加View
给ViewFliper加入View的两种方式:
静态导入:将图片写死的,不灵活
动态导入:动态生成 ImageView ,通过 addView() 方法加入到ViewFliper中
3.3 控制
(1)设置时间间隔,自动切换 ,可以添加 切换效果
(2)手势控制 通过 OnTouchListener事件
4.图片轮播 自动切换
4.1 布局实现
添加 id ,后 通过 findViewById 初始化 控件;
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="match_parent"
android:layout_height="300dp" >
</ViewFlipper>
4.2 业务实现
(1)初始化控件和准备数据
在Drawable 文件夹下 准备 4 张图片 ,声明数组 将 id 添加到数组中;
private ViewFlipper flipper;
private int [] ids={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4};
(2)代码实现
注意:图片尽量控制在200k以内,否则 报 内存溢出 错误;
flipper=(ViewFlipper) findViewById(R.id.flipper);
//动态倒入 :设置资源
for (int i : ids) {
ImageView imageView=new ImageView(this);
//imageView.setBackgroundResource(i);
imageView.setImageResource(i);
flipper.addView(imageView);
}
//设置切换时间间隔
flipper.setFlipInterval(3000);
//启动
flipper.startFlipping();
5.手势控制
实现 OnTouchListener 事件;
开始的时候,在ACTION_MOVE里判断 ,这样是不好的,切换太频繁了,看不到效果;
最后的实现是,当手指离开的时候,判断切换,故在ACTION_UP里 进行判断;
class flipperOnTouchListener implements OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
// 手势判断
switch (event.getAction()) {
//手势按下
case MotionEvent.ACTION_DOWN:
//获取手指按下的点
start=(int) event.getX();
break;
//手势移动
case MotionEvent.ACTION_MOVE:
//移动判断
break;
//手离开
case MotionEvent.ACTION_UP:
//按下的点 和结束的点 的插 大于100 为 向右
if(start - event.getX()>1000){
//可以添加过度效果
//下一张
flipper.showPrevious();
}
//按下的点 和结束的点 的插 小于100 为 向左
if(start - event.getX()<1000){
//上一张
flipper.showNext();
}
break;
}
return true;
}
}
给Flipper 添加事件 :
flipper.setOnTouchListener(new flipperOnTouchListener());
6.demo 下载
http://download.csdn.net/detail/lablenet/9044777