在我的博客中,上次是使用ViewPager实现左右滑动的效果的,请看文章:Android使用ViewPager实现左右滑动效果 。

这次我来使用ViewFlipper实现这种效果,好了,先看看效果吧:

效果看完了就来实现这个效果。

1.布局文件

主界面使用下面的布局:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <ViewFlipper android:id="@+id/ViewFlipper1"
  7. android:layout_width="fill_parent"
  8. android:layout_height="fill_parent">
  9. </ViewFlipper>
  10. <LinearLayout
  11. android:orientation="horizontal"
  12. android:layout_width="wrap_content"
  13. android:layout_gravity="bottom|center_horizontal"
  14. android:layout_height="wrap_content"
  15. >
  16. <ImageView
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:src="@drawable/da"
  20. android:id="@+id/imageview1"
  21. />
  22. <ImageView
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:src="@drawable/xiao"
  26. android:id="@+id/imageview2"
  27. />
  28. <ImageView
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:src="@drawable/xiao"
  32. android:id="@+id/imageview3"
  33. />
  34. <ImageView
  35. android:layout_width="wrap_content"
  36. android:layout_height="wrap_content"
  37. android:src="@drawable/xiao"
  38. android:id="@+id/imageview4"
  39. />
  40. </LinearLayout>
  41. </FrameLayout>

简单的介绍一下布局文件:最外层是一个FrameLayout,使用FrameLayout就是为了是的下面的四个点在ViewFlipper上面。LayoutLayout在FrameLayout的下面和水平居中。

2.ViewFlipper的使用

[java] view plaincopy
  1. flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper1);
  2. flipper.addView(addImageView(R.drawable.png1o));
  3. flipper.addView(addImageView(R.drawable.png2o));
  4. flipper.addView(addImageView(R.drawable.png3o));
  5. flipper.addView(addView());

在Activity中声明一个ViewFlipper的对象,在布局中找到。将三张图片加到ViewFlipper中,另外再加一个View,这个View是从XML布局文件中得到的。布局文件如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/button"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:layout_marginBottom="45dp"
  12. android:text="进入程序"
  13. android:textColor="#3E3E3E"
  14. android:layout_gravity="center_horizontal"
  15. />
  16. </LinearLayout>

在这个布局文件中有一个Button,用于跳转Activity用。

在Activity中声明一个GestureDetector对象,在onCreate方法中分配内存。

detector = new GestureDetector(this);

使用this为参数,那么就要使得activity类impllements  OnGestureListener接口。重写几个方法。覆盖父类的onTouchEvent方法,在这个方法中如下写:

[java] view plaincopy
  1. @Override
  2. public boolean onTouchEvent(MotionEvent event) {
  3. // TODO Auto-generated method stub
  4. return this.detector.onTouchEvent(event);
  5. }

这样就使得detector能接受消息响应了。

在实现OnGestureListener的方法中判断用户的滑动来切换界面:

[java] view plaincopy
  1. @Override
  2. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  3. float velocityY) {
  4. System.out.println("in------------>>>>>>>");
  5. if (e1.getX() - e2.getX() > 120) {
  6. if (i < 3) {
  7. i++;
  8. setImage(i);
  9. this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,
  10. R.anim.animation_right_in));
  11. this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
  12. R.anim.animation_left_out));
  13. this.flipper.showNext();
  14. }
  15. return true;
  16. }
  17. else if (e1.getX() - e2.getX() < -120) {
  18. if (i > 0) {
  19. i--;
  20. setImage(i);
  21. this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,
  22. R.anim.animation_left_in));
  23. this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
  24. R.anim.animation_right_out));
  25. this.flipper.showPrevious();
  26. }
  27. return true;
  28. }
  29. return false;
  30. }
  31. void setImage(int i)
  32. {
  33. for(int j=0;j<4;j++)
  34. {
  35. if(j!=i)
  36. iamges[j].setImageResource(R.drawable.xiao);
  37. else
  38. iamges[j].setImageResource(R.drawable.da);
  39. }
  40. }

界面切换的时候改变下面的四个小ImageView的图片。切换的动画在res/anim文件夹中,这里就不多说了。

整个工程的下载:Android使用ViewFlipper实现左右滑动效果面。。

