图片切换关键字为ImageSwitcher,定义好一个对象后切换到java文件
定义几个新对象,一个数组类型存放图片资源文件,一个ImageSwitcher读取布局管理器,一个int类型存放数组索引,两个float类型存放按下和抬起手指时的x坐标
private int[] arrryimage=new int[]{R.drawable.h1,R.drawable.h2,R.drawable.h3};
private ImageSwitcher imageSwitcher;
private int sel;
private Float upx,downx;
在OnCreat方法中,读取xml文件的ImageSwitcher,为其建立一个视图工厂,用匿名内部类进行定义
imageSwitcher=(ImageSwitcher)findViewById(R.id.qiehuan);
ImageSwitcher.setFactory=new ViewSwitcher.ViewFactory
自动重写方法,图片工厂顾名思义就是存放了许多图片,先新建一个ImageView对象,然后对其利用数组索引的方法定义其TmageResour属性,最后返回该ImageView
@Override
public View makeView() {
ImageView imageView=new Imageiew(MainActivity.this);
imageView.setImageResource=arrryImage(sel)
ruturn imageView
}
});
然后为ImageSwitcher建立一个触摸事件监听器
ImageSwitcher.setOnTouchListener(new View.OnTouchListener)
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event,getAction)==MotionEvent.ACTION_DOWN){
downx=event.getX.;
return true;}
else if(event.getAction)==MotionEvent.ACTION_UP){
upx=event.getx;
左划
if(downx-upx>100){ //按下位置在松手位置的右边,即向左划
sel=sel==arrryimage.length-1?0:sel+1
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(Mainactivity.this;android.R.anim.fade_in)
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this;adroid.R.anim.fade_out)
imageSwitcher.setImageResource(arrryimage[sel]);
}
右划
else if(upx-downx>100){
sel=sel==0?arrryimage.length-1:sel-1;
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(Mainactivity.this;android.R.anim.fade_in);
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(Mainactivity.this;android.R.anim.fade_out);
imageSwitcher.setImageResource(arrryimage(sel);}
return true;}
}
return false; //Ontouch方法返回布尔类型false
}
});
}
}
效果
左右划切换