main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Main" >

<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ViewFlipper>

</RelativeLayout>

left_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="600"
/>
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="600"
/>

</set>

left_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="600"
/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:duration="600"
/>

</set>

right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="600"
/>
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="600"
/>

</set>

right_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="600"
/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:duration="600"
/>

</set>

Main.java

package com.example.myflipper;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;

public class Main extends Activity {

private static final String TAG = "MainActivity";

private ViewFlipper viewFlipper;
private GestureDetector detector; //手势检测

Animation leftInAnimation;
Animation leftOutAnimation;
Animation rightInAnimation;
Animation rightOutAnimation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);

viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper1);
detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {

@Override
public boolean onSingleTapUp(MotionEvent e) {

// TODO Auto-generated method stub
return false;
}

@Override
public void onShowPress(MotionEvent e) {

// TODO Auto-generated method stub

}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {

// TODO Auto-generated method stub
return false;
}

@Override
public void onLongPress(MotionEvent e) {

// TODO Auto-generated method stub

}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {

Log.i(TAG, "e1="+e1.getX()+" e2="+e2.getX()+" e1-e2="+(e1.getX()-e2.getX()));

if(e1.getX()-e2.getX()>120){
viewFlipper.setInAnimation(leftInAnimation);
viewFlipper.setOutAnimation(leftOutAnimation);
viewFlipper.showNext();//向右滑动
return true;
}else if(e1.getX()-e2.getY()<-120){
viewFlipper.setInAnimation(rightInAnimation);
viewFlipper.setOutAnimation(rightOutAnimation);
viewFlipper.showPrevious();//向左滑动
return true;
}
return false;
}

@Override
public boolean onDown(MotionEvent e) {

// TODO Auto-generated method stub
return false;
}
});

//往viewFlipper添加View
viewFlipper.addView(getImageView(R.drawable.a1));
viewFlipper.addView(getImageView(R.drawable.a2));
viewFlipper.addView(getImageView(R.drawable.a3));
viewFlipper.addView(getImageView(R.drawable.a4));
viewFlipper.addView(getImageView(R.drawable.a5));
viewFlipper.addView(getImageView(R.drawable.a6));

//动画效果
leftInAnimation = AnimationUtils.loadAnimation(this, R.layout.left_in);
leftOutAnimation = AnimationUtils.loadAnimation(this, R.layout.left_out);
rightInAnimation = AnimationUtils.loadAnimation(this, R.layout.right_in);
rightOutAnimation = AnimationUtils.loadAnimation(this, R.layout.right_out);
}

private ImageView getImageView(int id){
ImageView imageView = new ImageView(this);
imageView.setImageResource(id);
return imageView;
}

@Override
public boolean onTouchEvent(MotionEvent event) {

return this.detector.onTouchEvent(event); //touch事件交给手势处理。
}

}

ViewFlipper的更多相关文章

  1. Android中使用ViewFlipper实现屏幕页面切换(关于坐标轴的问题已补充更改)

    屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.如 ...

  2. ViewFlipper(翻转视图)的使用

    android developers java.lang.Object --android.view.View ----android.view.ViewGroup ------android.wid ...

  3. android之ViewFlipper

    xml文件 activity-main.xml <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/andro ...

  4. 页面轮换,ViewFlipper 和 ViewPager 的区别

    ViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据. ViewPager继承V ...

  5. Android成长日记-使用ViewFlipper实现屏幕切换动画效果

    (一) ViewFlipper介绍 Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换 (二) 为ViewFlipper加入View 1. 静态导入:在Layout布局文件中直接导 ...

  6. Android 滑动效果入门篇(一)—— ViewFlipper

    ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放.又ViewAnimator继承至于Frame ...

  7. ViewFlipper、ViewPager和Gallery

    1.ViewFlipper 1)View切换的控件—ViewFlipper介绍 ViewFilpper类继承于ViewAnimator类.而ViewAnimator类继承于FrameLayout. 查 ...

  8. Android ViewFlipper控件实例

    使用ViewFlipper实现两张图片切换效果,废话不多说,直接上代码. java源码: package com.example.viewflipper; import android.os.Bund ...

  9. Android ViewFlipper的使用分析

    [ViewFlipper]——基础 1.ViewPager 和ViewFliping的区别: 最显著的区别就是ViewPager在滑动的时候内部的View默认就能够跟随手指滑动,而 ViewFlipi ...

  10. 使用ViewSwitcher和ViewFlipper在不同布局中切换

    xml布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:androi ...

随机推荐

  1. Object和Function谁先被创建

    http://bbs.csdn.net/topics/390772104#post-397284029

  2. 打打基础,回头看看avr单片机的定时器、中断和PWM(转)

    以前小看了定时器,发现这东西还真的很讲究,那先复习复习吧. 先提提中断:我的理解就是cpu执行时,遇到中断——根据对应的中断源(硬件或软件)——pc定位中断入口地址,然后根据这里的函数指针——跳转到相 ...

  3. 问道游戏-寻路CALL心得

    寻路CALL查找几种方法 第一种 bp send 在小地图上点击重点.看看是否断下 断下这是最简单的 第二种 查找用户当前坐标内存地址下写入断点 通过堆栈追溯 运气好也可以找到 第三种 查找终点坐标地 ...

  4. [素数个数模板] HDU 5901 Count primes

    #include<cstdio> #include<cmath> using namespace std; #define LL long long ; bool np[N]; ...

  5. WEB安全番外第四篇--关于SQL盲注

    一.SQL盲注: 看不到回显的,无法从返回直接读取到数据库内容的对数据的猜解,属于盲注. 二.第一种--基于布尔类型的盲注: 这种很简单,最典型的例子,就是挖SQL注入的时候常用的: ''' http ...

  6. Arduino开发版学习计划--小车的行走

    小车的前进后退,左右转弯 代码如下 void motor(char pin,char pwmpin,char state,int val) { pinMode(pin, OUTPUT); ) { an ...

  7. 文艺青年、普通青年、2b青年到底是什么意思?

    文艺青年.普通青年.2b青年到底是什么意思? 文艺青年就是脑子里跟别人想的不一样,思维跟人家相反或者另类的人. 普通青年呢就是像你一样,普普通通的. 2B青年就是黑铅笔青年,做事比较搞怪,古怪到让你哭 ...

  8. SLAM论文阅读笔记

    [1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo ...

  9. 演示一个简单的Redis队列

    0.Windows Service版下载 https://github.com/rgl/redis/downloads 1.新建一个Console项目 打开Nuget控制台,执行以下命令 Instal ...

  10. closure--- 闭包与并行运算

      闭包有效的减少了函数所需定义的参数数目.这对于并行运算来说有重要的意义.在并行运算的环境下,我们可以让每台电脑负责一个函数,然后将一台电脑的输出和下一台电脑的输入串联起来.最终,我们像流水线一样工 ...