左右滑动切换图片

运行效果图


左右滑动切换图片_第1张图片

修改布局文件activity_main.xml:




    
    

    



修改MainActivity.java:



import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private ImageView Iv;
	private TextView TvId;
	private GestureDetector gestureDetector;//定义手势检测器对象
	//定义图片资源
	private int[] ResId=new int[]{
			R.drawable.bg_1,R.drawable.bg_2,R.drawable.bg_3,R.drawable.bg_4};
	private int count=0;//设置当前图片资源id
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Iv=(ImageView) findViewById(R.id.Iv);//获取对象id
		TvId=(TextView) findViewById(R.id.TvId);
		
		setListener();//设置视图监听器事件
		//切换ImageView的图片
		changeImg();
		setImgId();
	}

	private void setListener() {
		//设置手势监听器的处理效果
		gestureDetector=new GestureDetector(MainActivity.this, onGestureListener);
	}
	//手势识别监听器
	private GestureDetector.OnGestureListener onGestureListener
			=new GestureDetector.SimpleOnGestureListener(){
		//当识别的手势是滑动手势时回调onFling方法
		public boolean onFling(MotionEvent e1,MotionEvent e2,float velocityX,float velocityY){
			//得到滑动手势的其实和结束位置的X,Y坐标,并进行计算
			float x=e2.getX()-e1.getX();//位移量
			float y=e2.getY()-e1.getY();
			
			//通过计算结果判断用户是向左滑动还是向右滑动
			if(x>0){//向右滑动
					count--;
					count=(count+4)%4;
			}else if(x<0){//向左滑动
				count++;
				count %=4;
			}
			changeImg();
			setImgId();
			return true;
		}
	};
	//切换图片Id
	public void changeImg(){
		//设置当前位置的图片资源
		Iv.setImageResource(ResId[count]);
	}
	//显示照片页数
	public void setImgId(){
			TvId.setText((count+1)+"/"+ResId.length);//显示图片个数
	}
	public boolean onTouchEvent(MotionEvent event){
		return gestureDetector.onTouchEvent(event);//当前Activity被触摸时回调
	}
}



你可能感兴趣的:(Android)