android ImageSwitch

package com.example.imageswitch;


import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;


/**
 * android onTouchEvent 左右手势滑动事件处理 要实现手指在屏幕上左右滑动的事件需要实例化对象GestureDetector,new
 * GestureDetector(MainActivity.this,onGestureListener);
 * 首先实现监听对象GestureDetector.
 * OnGestureListener,根据x或y轴前后变化坐标来判断是左滑动还是右滑动并根据不同手势滑动做出事件处理doResult(int
 * action),
 * 然后覆写onTouchEvent方法,在onTouchEvent方法中将event对象传给gestureDetector.onTouchEvent
 * (event);处理。
 * 
 * @author Administrator
 * 
 */
public class MainActivity extends Activity implements ViewFactory {
private ImageSwitcher imageSwitcher;


final int RIGHT = 0;
final int LEFT = 1;
private GestureDetector gestureDetector;


// 存放图片的资源ID
private int[] images = { R.drawable.a1, R.drawable.a2, R.drawable.a3 };
private int index;// 记录当前图片的下标


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector = new GestureDetector(MainActivity.this,
onGestureListener);
imageSwitcher = (ImageSwitcher) findViewById(R.id.iamgeswitch1);


imageSwitcher.setFactory(this);// 设置切换View对象
imageSwitcher.setImageResource(images[0]);// 设置第一张图片
}


/**
* SimpleOnGestureListener类是GestureDetector提供给我们的一个更方便的响应不同手势的类,这个类实现了上述两个接口(但是所有的方法体都是空的)
* 该类是static class,也就是说它实际上是一个外部类。程序员可以在外部继承这个类,重写里面的手势处理方法。
*/
private GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
float x = e2.getX() - e1.getX();
float y = e2.getY() - e1.getY();


if (x > 0) {
doResult(RIGHT);
} else if (x < 0) {
doResult(LEFT);
}
return true;
}
};


public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}


public void doResult(int action) {


switch (action) {
case RIGHT:
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.left_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.right_out));
index--;
if (index < 0) {
index = 0;// 依旧显示最后一张图片
return;
}


imageSwitcher.setImageResource(images[index]);
break;


case LEFT:
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.right_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.left_out));
index++;
if (index >= images.length) {
index = images.length - 1;// 依旧显示最后一张图片
return;
}
imageSwitcher.setImageResource(images[index]);
break;


}
}


@Override
public View makeView() {
ImageView imageView = new ImageView(this);
return imageView;
}

}




其中:

left_in.xml





            android:duration="500"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />




left_out.xml





            android:duration="500"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />


right_in.xml





            android:duration="500"
        android:fromXDelta="100%p"
        android:toXDelta="0" />



right_out.xml

 
 
            android:fromXDelta="0"  
        android:toXDelta="100%p"  
       android:duration="500"/>  
 

你可能感兴趣的:(android)