ImageSwitcher is;
...
is.setInAnimation(this, android.R.anim.slide_in_left);
is.setOutAnimation(this, android.R.anim.slide_out_right);
上面實現了從左向右滑動的效果,可是反過來,從右向左滑動怎么實現呢?
默認情況下 android.R.anim.slide_in_right 和 android.R.anim.slide_out_left是私有的,也就是說通過.屬性是找不到的.
解決辦法:slide_in_right和slide_out_left這兩個xml都可以在sdk里找到的,修改后作為自己的資源調用就好了
platforms\android-10\data\res\anim\下找到下面兩個xml文件.
slide_in_right
slide_out_left
最后放到項目 res->anim下面
imgSwitcher.setOnTouchListener(
new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if ( event.getAction() == MotionEvent.ACTION_DOWN) {
downX = ( int) event.getX(); // 取得按下時的坐標
Log.i( " event.getX() ", " downX " + downX);
return true;
} else if ( event.getAction() == MotionEvent.ACTION_UP) {
upX = ( int) event.getX(); // 取得松開時的坐標
Log.i( " event.getX() ", " upX " + downX);
// 從左拖到右,即看前一張
if (upX - downX > 100) {
imgSwitcher.setInAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
android.R.anim.slide_in_left));
imgSwitcher.setOutAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
android.R.anim.slide_out_right));
curIndex--;
if (curIndex < 0) {
curIndex = 5;
}
imgSwitcher.setImageResource(IMAGE_LIST[curIndex]);
firstActivity. this.switchTitle(curIndex);
} else if (downX - upX > 100) { // 從右拖到左,即看后一張
imgSwitcher.setInAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
R.anim.slide_out_left));
imgSwitcher.setOutAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
R.anim.slide_in_right));
curIndex++;
if (curIndex > 5) {
curIndex = 0;
}
imgSwitcher.setImageResource(IMAGE_LIST[curIndex]);
firstActivity. this.switchTitle(curIndex);
}
return true;
}
return false;
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if ( event.getAction() == MotionEvent.ACTION_DOWN) {
downX = ( int) event.getX(); // 取得按下時的坐標
Log.i( " event.getX() ", " downX " + downX);
return true;
} else if ( event.getAction() == MotionEvent.ACTION_UP) {
upX = ( int) event.getX(); // 取得松開時的坐標
Log.i( " event.getX() ", " upX " + downX);
// 從左拖到右,即看前一張
if (upX - downX > 100) {
imgSwitcher.setInAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
android.R.anim.slide_in_left));
imgSwitcher.setOutAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
android.R.anim.slide_out_right));
curIndex--;
if (curIndex < 0) {
curIndex = 5;
}
imgSwitcher.setImageResource(IMAGE_LIST[curIndex]);
firstActivity. this.switchTitle(curIndex);
} else if (downX - upX > 100) { // 從右拖到左,即看后一張
imgSwitcher.setInAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
R.anim.slide_out_left));
imgSwitcher.setOutAnimation(AnimationUtils
.loadAnimation(firstActivity. this,
R.anim.slide_in_right));
curIndex++;
if (curIndex > 5) {
curIndex = 0;
}
imgSwitcher.setImageResource(IMAGE_LIST[curIndex]);
firstActivity. this.switchTitle(curIndex);
}
return true;
}
return false;
}
});