使用android的抽认卡

时间:2014-07-20 18:28:26

标签: android

http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html

我正在使用这个源代码来回翻转图像,它工作正常,但我想翻转多个图像(即一个接一个)。我通过制作水平滚动视图修改了first_view,因此我可以添加更多图像视图。问题是,在我翻转第一张图像后,我无法滑动到另一张图像,每当我尝试滑动到下一张图像时,第一张图像就会不停地来回翻转。

我知道这个问题非常小,但我无法弄清楚。

对此有任何帮助将不胜感激。

1 个答案:

答案 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它自己而且与任何一个相机无关如果你需要这个类的帮助,只需问我自己的代码。

希望它有助于