android 静态图片自动切换,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 初始化 控件;

android:id="@+id/flipper"

android:layout_width="match_parent"

android:layout_height="300dp" >

4.2 业务实现

0818b9ca8b590ca3270a3433284dd417.png

(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 下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值