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 初始化 控件;
<ViewFlipperandroid: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{@Overridepublic 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 下载
/detail/lablenet/9044777