http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html
我正在使用这个源代码来回翻转图像,它工作正常,但我想翻转多个图像(即一个接一个)。我通过制作水平滚动视图修改了first_view,因此我可以添加更多图像视图。问题是,在我翻转第一张图像后,我无法滑动到另一张图像,每当我尝试滑动到下一张图像时,第一张图像就会不停地来回翻转。
我知道这个问题非常小,但我无法弄清楚。
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class FlipcardView extends ImageView implements Animation.AnimationListener {
private Drawable mBackcardImage;
private Drawable mCardImage;
private boolean mCardFlag;
private Context mContext;
private Animation mToMiddle;
private Animation mFromMiddle;
private FlipAnimationListener mListener;
public static interface FlipAnimationListener {
public void onFlipAnimationEnded(boolean isBackcard);
public void onFlipAnimationStarted();
}
public void registerFlipAnimationListener(FlipAnimationListener listener) {
mListener = listener;
}
public void unregisterFlipAnimationListener() {
mListener = null;
}
public FlipcardView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
mContext = context;
mToMiddle = AnimationUtils.loadAnimation(context, R.anim.to_middle);
mFromMiddle = AnimationUtils.loadAnimation(context, R.anim.from_middle);
mToMiddle.setAnimationListener(this);
mFromMiddle.setAnimationListener(this);
}
public void StartflipAnimation() {
this.clearAnimation();
this.setAnimation(mToMiddle);
this.startAnimation(mToMiddle);
}
public void setBackcardImage(Drawable image) {
mBackcardImage = image;
}
public void setCardImage(Drawable image) {
mCardImage = image;
}
public void setCardImage(Bitmap image) {
mCardImage = new BitmapDrawable(mContext.getResources(),image);
}
public Drawable getBackCardImage() {
return mBackcardImage;
}
public Drawable getCardImage() {
return mCardImage;
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
if(animation == mToMiddle) {
this.setEnabled(false);
if(!mCardFlag) {
//Card is Backcard Image
setImageDrawable(mCardImage);
}
else {
//Card is Normal Image card
setImageDrawable(mBackcardImage);
}
this.clearAnimation();
this.setAnimation(mFromMiddle);
this.startAnimation(mFromMiddle);
}
else {
mCardFlag = !mCardFlag;
this.setEnabled(true);
if(mListener != null) {
mListener.onFlipAnimationEnded(mCardFlag);
}
}
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
if(mListener != null) {
mListener.onFlipAnimationStarted();
}
}
}
不要忘记从评论中包含的链接中获取动画 这堂课使用卡片,但你可以用它来做任何你需要的东西。 因为它扩展ImageView每个Flip它自己而且与任何一个相机无关如果你需要这个类的帮助,只需问我自己的代码。
希望它有助于