Android使用ViewFlipper实现左右滑动效果面相关推荐

  1. Android之Android实现浮层的上下滑动(支持内部添加View)

    前言 我K,今天居然是情人节,对于资深的单身狗来说,简直是个噩耗,今天注定是各种秀恩爱,心塞中.... 话题到此结束,管他什么情人节,今天给大家带来的是一个浮层的上下滑动,浮层滑动时分三种状态:全部显 ...

  2. Android实现浮层的上下滑动(支持内部加入View)

    前言 我K.今天竟然是情人节.对于资深的单身狗来说,简直是个噩耗,今天注定是各种秀恩爱.心塞中.. .. 话题到此结束,管他什么情人节,今天给大家带来的是一个浮层的上下滑动,浮层滑动时分三种状态:所有 ...

  3. Android-解决ViewFlipper与ScrollView滑动响应事件拦截的问题【转】

    2019独角兽企业重金招聘Python工程师标准>>> 最近在做一个简单的展示界面时,遇到了一个比较棘手的问题.由于要展示多项内容,所以使用ViewFlipper作为水平滑动容器:而 ...

  4. android列表滑到底部,Android中判断listview是否滑动到顶部和底部的实现方法

    今天实现listview的下拉刷新和上拉加载的时候,遇到了一个问题,*就是说需要根据listview中滑动的位置来进行下拉刷新和上拉加载.* 具体点,只有当我的listview滑动到最顶部的时候,这时 ...

  5. Android透明到白色滑动渐变,Android中Toolbar随着ScrollView滑动透明度渐变效果实现...

    Android中Toolbar随着ScrollView滑动透明度渐变效果实现 一.思路:监听ScrollView的滑动事件 不断的修改Toolbar的透明度 二.注意 1.ScrollView 6.0 ...

  6. Android开发之无bug滑动删除源码(非第三方库)

    Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...

  7. android 自定义view滚动条,Android自定义View实现等级滑动条的实例

    Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点: 绘制点的时候把X值存到集合中. 然后绘制背景图片,以及图片上的数字. 点击事件down的时候 ...

  8. Android RecyclerView(九)滑动监听综述

    Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...

  9. android+qq底部界面,Android 高仿QQ 界面滑动效果

    Android高仿QQ界面滑动效果 点击或者滑动切换画面,用ViewPager实现, 首先是布局文件: android:layout_width="match_parent" an ...

最新文章

  1. bash: dotnet: 未找到命令..._Docker 常用命令(.NET Core示例)
  2. python pdf处理 图片_在Python中从PDF提取图像而无需重新采样?
  3. 怎么看python环境变量配置是否好了验证图片_简述验证Anaconda是否安装成功的两种方式和Anaconda环境变量配置过程...
  4. Python 入门之格式化输出
  5. 支付,造就金融科技生态契机——保险科技生态建设...
  6. 抽象类和接口有哪些共同点和区别
  7. Silverlight初级教程-概述
  8. iOS:NSDate的主要几种时间形式
  9. 树的最长路径详解(C++)
  10. js替换url指定参数的值
  11. 也可以说不漂亮的飞鸽传书
  12. 计算机cpu intel,intel CPU后面带F是什么意思?Intel处理器后面带“F”含义详解
  13. #!/bin/bash 和 #!/usr/bin/env bash 的区别
  14. PCB碎碎念——贴片封装与标识
  15. frps port unavailable
  16. RoboMaster无人机设计
  17. 职场宝典:让你平步青云的10个谈话技巧[转载]
  18. php接入七牛云api
  19. 未能加载文件或程序集“Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=
  20. C语言之随机数函数( rand() )的使用方法

热门文章

  1. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 )
  2. 【MATLAB】三维图形绘制 ( 三维平面图 | 二维网格 | meshgrid 函数 | 绘制网格 | mesh 函授 | 绘制平面 | surf 函数 | 绘制等高线 | contour 函数 )
  3. 【错误记录】Flutter 报错 ( Android Studio 中 main.dart 左侧不显示设备栏 )
  4. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 反射获取系统的 Element[] dexElements )
  5. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介 | Launcher 应用快捷方式图标点击方法分析 )
  6. 【Java 并发编程】CountDownLatch 使用场景示例
  7. Windows 8各个版本的功能详解与对比【中文详表】
  8. springmvc学习资料整理
  9. 在Linux命令行下运行Matlab
  10. 日期格式化的“疑难杂症”