Android-ViewFlipper(图片轮播 和 手势控制 实例)

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



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值