运行效果图
修改布局文件activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/Iv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/figure_bg" />
</LinearLayout>
修改MainActivity.java:
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
<strong>import android.view.GestureDetector.OnGestureListener;</strong>
import android.view.Menu;
import android.view.MotionEvent;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;
public class Show_3Activity extends Activity <strong>implements OnGestureListener</strong> {
private GestureDetector detector;//定义手势识别监听器
private ImageView Iv;//定义ImageView对象
private Animation amUp,amDown,amLeft,amRight;//定义向上,向下,向左,向右的动画
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_3);
setTitle("滑动测试");
detector=new GestureDetector(this);//初始化手势识别监听器
findById();
initAnimation();//初始化对象的动画效果
}
private void initAnimation() {
<strong>int screenWidth=getWindowManager().getDefaultDisplay().getWidth();//宽度
int screenHeight=getWindowManager().getDefaultDisplay().getHeight();//高度</strong>
//测试
Log.e("screenWidth", screenWidth+"");
Log.e("screenHeight", screenHeight+"");
//向上的动画设定
amUp=new TranslateAnimation(0,0,0,-screenHeight/2);
amUp.setDuration(500);//动画开始到结束的执行时间
amUp.setRepeatCount(1);//重复次数1
amUp.setRepeatMode(Animation.REVERSE);//设置回播
amDown=new TranslateAnimation(0, 0,0,screenHeight/2);//设置向下的动画设定
amDown.setDuration(500);//动画开始到结束的额执行时间
amDown.setRepeatCount(1);//设置重复次数
amDown.setRepeatMode(Animation.REVERSE);//设置回播
//设置向左的动画设定
amLeft=new TranslateAnimation(0,-screenWidth/2,0,0);
amLeft.setDuration(500);//动画开始到结束的执行时间
amLeft.setRepeatCount(1);//重复次数
amLeft.setRepeatMode(Animation.REVERSE);//设置回播reverse
//设置向右的动画设定
amRight=new TranslateAnimation(0,screenWidth/2,0,0);
amRight.setDuration(500);//动画开始到结束的执行时间
amRight.setRepeatCount(1);//重复次数
amRight.setRepeatMode(Animation.REVERSE);//设置回播reverse
}
//当页面被触摸时自动回调,把拿到的事件给手势识别器进行处理
public boolean <strong>onTouchEvent</strong>(MotionEvent event) {
return this.detector.onTouchEvent(event);
}
private void findById() {
Iv=(ImageView) findViewById(R.id.Iv);//获取控件Iv
}
//当页面被按下时自动回调
@Override
public boolean onDown(MotionEvent e) {
return false;
}
//当在页面中滑动时自动回调
@Override
public boolean <strong>onFling</strong>(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
//如果得到滑动位移>100
if(e1.getX()-e2.getX()>100){
//判断用户是否向左滑动
Iv.startAnimation(amLeft);
Toast.makeText(Show_3Activity.this, "向左滑动", Toast.LENGTH_SHORT).show();
return true;
}else if(e1.getX()-e2.getX()<-100){
//判断用户是否向右滑动
Iv.startAnimation(amRight);
Toast.makeText(Show_3Activity.this, "向右滑动", Toast.LENGTH_SHORT).show();
return true;
}else if(e1.getY()-e2.getY()>100){
//判断是否向上滑动
Iv.startAnimation(amUp);
Toast.makeText(Show_3Activity.this, "向上滑动", Toast.LENGTH_SHORT).show();
return true;
}else if(e1.getY()-e2.getY()<-100){
//判断是否向下
Iv.startAnimation(amDown);
Toast.makeText(Show_3Activity.this, "向下滑动", Toast.LENGTH_SHORT).show();
return true;
}
return true;
}
//当界面长按时自动调用
@Override
public void onLongPress(MotionEvent arg0) {
}
//界面滚动的时候自动调用
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
//当轻击界面的时候自动调用
@Override
public void onShowPress(MotionEvent arg0) {
Toast.makeText(Show_3Activity.this, "轻击界面显示", Toast.LENGTH_SHORT).show();
}
//当界面被按压的时候被调用
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}