运行效果图
修改布局文件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"
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=".MainActivity" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="滑动浏览图片" />
<TextView
android:id="@+id/TvId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<ImageView
android:id="@+id/Iv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
修改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被触摸时回调
}
}